[Checkins] SVN: gzo/trunk/products/ patched version of PHC added. I think this version was patched by Kevin Teague. Migration to a newer version of PHC fails because of missing body text in some PHC content objects.

Timo Stollenwerk timo at zmag.de
Tue Sep 15 10:34:04 EDT 2009


Log message for revision 104094:
  patched version of PHC added. I think this version was patched by Kevin Teague. Migration to a newer version of PHC fails because of missing body text in some PHC content objects.

Changed:
  A   gzo/trunk/products/
  A   gzo/trunk/products/PloneHelpCenter/
  A   gzo/trunk/products/PloneHelpCenter/Extensions/
  A   gzo/trunk/products/PloneHelpCenter/Extensions/HCFolderWorkflow.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/HCSubItemWorkflow.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/HCWorkflow.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/Install.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/Migrations.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/WikiPage2PHCHowToMigration.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/__init__.py
  A   gzo/trunk/products/PloneHelpCenter/Extensions/migrations-old.py
  A   gzo/trunk/products/PloneHelpCenter/HISTORY.txt
  A   gzo/trunk/products/PloneHelpCenter/LICENSE.GPL
  A   gzo/trunk/products/PloneHelpCenter/LICENSE.txt
  A   gzo/trunk/products/PloneHelpCenter/LINGUAPLONE.txt
  A   gzo/trunk/products/PloneHelpCenter/Patch.py
  A   gzo/trunk/products/PloneHelpCenter/README.txt
  A   gzo/trunk/products/PloneHelpCenter/TODO.txt
  A   gzo/trunk/products/PloneHelpCenter/__init__.py
  A   gzo/trunk/products/PloneHelpCenter/browser/
  A   gzo/trunk/products/PloneHelpCenter/browser/__init__.py
  A   gzo/trunk/products/PloneHelpCenter/browser/configure.zcml
  A   gzo/trunk/products/PloneHelpCenter/browser/helpcenter.py
  A   gzo/trunk/products/PloneHelpCenter/browser/phcfolder.py
  A   gzo/trunk/products/PloneHelpCenter/compile-locales.sh
  A   gzo/trunk/products/PloneHelpCenter/config.py
  A   gzo/trunk/products/PloneHelpCenter/configure.zcml
  A   gzo/trunk/products/PloneHelpCenter/content/
  A   gzo/trunk/products/PloneHelpCenter/content/Definition.py
  A   gzo/trunk/products/PloneHelpCenter/content/ErrorReference.py
  A   gzo/trunk/products/PloneHelpCenter/content/ErrorReferenceFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/FAQ.py
  A   gzo/trunk/products/PloneHelpCenter/content/FAQFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/Glossary.py
  A   gzo/trunk/products/PloneHelpCenter/content/HelpCenter.py
  A   gzo/trunk/products/PloneHelpCenter/content/HowTo.py
  A   gzo/trunk/products/PloneHelpCenter/content/HowToFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/InstructionalVideo.py
  A   gzo/trunk/products/PloneHelpCenter/content/InstructionalVideoFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/Link.py
  A   gzo/trunk/products/PloneHelpCenter/content/LinkFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/PHCContent.py
  A   gzo/trunk/products/PloneHelpCenter/content/PHCFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/ReferenceManual.py
  A   gzo/trunk/products/PloneHelpCenter/content/ReferenceManualFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/ReferenceManualPage.py
  A   gzo/trunk/products/PloneHelpCenter/content/ReferenceManualSection.py
  A   gzo/trunk/products/PloneHelpCenter/content/Tutorial.py
  A   gzo/trunk/products/PloneHelpCenter/content/TutorialFolder.py
  A   gzo/trunk/products/PloneHelpCenter/content/TutorialPage.py
  A   gzo/trunk/products/PloneHelpCenter/content/__init__.py
  A   gzo/trunk/products/PloneHelpCenter/content/schemata.py
  A   gzo/trunk/products/PloneHelpCenter/doc/
  A   gzo/trunk/products/PloneHelpCenter/doc/PHCManual.stx
  A   gzo/trunk/products/PloneHelpCenter/doc/Tips.txt
  A   gzo/trunk/products/PloneHelpCenter/doc/Workflow.txt
  A   gzo/trunk/products/PloneHelpCenter/i18n/
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-cs.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-de.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-es.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-fr.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-it.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-manual.pot
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone-pt-br.po
  A   gzo/trunk/products/PloneHelpCenter/i18n/plone.pot
  A   gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter-manual.pot
  A   gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter.pot
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/chart.py
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/filter.py
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/rebuild-pot.py
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.bat.example
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.sh.example
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/sync.py
  A   gzo/trunk/products/PloneHelpCenter/i18n/utils/utils.py
  A   gzo/trunk/products/PloneHelpCenter/interfaces.py
  A   gzo/trunk/products/PloneHelpCenter/locales/
  A   gzo/trunk/products/PloneHelpCenter/locales/cs/
  A   gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/de/
  A   gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/es/
  A   gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/fr/
  A   gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/it/
  A   gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/nl/
  A   gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/no/
  A   gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/pt-br/
  A   gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/locales/zh-cn/
  A   gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/
  A   gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.mo
  A   gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.po
  A   gzo/trunk/products/PloneHelpCenter/profiles/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/catalog.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/cssregistry.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/factorytool.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/propertiestool.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/skins.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenter.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterDefinition.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReference.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReferenceFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQ.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterGlossary.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowTo.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowToFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideo.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideoFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLink.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLinkFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManual.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualPage.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualSection.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorial.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialFolder.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialPage.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/types.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenter_workflow/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenter_workflow/definition.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenterfolder_workflow/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenterfolder_workflow/definition.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcentersubitem_workflow/
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcentersubitem_workflow/definition.xml
  A   gzo/trunk/products/PloneHelpCenter/profiles/default/workflows.xml
  A   gzo/trunk/products/PloneHelpCenter/refresh.txt
  A   gzo/trunk/products/PloneHelpCenter/skins/
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/HowToTemplate.dtml
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/checkVersionOutdated.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/definition_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify_template.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply_notify_template.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/edit_reminder.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreference_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreferencefolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faq_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqsection_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/fetchStaleItems.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/glossary_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter.css.dtml
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help_it.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_ploneorg.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_print.css.dtml
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_references.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplink_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplinkfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howto_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howtofolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideo_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideofolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch_form.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_attachments.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_genericfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_search.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_topic_area.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phcfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_helpcenter.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_books.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_finddoc.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_findhelp.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_misc.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_search.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_training.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_stale_items.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/queryForStaleItems.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual-all-pages.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_getSections.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_macros.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualpage_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualsection_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial-all-pages.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialfolder_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialpage_view.pt
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/updateStaleItems.py
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_component_zope3.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_content_management.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_definitive_guide.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_dive_into.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_live.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_pro_plone.png
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_python_absolute_beginner.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/books.jpg
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_blue.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_plone.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/phc_star.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/speakplone_sm.png
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif
  A   gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif.metadata
  A   gzo/trunk/products/PloneHelpCenter/tests/
  A   gzo/trunk/products/PloneHelpCenter/tests/CustomSetup.py
  A   gzo/trunk/products/PloneHelpCenter/tests/Data.py
  A   gzo/trunk/products/PloneHelpCenter/tests/FeedForHelpCenter.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/HelpCenterFAQUI.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/HelpCenterHowToUI.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/HelpCenterSearch.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTopics.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTutorialUI.txt
  A   gzo/trunk/products/PloneHelpCenter/tests/PHCTestCase.py
  A   gzo/trunk/products/PloneHelpCenter/tests/__init__.py
  A   gzo/trunk/products/PloneHelpCenter/tests/framework.py
  A   gzo/trunk/products/PloneHelpCenter/tests/happy.swf
  A   gzo/trunk/products/PloneHelpCenter/tests/runalltests.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testComments.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testDescriptionFormats.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testDocTests.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testErrorReference.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testFaq.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testGlossary.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testHowto.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testLink.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testMultilingual.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testSetup.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testSkeleton.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testTutorial.py
  A   gzo/trunk/products/PloneHelpCenter/tests/testWorkflow.py
  A   gzo/trunk/products/PloneHelpCenter/tests/test_i18n.py
  A   gzo/trunk/products/PloneHelpCenter/utils.py
  A   gzo/trunk/products/PloneHelpCenter/version.txt

-=-
Added: gzo/trunk/products/PloneHelpCenter/Extensions/HCFolderWorkflow.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/HCFolderWorkflow.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/HCFolderWorkflow.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,190 @@
+#
+# Generated by dumpDCWorkflow.py written by Sebastien Bigaret
+# Original workflow id/title: folder_workflow/Folder Workflow [Plone]
+# Date: 2004/08/11 08:48:26.016 GMT-4
+#
+# WARNING: this dumps does NOT contain any scripts you might have added to
+# the workflow, IT IS YOUR RESPONSABILITY TO MAKE BACKUPS FOR THESE SCRIPTS.
+#
+# No script detected in this workflow
+# 
+"""
+Programmatically creates a workflow type
+"""
+__version__ = "$Revision: 1.2 $"[11:-2]
+
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+from Products.PloneHelpCenter.config import *
+
+def setupFolder_workflow(wf):
+    "..."
+    wf.setProperties(title='Folder Workflow [Plone]')
+
+    for s in ['visible', 'private', 'published']:
+        wf.states.addState(s)
+    for t in ['retract', 'hide', 'publish', 'show']:
+        wf.transitions.addTransition(t)
+    for v in ['action', 'review_history', 'actor', 'comments', 'time']:
+        wf.variables.addVariable(v)
+    for l in ['reviewer_queue']:
+        wf.worklists.addWorklist(l)
+    for p in ('Add portal content','Access contents information', 
+                'Modify portal content', 'View', 'List folder contents',
+                ADD_DOCUMENTATION_PERMISSION):
+        wf.addManagedPermission(p)
+        
+
+    ## Initial State
+    wf.states.setInitialState('published')
+
+    ## States initialization
+    sdef = wf.states['visible']
+    sdef.setProperties(title="""Visible""",
+                       transitions=('hide', 'publish'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager', 'Reviewer'])
+    sdef.setPermission('List folder contents', 0, ['Manager', 'Owner', 'Member'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner',])
+    sdef.setPermission(ADD_DOCUMENTATION_PERMISSION, 0, ['Manager', 'Owner',])
+    
+
+    sdef = wf.states['private']
+    sdef.setProperties(title="""Private""",
+                       transitions=('publish', 'show'))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner'])
+    sdef.setPermission('List folder contents', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner',])
+    sdef.setPermission(ADD_DOCUMENTATION_PERMISSION, 0, ['Manager', 'Owner',])
+
+    sdef = wf.states['published']
+    sdef.setProperties(title="""Open for submissions""",
+                       transitions=('hide', 'retract'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('List folder contents', 1, ['Anonymous'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner','Member'])
+    sdef.setPermission(ADD_DOCUMENTATION_PERMISSION, 0, ['Manager', 'Owner','Member'])
+
+    ## Transitions initialization
+    tdef = wf.transitions['retract']
+    tdef.setProperties(title="""Close for submissions""",
+                       new_state_id="""visible""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Close for submissions""",
+                       actbox_url="""%(content_url)s/content_retract_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['hide']
+    tdef.setProperties(title="""Hide""",
+                       new_state_id="""private""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Hide""",
+                       actbox_url="""%(content_url)s/content_hide_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_roles': 'Owner'},
+                       )
+
+    tdef = wf.transitions['publish']
+    tdef.setProperties(title="""Open for submissions""",
+                       new_state_id="""published""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Open for submissions""",
+                       actbox_url="""%(content_url)s/content_publish_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Modify portal content', 'guard_roles': 'Owner; Manager'},
+                       )
+
+    tdef = wf.transitions['show']
+    tdef.setProperties(title="""Member makes content visible""",
+                       new_state_id="""visible""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Make visible""",
+                       actbox_url="""%(content_url)s/content_show_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_roles': 'Owner'},
+                       )
+
+    ## State Variable
+    wf.variables.setStateVar('review_state')
+
+    ## Variables initialization
+    vdef = wf.variables['action']
+    vdef.setProperties(description="""The last transition""",
+                       default_value="""""",
+                       default_expr="""transition/getId|nothing""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description="""Provides access to workflow history""",
+                       default_value="""""",
+                       default_expr="""state_change/getHistory""",
+                       for_catalog=0,
+                       for_status=0,
+                       update_always=0,
+                       props={'guard_permissions': 'Request review; Review portal content'})
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description="""The ID of the user who performed the last transition""",
+                       default_value="""""",
+                       default_expr="""user/getId""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description="""Comments about the last transition""",
+                       default_value="""""",
+                       default_expr="""python:state_change.kwargs.get('comment', '')""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description="""Time of the last transition""",
+                       default_value="""""",
+                       default_expr="""state_change/getDateTime""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    ## Worklists Initialization
+    ldef = wf.worklists['reviewer_queue']
+    ldef.setProperties(description="""Reviewer tasks""",
+                       actbox_name="""Pending (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=pending""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'pending'})
+
+
+def createFolder_workflow(id):
+    "..."
+    ob = DCWorkflowDefinition(id)
+    setupFolder_workflow(ob)
+    return ob
+
+def install():
+    addWorkflowFactory(createFolder_workflow,
+        id='helpcenterfolder_workflow',
+                   title='Workflow for Help Center Folders.')
+

Added: gzo/trunk/products/PloneHelpCenter/Extensions/HCSubItemWorkflow.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/HCSubItemWorkflow.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/HCSubItemWorkflow.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,150 @@
+# 
+#
+# Generated by dumpDCWorkflow.py written by Sebastien Bigaret
+# Original workflow id/title: helpcenter_workflow/Default Workflow [Plone]
+# Date: 2004/06/06 04:31:31.859 GMT-4
+#
+# WARNING: this dumps does NOT contain any scripts you might have added to
+# the workflow, IT IS YOUR RESPONSABILITY TO MAKE BACKUPS FOR THESE SCRIPTS.
+#
+# No script detected in this workflow
+# 
+"""
+Programmatically creates a workflow type
+"""
+__version__ = "$Revision: 1.1 $"[11:-2]
+
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+from Products.PloneHelpCenter.config import *
+
+def setupHelpcentersubitem_workflow(wf):
+    "..."
+    wf.setProperties(title='Sub-item workflow [PloneHelpCenter]')
+
+    for s in ['hidden', 'published']:
+        wf.states.addState(s)
+    for t in ['hide', 'publish']:
+        wf.transitions.addTransition(t)
+    for v in ['action', 'review_history', 'actor', 'comments', 'time']:
+        wf.variables.addVariable(v)
+    for l in ['reviewer_queue']:
+        wf.worklists.addWorklist(l)
+    for p in ('Access contents information', 'Modify portal content', 'View', 'Change portal events',):
+        wf.addManagedPermission(p)
+        
+
+    ## Initial State
+    wf.states.setInitialState('hidden')
+
+    ## States initialization
+    sdef = wf.states['hidden']
+    sdef.setProperties(title="""Draft""",
+                       transitions=('publish',))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner', 'Reviewer'])
+
+    sdef = wf.states['published']
+    sdef.setProperties(title="""Public""",
+                       transitions=('hide',))
+    sdef.setPermission('Access contents information', 1, ['Manager'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Manager'])
+    sdef.setPermission('Change portal events', 0, ['Manager'])
+
+
+    ## Transitions initialization
+    tdef = wf.transitions['hide']
+    tdef.setProperties(title="""Owner hides item from the public""",
+                       new_state_id="""hidden""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Hide""",
+                       actbox_url="""%(content_url)s/content_hide_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_expr': 'python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)' },
+                       )
+
+    tdef = wf.transitions['publish']
+    tdef.setProperties(title="""Reviewer publishes content""",
+                       new_state_id="""published""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Publish""",
+                       actbox_url="""%(content_url)s/content_publish_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_expr': 'python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)' },
+                       )
+
+    ## State Variable
+    wf.variables.setStateVar('review_state')
+
+    ## Variables initialization
+    vdef = wf.variables['action']
+    vdef.setProperties(description="""The last transition""",
+                       default_value="""""",
+                       default_expr="""transition/getId|nothing""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description="""Provides access to workflow history""",
+                       default_value="""""",
+                       default_expr="""state_change/getHistory""",
+                       for_catalog=0,
+                       for_status=0,
+                       update_always=0,
+                       props={'guard_permissions': 'Request review; Review portal content'})
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description="""The ID of the user who performed the last transition""",
+                       default_value="""""",
+                       default_expr="""user/getId""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description="""Comments about the last transition""",
+                       default_value="""""",
+                       default_expr="""python:state_change.kwargs.get('comment', '')""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description="""Time of the last transition""",
+                       default_value="""""",
+                       default_expr="""state_change/getDateTime""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    ## Worklists Initialization
+    ldef = wf.worklists['reviewer_queue']
+    ldef.setProperties(description="""Reviewer tasks""",
+                       actbox_name="""Pending (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=pending""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'pending'})
+
+
+def createHelpcentersubitem_workflow(id):
+    "..."
+    ob = DCWorkflowDefinition(id)
+    setupHelpcentersubitem_workflow(ob)
+    return ob
+
+def install():
+    addWorkflowFactory(createHelpcentersubitem_workflow,
+                       id='helpcentersubitem_workflow',
+                       title='Workflow for Help Center Sub-items.')

Added: gzo/trunk/products/PloneHelpCenter/Extensions/HCWorkflow.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/HCWorkflow.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/HCWorkflow.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,223 @@
+# 
+#
+# Generated by dumpDCWorkflow.py written by Sebastien Bigaret
+# Original workflow id/title: helpcenter_workflow/Default Workflow [Plone]
+# Date: 2004/06/06 04:31:31.859 GMT-4
+#
+# WARNING: this dumps does NOT contain any scripts you might have added to
+# the workflow, IT IS YOUR RESPONSABILITY TO MAKE BACKUPS FOR THESE SCRIPTS.
+#
+# No script detected in this workflow
+# 
+"""
+Programmatically creates a workflow type
+"""
+__version__ = "$Revision: 1.8 $"[11:-2]
+
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+from Products.PloneHelpCenter.config import *
+
+def setupHelpcenter_workflow(wf):
+    "..."
+    wf.setProperties(title='Default Workflow [PloneHelpCenter]')
+
+    for s in ['in-progress', 'obsolete', 'pending', 'published']:
+        wf.states.addState(s)
+    for t in ['retract', 'mark_obsolete', 'submit', 'publish', 'reject', 're-activate']:
+        wf.transitions.addTransition(t)
+    for v in ['action', 'review_history', 'actor', 'comments', 'time']:
+        wf.variables.addVariable(v)
+    for l in ['reviewer_queue']:
+        wf.worklists.addWorklist(l)
+    for p in ('Access contents information', 'Modify portal content', 'View', 
+                'Change portal events', 'List folder contents', 'Add portal content',):
+        wf.addManagedPermission(p)
+        
+
+    ## Initial State
+    wf.states.setInitialState('in-progress')
+
+    ## States initialization
+    sdef = wf.states['in-progress']
+    sdef.setProperties(title="""In progress""",
+                       transitions=('mark_obsolete', 'publish', 'submit'))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner'])
+    sdef.setPermission('List folder contents', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner'])
+
+    sdef = wf.states['obsolete']
+    sdef.setProperties(title="""Obsolete""",
+                       transitions=('re-activate',))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('List folder contents', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner', 'Reviewer'])
+
+    sdef = wf.states['pending']
+    sdef.setProperties(title="""Waiting for reviewer""",
+                       transitions=('mark_obsolete', 'publish', 'reject', 'retract'))
+    sdef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('List folder contents', 0, ['Manager', 'Owner', 'Reviewer'])
+    sdef.setPermission('Change portal events', 0, ['Manager', 'Reviewer'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner', 'Reviewer'])
+
+    sdef = wf.states['published']
+    sdef.setProperties(title="""Published""",
+                       transitions=('mark_obsolete', 'reject', 'retract'))
+    sdef.setPermission('Access contents information', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('Modify portal content', 0, ['Manager', 'Owner'])
+    sdef.setPermission('View', 1, ['Anonymous', 'Manager'])
+    sdef.setPermission('List folder contents', 0, ['Anonymous', 'Manager'])
+    sdef.setPermission('Change portal events', 0, ['Manager'])
+    sdef.setPermission('Add portal content', 0, ['Manager', 'Owner'])
+
+
+    ## Transitions initialization
+    tdef = wf.transitions['retract']
+    tdef.setProperties(title="""Member retracts submission""",
+                       new_state_id="""in-progress""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Retract""",
+                       actbox_url="""%(content_url)s/content_retract_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['mark_obsolete']
+    tdef.setProperties(title="""Mark Obsolete""",
+                       new_state_id="""obsolete""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Mark obsolete""",
+                       actbox_url="""%(content_url)s/content_hide_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_expr': 'python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)' },
+                       )
+
+    tdef = wf.transitions['submit']
+    tdef.setProperties(title="""Member requests publishing""",
+                       new_state_id="""pending""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Submit""",
+                       actbox_url="""%(content_url)s/content_submit_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Request review'},
+                       )
+
+    tdef = wf.transitions['publish']
+    tdef.setProperties(title="""Reviewer publishes content""",
+                       new_state_id="""published""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Publish""",
+                       actbox_url="""%(content_url)s/content_publish_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Review portal content'},
+                       )
+
+    tdef = wf.transitions['reject']
+    tdef.setProperties(title="""Reviewer rejects submission""",
+                       new_state_id="""in-progress""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Reject""",
+                       actbox_url="""%(content_url)s/content_reject_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_permissions': 'Review portal content'},
+                       )
+                       
+    tdef = wf.transitions['re-activate']
+    tdef.setProperties(title="""Re-activates obsolete item""",
+                       new_state_id="""in-progress""",
+                       trigger_type=1,
+                       script_name="""""",
+                       after_script_name="""""",
+                       actbox_name="""Re-activate""",
+                       actbox_url="""%(content_url)s/content_retract_form""",
+                       actbox_category="""workflow""",
+                       props={'guard_expr': 'python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)' },
+                       )
+
+    ## State Variable
+    wf.variables.setStateVar('review_state')
+
+    ## Variables initialization
+    vdef = wf.variables['action']
+    vdef.setProperties(description="""The last transition""",
+                       default_value="""""",
+                       default_expr="""transition/getId|nothing""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['review_history']
+    vdef.setProperties(description="""Provides access to workflow history""",
+                       default_value="""""",
+                       default_expr="""state_change/getHistory""",
+                       for_catalog=0,
+                       for_status=0,
+                       update_always=0,
+                       props={'guard_permissions': 'Request review; Review portal content'})
+
+    vdef = wf.variables['actor']
+    vdef.setProperties(description="""The ID of the user who performed the last transition""",
+                       default_value="""""",
+                       default_expr="""user/getId""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['comments']
+    vdef.setProperties(description="""Comments about the last transition""",
+                       default_value="""""",
+                       default_expr="""python:state_change.kwargs.get('comment', '')""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    vdef = wf.variables['time']
+    vdef.setProperties(description="""Time of the last transition""",
+                       default_value="""""",
+                       default_expr="""state_change/getDateTime""",
+                       for_catalog=0,
+                       for_status=1,
+                       update_always=1,
+                       props=None)
+
+    ## Worklists Initialization
+    ldef = wf.worklists['reviewer_queue']
+    ldef.setProperties(description="""Reviewer tasks""",
+                       actbox_name="""Pending (%(count)d)""",
+                       actbox_url="""%(portal_url)s/search?review_state=pending""",
+                       actbox_category="""global""",
+                       props={'guard_permissions': 'Review portal content', 'var_match_review_state': 'pending'})
+
+
+def createHelpcenter_workflow(id):
+    "..."
+    ob = DCWorkflowDefinition(id)
+    setupHelpcenter_workflow(ob)
+    return ob
+
+def install():
+    addWorkflowFactory(createHelpcenter_workflow,
+                       id='helpcenter_workflow',
+                       title='Workflow for Help Center Items.')

Added: gzo/trunk/products/PloneHelpCenter/Extensions/Install.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/Install.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/Install.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,251 @@
+from StringIO import StringIO
+from Products.CMFCore.utils import getToolByName
+
+from Products.PloneHelpCenter import config
+
+EXTENSION_PROFILE = 'profile-Products.PloneHelpCenter:default'
+
+## how about the form controller settings?
+
+def install(self):
+    out = StringIO()
+
+    tool=getToolByName(self, "portal_setup")
+
+    try:
+        tool.runAllImportStepsFromProfile(EXTENSION_PROFILE,
+            purge_old=False)
+    except AttributeError:   # before plone 3
+        old_context = tool.getImportContextID()
+        tool.setImportContext(EXTENSION_PROFILE)
+        tool.runAllImportSteps(purge_old=False)
+        tool.setImportContext(old_context)
+
+    print >> out, "Successfully installed %s" % config.PROJECTNAME
+
+    return out.getvalue()
+
+
+### leaving the old cruft in place for now
+### only renaming (re)install not to confuse the quickintaller
+
+
+from Products.Archetypes.public import listTypes
+from Products.Archetypes.Extensions.utils import installTypes, install_subskin
+from Products.PloneHelpCenter.config import *
+
+## from Products.PloneHelpCenter.Extensions import HCWorkflow
+## from Products.PloneHelpCenter.Extensions import HCFolderWorkflow
+## from Products.PloneHelpCenter.Extensions import HCSubItemWorkflow
+
+
+def addCatalogIndex(self, out, catalog, index, type, extra = None):
+    """Add the given index name, of the given type, to the catalog."""
+
+    if index not in catalog.indexes():
+        catalog.addIndex(index, type, extra)
+        print >> out, "Added index", index, "to catalog"
+    else:
+        print >> out, "Index", index, "already in catalog"
+
+def addCatalogMetadata(self, out, catalog, column):
+    """Add the given column to the catalog's metadata schema"""
+    
+    if column not in catalog.schema():
+        catalog.addColumn(column)
+        print >> out, "Added", column, "to catalog metadata"
+    else:
+        print >> out, column, "already in catalog metadata"
+
+def removeCatalogIndex(self, out, catalog, index):
+    """Delete the given index"""
+    
+    if index in catalog.indexes():
+        catalog.delIndex(index)
+        print >> out, "Removed index", index
+    else:
+        print >> out, "Index", index, "not in catalog"
+    
+def removeCatalogMetadata(self, out, catalog, column):
+    """Delete the given metadata column"""
+    
+    if column in catalog.schema():
+        catalog.delColumn(column)
+        print >> out, "Removed column", column
+    else:
+        print >> out, "Column", column, "not in catalog"
+
+def addToListProperty(self, out, propertySheet, property, value):
+    """Add the given value to the list in the given property"""
+    current = list(propertySheet.getProperty(property))
+    if value not in current:
+        current.append(value)
+        propertySheet.manage_changeProperties(**{property : current})
+
+    print >> out, "Added %s to %s" % (value, property)
+
+
+def registerNavigationTreeSettings(self, out):
+    """Make the folderish content types not appear in navigation tree.
+    We don't want users to think of the HowTo as a folder, even though
+    technically, it is."""
+
+    phcTypes = ('HelpCenterHowTo','HelpCenterTutorial','HelpCenterErrorReference',
+               'HelpCenterFAQ', 'HelpCenterDefinition', 'HelpCenterLink',
+               'HelpCenterInstructionalVideo', 'HelpCenterReferenceManual',
+               'HelpCenterTutorialPage', 'HelpCenterReferenceManualPage',
+               )
+    portalProperties = getToolByName(self, 'portal_properties')
+    navtreeProps = getattr(portalProperties, 'navtree_properties')
+    
+    for t in phcTypes:
+        addToListProperty(self, out, navtreeProps, 'metaTypesNotToList', t)
+        addToListProperty(self, out, navtreeProps, 'parentMetaTypesNotToQuery', t)
+
+def installPortlets(self, out):
+    # prepend to the left_slots list, so it appears on top for Reviewers
+    self.left_slots = [ 'here/portlet_stale_items/macros/portlet',] + list(self.left_slots)
+    print >>out, "Added portlet"
+
+def registerFormControllerActions(self, out):
+    fc_tool = getToolByName(self, 'portal_form_controller')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterHowTo', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterFAQ', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterTutorial', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterReferenceManual', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterInstructionalVideo', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterLink', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterErrorReference', None, 'traverse_to', 'string:edit_reminder')
+    fc_tool.addFormAction('content_edit', 'success', 'HelpCenterDefinition', None, 'traverse_to', 'string:edit_reminder')
+    print >> out, 'Set reminder to publish message hack on objects.'
+
+def installWorkflows(self, out):
+    wf_tool = getToolByName(self, 'portal_workflow')
+
+    HCWorkflow.install()
+    HCFolderWorkflow.install()
+    HCSubItemWorkflow.install()
+
+    if not 'helpcenter_workflow' in wf_tool.objectIds():
+        wf_tool.manage_addWorkflow('helpcenter_workflow (Workflow for Help Center Items.)',
+                                   'helpcenter_workflow')
+    if not 'helpcenterfolder_workflow' in wf_tool.objectIds():
+        wf_tool.manage_addWorkflow('helpcenterfolder_workflow (Workflow for Help Center Folders.)',
+                                   'helpcenterfolder_workflow')
+    if not 'helpcentersubitem_workflow' in wf_tool.objectIds():
+        wf_tool.manage_addWorkflow('helpcentersubitem_workflow (Workflow for Help Center Sub-items.)',
+                                   'helpcentersubitem_workflow')
+
+    print >> out, 'Installed helpcenter_workflow.'
+    print >> out, 'Installed helpcenterfolder_workflow.'
+    print >> out, 'Installed helpcentersubitem_workflow'
+
+    wf_tool.setChainForPortalTypes(pt_names=['HelpCenterFAQ'
+                                            ,'HelpCenterHowTo'
+                                            ,'HelpCenterLink'
+                                            ,'HelpCenterTutorial'
+                                            ,'HelpCenterReferenceManual'
+                                            ,'HelpCenterInstructionalVideo'
+                                            ,'HelpCenterErrorReference'
+                                            ,'HelpCenterDefinition'], chain='helpcenter_workflow')
+    print >> out, 'Set helpcenter_workflow as default for help center content types.'
+
+    wf_tool.setChainForPortalTypes(pt_names=['HelpCenterFAQFolder'
+                                            ,'HelpCenterHowToFolder'
+                                            ,'HelpCenterLinkFolder'
+                                            ,'HelpCenterTutorialFolder'
+                                            ,'HelpCenterReferenceManualFolder'
+                                            ,'HelpCenterInstructionalVideoFolder'
+                                            ,'HelpCenterErrorReferenceFolder'
+                                            ,'HelpCenterGlossary'], chain='helpcenterfolder_workflow')
+    print >> out, 'Set helpcenterfolder_workflow as default for help center folder types.'
+
+    wf_tool.setChainForPortalTypes(pt_names=['HelpCenterTutorialPage'
+                                            ,'HelpCenterReferenceManualSection'
+                                            ,'HelpCenterReferenceManualPage'], 
+                                    chain='helpcentersubitem_workflow')
+    print >> out, 'Set helpcentersubitem_workflow as default for sections and pages.'
+
+def setupPortalFactory(self, out):
+    # make new types use portal_factory
+    ft = getToolByName(self, 'portal_factory')
+    portal_factory_types = ft.getFactoryTypes().keys()
+    for t in [
+             # With this in the factory, creating the default "how to use this resource" document fails :-(
+             # 'HelpCenter',
+             'HelpCenterGlossary',
+             'HelpCenterDefinition',
+             'HelpCenterErrorReference',
+             'HelpCenterErrorReferenceFolder',
+             'HelpCenterFAQ',
+             'HelpCenterFAQFolder',
+             'HelpCenterHowTo',
+             'HelpCenterHowToFolder',
+             'HelpCenterInstructionalVideo',
+             'HelpCenterInstructionalVideoFolder',
+             'HelpCenterLink',
+             'HelpCenterLinkFolder',
+             'HelpCenterTutorial',
+             'HelpCenterTutorialFolder',
+             'HelpCenterTutorialPage',
+             'HelpCenterReferenceManual',
+             'HelpCenterReferenceManualFolder',
+             'HelpCenterReferenceManualSection',
+             'HelpCenterReferenceManualPage']:
+
+        if t not in portal_factory_types:
+            portal_factory_types.append(t)
+            ft.manage_setPortalFactoryTypes(listOfTypeIds=portal_factory_types)
+
+    print >> out, 'New types use portal_factory'
+
+def old_install(self, reinstall=False):
+    out = StringIO()
+
+    installTypes(self, out,
+                 listTypes(PROJECTNAME),
+                 PROJECTNAME)
+
+    from Products.CMFDynamicViewFTI.migrate import migrateFTIs
+    migrateFTIs(self, product=PROJECTNAME)
+
+    install_subskin(self, out, GLOBALS)
+
+    registerNavigationTreeSettings(self, out)
+    installWorkflows(self, out)
+    registerFormControllerActions(self, out)
+    setupPortalFactory(self, out)
+    
+    
+    # Add catalog metadata columns and indexes
+    catalog = getToolByName(self, 'portal_catalog')
+    addCatalogIndex(self, out, catalog, 'isOutdated', 'FieldIndex')
+    addCatalogMetadata(self, out, catalog, 'isOutdated')
+    print >> out, "Added isOutdated to catalog metadata"
+
+    # Add "stale items" portlet, so HelpCenter Managers and Reviewers can
+    # review old stuff to see if it's still useful
+    # installPortlets(self, out)
+    # removed for now, expensive and should be a separate page or similar,
+    # not a portlet. Nice and valuable functionality, though.
+    
+    print >> out, "Successfully installed %s." % PROJECTNAME
+    return out.getvalue()
+
+def old_uninstall(self, reinstall=False):
+    out = StringIO()
+
+    # remove the stale-items portlet from the portal root object
+    #portletPath = 'here/portlet_stale_items/macros/portlet'
+    #if portletPath in self.left_slots:
+    #    self.left_slots = [p for p in self.left_slots if (p != portletPath)]
+    #    print >> out, 'Removed stale-items portlet'
+
+    if not reinstall:
+        # Remove catalog metadata columns and indexes
+        catalog = getToolByName(self, 'portal_catalog')
+        removeCatalogMetadata(self, out, catalog, 'isOutdated')
+        print >> out, "Removed isOutdated to catalog metadata"
+
+    print >> out, "Successfully uninstalled %s." % PROJECTNAME
+    return out.getvalue()

Added: gzo/trunk/products/PloneHelpCenter/Extensions/Migrations.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/Migrations.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/Migrations.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,122 @@
+try:
+    from Products.contentmigration.migrator import InlineFieldActionMigrator, BaseInlineMigrator
+    from Products.contentmigration.walker import CustomQueryWalker
+    haveContentMigrations = True
+except ImportError:
+    haveContentMigrations = False
+    
+import types
+
+from StringIO import StringIO
+from Products.CMFCore.utils import getToolByName
+from Products.Archetypes import transaction
+from Products.Archetypes.BaseUnit import BaseUnit
+from Products.CMFPlone.utils import safe_hasattr
+
+from Acquisition import aq_base
+
+def mergeKeywords(obj, value, **kwargs):
+    if type(value) == type(()):
+        value = list(value)
+    elif type(value) == type('') or type(value) == type(u''):
+        value = [value]
+    
+    newValue = []
+    for v in value:
+        if type(v) != type('') and type(v) != type(u''):
+            continue
+        if ',' in v:
+            for i in v.split(','):
+                newValue.append(i.strip())
+        else:
+            newValue.append(v.strip())
+        
+    md = getattr(aq_base(obj), '_md', None)
+    if md:
+        oldKeywords = md.get('subject', [])
+        for kw in oldKeywords:
+            if kw not in newValue:
+                newValue.append(kw)
+
+    return newValue
+
+def v0_8_to_v0_9(self, out):
+    """Migrate from 0.8 to 0.9
+    """
+    
+    if not haveContentMigrations:
+        print >> out, "WARNING: Install contentmigrations to be able to migrate from 0.8 to 0.9"
+        return
+
+    class HelpCenterMigrator(InlineFieldActionMigrator):
+        src_portal_type = src_meta_type = ('HelpCenter')
+        fieldActions = ({ 'fieldName' : 'versions_vocab',
+                          'newFieldName' : 'versionsVocab',
+                        },
+                        { 'fieldName' : 'audiences_vocab',
+                          'newFieldName' : 'audiencesVocab',
+                        },
+
+                        )
+
+    class ContainerMigrator(InlineFieldActionMigrator):
+        src_portal_type = src_meta_type = ('HelpCenterGlossary',
+                                           'HelpCenterFAQFolder',
+                                           'HelpCenterTutorialFolder',
+                                           'HelpCenterReferenceManualFolder',
+                                           'HelpCenterInstructionalVideoFolder',
+                                           'HelpCenterLinkFolder',
+                                           'HelpCenterHowToFolder',
+                                           'HelpCenterErrorReferenceFolder',)
+        fieldActions = ({ 'fieldName' : 'sections_vocab',
+                          'newFieldName' : 'sectionsVocab',
+                        },
+                        )
+                        
+    class ItemMigrator(InlineFieldActionMigrator):
+        src_portal_type = src_meta_type = ('HelpCenterDefinition', 
+                                           'HelpCenterFAQ', 
+                                           'HelpCenterTutorial',
+                                           'HelpCenterReferenceManual',
+                                           'HelpCenterInstructionalVideo',
+                                           'HelpCenterLink',
+                                           'HelpCenterHowTo',
+                                           'HelpCenterErrorReference',)
+        fieldActions = ({ 'fieldName' : 'referenced_items',
+                          'newFieldName' : 'relatedItems',
+                        },
+                        { 'fieldName' : 'related_keywords',
+                          'newFieldName' : 'subject',
+                          'transform' : mergeKeywords,
+                        },
+                        )
+
+    portal = getToolByName(self, 'portal_url').getPortalObject()
+
+    # Migrate 
+    walker = CustomQueryWalker(portal, HelpCenterMigrator, query = {})
+    transaction.savepoint(optimistic=True)
+    print >> out, "Migrating fields in help center root"
+    walker.go()
+    
+    walker = CustomQueryWalker(portal, ContainerMigrator, query = {})
+    transaction.savepoint(optimistic=True)
+    print >> out, "Migrating fields in containers"
+    walker.go()
+
+    walker = CustomQueryWalker(portal, ItemMigrator, query = {})
+    transaction.savepoint(optimistic=True)
+    print >> out, "Migrating fields in items"
+    walker.go()
+
+    print >> out, "- You may also want to update your catalog in portal_catalog"
+    print >> out, "- You may also want to update role mappings in portal_workflow"
+    
+def migrate(self):
+    """Run migrations
+    """
+    out = StringIO()
+    print >> out, "Starting PHC migration"
+    v0_8_to_v0_9(self, out)
+    print >> out, "PHC migrations finished"
+    return out.getvalue()
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/Extensions/WikiPage2PHCHowToMigration.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/WikiPage2PHCHowToMigration.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/WikiPage2PHCHowToMigration.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,47 @@
+## Script (Python) "migratewiki2phc"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=Migrates the How-To Wiki pages to PloneHelpCenter
+##
+newf = context.documentation2.howto
+change_owner = context.plone_utils.changeOwnershipOf
+transition = context.portal_workflow.doActionFor
+
+def mkNiceId(id):
+    """
+    """
+    assert(isinstance(id, str))
+    newId = []
+    for s in id:
+        if s.isupper():
+            newId.append('-'+s.lower())
+        else:
+            newId.append(s)
+    strid = ''.join(newId)
+    if strid.startswith('-'):
+        strid = strid[1:]
+    return strid
+
+for old in context.documentation.howto.contentValues():
+        newid=mkNiceId(old.getId())
+        newf.invokeFactory('HelpCenterHowTo', newid)
+        new = newf[newid]
+        try:
+            new.setBody(old.read())
+        except:
+            print "ERROR setting body for %s" % old.getId()
+        new.setContentType('text/structured')
+        new.setTitle(old.Title())
+        new.setRelated_keywords((old.getId(),))
+        try:
+            change_owner(new, old.Creator(), 0)
+        except:
+            print "ERROR setting owner for %s" % old.getId()
+        transition(new, 'submit')
+        print "converted %s" % old.absolute_url()
+
+return printed

Added: gzo/trunk/products/PloneHelpCenter/Extensions/__init__.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/__init__.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/__init__.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1 @@
+# package
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/Extensions/migrations-old.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Extensions/migrations-old.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Extensions/migrations-old.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,182 @@
+
+# These migrations were used during pre-release days. Hopefully, they should
+# not be needed any more.
+
+# This is used by the wiki-to-helpcenter migrator, which we only ran once
+## from Products.ATContentTypes.migration.common import *
+## from Products.ATContentTypes.migration.Walker import CatalogWalker
+## from Products.ATContentTypes.migration.Migrator import BaseMigrator
+## from Products.ATContentTypes.migration.Migrator import CMFItemMigrator
+
+from Products.CMFCore.utils import getToolByName
+from Acquisition import aq_parent, aq_base
+
+from StringIO import StringIO
+
+# This is used by the wiki-to-helpcenter migrator, which we only ran once
+##BASE_PATH = '/testsite/documentation/howto'
+##
+##class DocumentationWalker(CatalogWalker):
+##    """Overwrite walk to start from a base path
+##    """
+##    
+##    def walk(self, **kwargs):
+##        """Walks around and returns all objects which needs migration
+##
+##        :return: objects (with acquisition wrapper) that needs migration
+##        :rtype: generator
+##        """
+##        LOG("fromType: " + str(self.fromType))
+##        catalog = self.catalog
+##
+##        if HAS_LINGUA_PLONE and 'Language' in catalog.indexes():
+##            # usage of Language is required for LinguaPlone
+##            brains = catalog(portal_type = self.fromType,
+##                             Language = catalog.uniqueValuesFor('Language'),
+##                             path = BASE_PATH,
+##                            )
+##        else:
+##            brains = catalog(portal_type = self.fromType,
+##                             path = BASE_PATH,)
+##
+##        for brain in brains:
+##            obj = brain.getObject()
+##            if obj:
+##                yield obj
+##                # XXX safe my butt
+##                obj._p_deactivate()
+##
+##class Wiki2PHCMigrator(CMFItemMigrator):
+###class Wiki2PHCMigrator(BaseMigrator):
+##    """
+##    """
+##    
+##    fromType = 'Wiki Page'
+##    toType   = 'HelpCenterHowTo'
+##    #map = {'render' : 'setBody'}
+##    
+##    def __init__(self, obj, **kwargs):
+##        BaseMigrator.__init__(self, obj, **kwargs)
+##        self.new_id = mkNiceId(self.new_id)
+##
+##    def custom(self):
+##        print '%s -> %s' % (self.old.absolute_url(1), self.new.absolute_url(1))
+##        data = self.old.read()
+##        self.new.setBody(data, encoding='utf-8', mimetype='text/structured')
+##        self.new.setRelated_keywords((self.orig_id,))
+##    
+##    def renameOld(self):
+##        """Renames the old object
+##        
+##        Unused
+##        """
+##        pass
+##
+##    def createNew(self):
+##        """Create the new object
+##        
+##        use destination from kwargs
+##        """
+##        destination = self.kwargs['destination']
+##        ttool = getToolByName(self.parent, 'portal_types')
+##        typeInfo = ttool.getTypeInfo(self.toType)
+##        typeInfo.constructInstance(destination, self.new_id)
+##        self.new = getattr(destination, self.new_id)
+##
+##    def remove(self):
+##        """Removes the old item
+##        
+##        abused to change the workflow state
+##        """
+##        wftool = getToolByName(self.parent, 'portal_workflow')
+##        wftool.doActionFor(self.new, 'submit')
+##        #if wftool.getInfoFor(self.old, 'review_state') in ('published', 'pending'):
+##        #    wftool.doActionFor(self.old, 'retract')
+##
+##
+##def mkNiceId(id):
+##    """
+##    """
+##    assert(isinstance(id, str))
+##    newId = []
+##    for s in id:
+##        if s.isupper():
+##            newId.append('-'+s.lower())
+##        else:
+##            newId.append(s)
+##    strid = ''.join(newId)
+##    if strid.startswith('-'):
+##        strid = strid[1:]
+##    return strid
+##
+
+def metadataDefinitionToAttribute(self):
+    """Modify Definitions which have definition in metadata to use it in
+    attribute instead.
+    """
+    
+    out = StringIO()
+    
+    catalog = getToolByName(self, 'portal_catalog')
+    res = catalog.searchResults(portal_type = 'HelpCenterDefinition')
+    
+    for r in res:
+        definition = r.getObject()
+        base = aq_base(definition)
+        
+        if hasattr(base, '_md'):
+            try:
+                base.description = base._md['description']
+                del base._md['descripion']
+                definition._p_changed = 1
+                print >> out, definition.absolute_url()
+            except KeyError:
+                pass
+
+    return out.getvalue()
+
+
+def makeAllPagesVisible(self):
+    """Make all the tutorial pages visible"""
+    catalog = getToolByName(self, 'portal_catalog')
+    workflow = getToolByName(self, 'portal_workflow')
+    pages = catalog.searchResults(portal_type = 'HelpCenterTutorialPage')
+    
+    out = StringIO()
+    
+    for p in pages:
+        page = p.getObject()
+        if workflow.getInfoFor(page, 'review_state') == 'hidden':
+            print >>out, "Making page", page.absolute_url(), "visible"
+            workflow.doActionFor(page, 'publish')
+    
+    return out.getvalue()
+    
+def setVersion(self):
+    """Set the default version"""
+    # XXX: Do we need/want to do this?
+    pass
+
+def migrate(self):
+    
+    out = StringIO()
+    
+    print >> out, "Wiki-to-PHC migration turned off!"
+    # catalog = getToolByName(self, 'portal_catalog')
+    # destination = self.documentation.howto2.howto
+    #w = CatalogWalker(Wiki2PHCMigrator, catalog, destination=destination)
+    # w = DocumentationWalker(Wiki2PHCMigrator, catalog)
+    # return w.go( destination=destination)
+    
+    print >> out, "Migrating Definition description from metadata to attribute"
+    print >> out, "You must PACK THE DATABASE after this operation for the"
+    print >> out, "history tabs to work, since the historical objects are not"
+    print >> out, "migrated"
+    print >> out, metadataDefinitionToAttribute(self)
+    
+    print >> out, "\n"
+    print >> out, "Publishing all tutorial pages (since we now have a workflow)"
+    print >> out, "and this defaults to 'hidden'"
+    print >> out, makeAllPagesVisible(self)
+        
+    return out.getvalue()

Added: gzo/trunk/products/PloneHelpCenter/HISTORY.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/HISTORY.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/HISTORY.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,216 @@
+History of significant changes for PloneHelpCenter:
+
+   (name of developer listed in brackets)
+
+PloneHelpCenter 1.5
+
+    - Remove "statistics" tab from subfolders. I don't know if it
+      was ever meant to be there, but it's useless and doesn't work.
+      [stevem]
+
+    - Move presentation support from PHCFolder.py to browser view.
+      [stevem]
+
+    - Items without sections were not showing in phcfolder_view.
+      [stevem]
+
+    - Revise utils.discussionNotify() to use secureSend.
+      [stevem]
+
+    - Plone 3 doesn't allow discussion of content without dynamic layouts,
+      so migrate all the FTIs to dynamic view.
+      [stevem]
+
+    - Fixed issue #41, Content accessible when container is hidden.
+      [stevem]
+
+    - Consolidate ad-hoc topic css into stylesheet. (issue #78)
+      [stevem]
+
+    - Made it possible to use non-ASCII section titles (issues #80, #81, #83).
+      [stevem]
+
+    - Started building browser support; shifted much of the presentation
+      logic for the PHC views to browser views.
+      [stevem]
+      
+    - Fixed broken install under 2.5.x.
+      [stevem]
+
+    - A bug in CMF 1.2's DiscussionTool prevents setting a default
+      allow_discussion via class attribute. (Archetypes used to work
+      around this by catching the exception. That was lost in Archetypes
+      1.5. Until fixed, commented out the code that sets allow_discussion.
+      [stevem]
+
+    - Add rudimentary test for comment mailing.
+      [stevem]
+
+    - Test and install cleanup targetting Plone 3.
+      [stevem]
+
+PloneHelpCenter 1.0
+
+    - Hide several visual artifacts that aid navigation on printed 
+      media. 
+      [servilio]
+
+    - Using the stylesheet registry to include the custom styles,
+      instead of including them directly from the templates.
+      [servilio]
+ 
+    - Fix issue #64: Topic area listings should be restricted to the HelpCenter
+      [stevem].
+      
+    - Make import of CMFCorePermissions compatible with later versions of CMF
+      [mj]
+
+    - PHC tracker cleanup [stevem]:
+      Fix issue #59: Images don't show in highest level nonpaginated view
+       for a PloneHelpCenter manual.
+      Fix for issues #44 and 52. Make view actions Plone 2.5 friendly.
+      Fix issue #55 by adding contributed spanish .po files
+      Fix issue #54: German Umlaute by updating .po files
+      Fix issue #54: German Umlaute by updating .po file
+      Fix issue #31: Token 'ATOM' required, 'Not' found in searches.
+      Fix issue #62: Duplicated listings on content-type folders
+      Fix issue #35, Contents fail to display if no section value assigned
+  
+    - Rephrase all-content-in-one-page view's note for reference
+      manuals and tutorials to make it simple/shorter and avoid the
+      ambiguity-prone "page" term (simple users might think it refers
+      to print media, and might be surprised :O when it doesn't
+      actually fit in one page).
+      [Kathryn Hryb, servilio]
+
+    - Added full contents view option to TOC drop-down for section
+      views of reference manual and tutorial.
+      [servilio]
+
+    - Fixed some templates that weren't honouring the setting of
+      site_properties.allowAnonymousViewAbout
+      [servilio]
+
+    - Fixed document actions placement for some templates that have
+      them after the title.
+      [servilio]
+
+    - Make getRelatedItems return an empty list when no relatedItems
+      property is present.
+      [servilio]
+
+    - Added search template for searches by topic, audience, version.
+      [stevem]
+
+    - Added option to make PHC searches be global rather than local-only.
+      This will support including product-area documentation in searches
+      on plone.org.
+      [stevem]
+
+    - Added HelpCenter templates to support browsing by section (topic).
+      Added some support for using the section field for a
+      "topic : subtopic" taxonomy. Added portlets to support these
+      pages.
+      [stevem, templates by vedawms, joelburton, and limi]
+
+    - Added default sections at HelpCenter folder level. These may be
+      overridden in folders.
+      [stevem]
+
+    - Added 'Start Here' flag for key documentation
+      [aclark and stevem]
+
+PloneHelpCenter 0.9
+
+    - i18n improvements and general fixes in some templates
+      [ferri]
+
+    - Added plone-pt-br.po and plonehelpcenter-pt-br.po
+      [ferri]
+
+    - Another template / i18n update.
+      [hannosch]
+
+    - Made it possible to have standalone objects outside the Help Center
+      (very useful for reference manuals, for example)
+      [limi]
+    
+    - Major overhaul of all i18n files.
+      [hannosch]
+
+    - actually start using the ADD_HELP_AREA_PERMISSION as the
+      add permission for HelpCenter, instead of the generic
+      'Add Portal Content' permission
+      [rafrombrc]
+
+    - fixed lots of failing and erroring unit tests.  got all
+      tests to pass w/ plones 2.0 and 2.1
+      [rafrombrc]
+
+    - Made Glossary's getItemsBySection() return sorted list.
+      [optilude]
+
+    - Made reference manual and todo navigation drop-downs select current page
+      [optilude]
+
+    - Removed Help Center workflow from TutorialPages for now. They should
+      probably just have a simple in-progress/finished marker workflow that
+      doesn't really affect permissions, but just whether they are listed
+      or not in the index/page navigation. Had to remove it because of permission
+      problems right now (if any pages are not published in a Tutorial, you get
+      permission denied on the entire Tutorial).
+      [limi]
+
+PloneHelpCenter 0.2
+
+    - Added Help Center portlet, this will aggregate published entries
+      from all the available Help Centers, and display links to the published 
+      help centers.
+      [limi]
+
+    - Added Glossary types, updated Help Center view
+      [limi]
+
+    - Added Link types
+      [Joel]
+
+    - Added ErrorReference types
+      [Joel]
+
+    - Added helpcenter_workflow & associate installation stuff.
+      [Joel]
+
+    - Cleaned up FAQFolder, HowtoFolder, TutorialFolder displays
+      [Joel]
+
+    - Folders now only list visible-to-users content
+      [Joel]
+
+    - Changed how versions are printed on pages: uses getVersions method
+      rather than macro. Also, only prints a versions: line if there is
+      anything in versions vocabulary--so, to create a help center that
+      doesn't really use versions, just leave the vocab for this blank.
+      It will still appear on Archetypes' forms, but won't show up
+      one view modes
+      [Joel]
+
+    - Cleaned up and refactored text/doc files.
+      [Joel]
+
+    - Made many small API changes throughout. Sorry, but now this
+      means that any existing Plone Help Centers will have to be migrated.
+      I doubt if there are enough out there to justify making a 
+      migration script. The API should be fairly stable from now on,
+      but keep in mind this is still only a 0.2 release ;)
+      [Joel]
+
+    - added an optional ReferenceField (controlled in config.py) to cross-
+      reference from a PHC-type to another Archetype in the portal. This 
+      shouldnt affect existing code. If you have ATReferenceBrowserWidget
+      installed its used instead of the dumb default ReferenceWidget.
+      [Jensens]
+
+PloneHelpCenter 0.1
+
+    - Development version
+

Added: gzo/trunk/products/PloneHelpCenter/LICENSE.GPL
===================================================================
--- gzo/trunk/products/PloneHelpCenter/LICENSE.GPL	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/LICENSE.GPL	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,222 @@
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS

Added: gzo/trunk/products/PloneHelpCenter/LICENSE.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/LICENSE.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/LICENSE.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,14 @@
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
+MA 02111-1307 USA

Added: gzo/trunk/products/PloneHelpCenter/LINGUAPLONE.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/LINGUAPLONE.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/LINGUAPLONE.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+===================================
+LinguaPlone support
+===================================
+
+  - Add LinguaPlone support to the types
+    
+        -> The LinguaPlone import statement
+        -> Declare relevant fields as language-independent
+
+Language-independent fields in schemata.py of PHC 
+-------------------------------------------------- 
+
+ImportanceSchema -- "importance" 
+RelatedSchema -- "related_keywords" 
+VersionsSchema -- "versions" 
+SectionsSchema -- "sections" 
+SectionsVocbSchema -- "sections_vocab" 
+ReferenceSchema? --"referenced_items" 
+ContributorsSchema -- "contributors" 
+HCRootSchema -- "currentVersions", "versions_vocab"?, "importance_vocab"?,
+"defaultImportance", "rights" 
+LinkSchema -- "url" 
+InstructionalVideoSchema -- "video_file", "screenshot", "duration", 
+"width", "height" 
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/Patch.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/Patch.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/Patch.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,131 @@
+from AccessControl import ClassSecurityInfo
+from Acquisition import aq_base
+from DateTime import DateTime
+from Acquisition import aq_inner, aq_parent, aq_base, aq_chain
+from Products.Archetypes.utils import shasattr
+from Products.CMFCore.utils import getToolByName
+from Products.CMFCore.interfaces.Discussions import DiscussionResponse as IDiscussionResponse
+try:
+    from Products.CMFCore.permissions import ReplyToItem
+except ImportError:
+    from Products.CMFCore.CMFCorePermissions import ReplyToItem
+from Products.CMFDefault.DiscussionItem import DiscussionItem, DiscussionItemContainer
+from Products.CMFDefault.DiscussionTool import DiscussionTool
+from config import *
+
+PATCH_PREFIX = '_monkey_'
+
+__refresh_module__ = 0
+
+def monkeyPatch(originalClass, patchingClass):
+    #print 'monkeyPatch', originalClass.__name__, patchingClass.__name__
+    """Monkey patch original class with attributes from new class
+       (Swiped from SpeedPack -- thanks, Christian Heimes!)
+    
+    * Takes all attributes and methods except __doc__ and __module__ from patching class
+    * Safes original attributes as _monkey_name
+    * Overwrites/adds these attributes in original class
+    """
+    for name, newAttr in patchingClass.__dict__.items():
+        # don't overwrite doc or module informations
+        if name not in ('__doc__', '__module__'):
+            # safe the old attribute as __monkey_name if exists
+            # __dict__ doesn't show inherited attributes :/
+            orig = getattr(originalClass, name, None)
+            if orig:
+                stored_orig_name = PATCH_PREFIX + name
+                stored_orig = getattr(originalClass, stored_orig_name, None)
+                # don't double-patch on refresh!
+                if stored_orig is None:
+                    setattr(originalClass, stored_orig_name, orig)
+            # overwrite or add the new attribute
+            setattr(originalClass, name, newAttr)
+
+
+class PatchedDiscussionItemContainer:
+    #
+    #   Discussable interface
+    #
+
+    security = ClassSecurityInfo()
+
+    security.declareProtected(ReplyToItem, 'createReply')
+    def createReply( self, title, text, Creator=None ):
+        """Create a reply in the proper place
+        """
+        container = self._container
+
+        id = int(DateTime().timeTime())
+        while self._container.get( str(id), None ) is not None:
+            id = id + 1
+        id = str( id )
+
+        item = DiscussionItem( id, title=title, description=title )
+        item._edit( text_format='structured-text', text=text )
+
+        if Creator:
+            item.creator = Creator
+
+        item.__of__( self ).indexObject()
+
+        item.setReplyTo( self._getDiscussable() )
+
+        item.__of__(self).notifyWorkflowCreated()  # added with the patch - should be fixed in CMF 1.4.8+
+
+        self._container[ id ] = item
+
+        return id
+
+class PatchedDiscussionTool:
+
+    security = ClassSecurityInfo()
+
+    # This patch fixes CMF collector issue 314
+
+    def getDiscussionFor(self, content):
+        """ Get DiscussionItemContainer for content, create it if necessary.
+        """
+        if not self.isDiscussionAllowedFor( content ):
+            raise DiscussionNotAllowed
+
+        if not IDiscussionResponse.isImplementedBy(content):
+            # Discussion Items use the DiscussionItemContainer object of the
+            # related content item, so talkback needs to be acquired
+            talkback = getattr( aq_base(content), 'talkback', None )
+            if not talkback:
+                self._createDiscussionFor( content )
+        return content.talkback # make sure to return fully wrapped content object
+
+try:
+    from Products.CMFCore.utils import _globals as cmfcore_globals
+except ImportError:
+    from Products.CMFCore import cmfcore_globals
+from App.Common import package_home
+from os.path import join
+import zLOG
+
+x = []
+CMF_VERSION = 'Unknown'
+try:
+    file = join(package_home(cmfcore_globals), 'version.txt')
+    CMF_VERSION = open(file, 'r').read().strip()
+    version = CMF_VERSION.strip()
+    if version.lower().startswith('cmf-'):
+        version = version[4:]
+    filtered = ''
+    for v in version:
+        if v in ['0','1','2','3','4','5','6','7','8','9','.']:
+            filtered += v
+        else:
+            break
+    x = [int(x) for x in filtered.split('.')]
+except IOError:
+    # couldnt find file, oh well
+    pass
+except ValueError:
+    # couldnt make sense of the version number
+    pass
+if x <= [1,4,7]:
+    zLOG.LOG('PloneHelpCenter', zLOG.INFO, 'Monkey patching CMFDefault.DiscussionItem')
+    monkeyPatch(DiscussionItemContainer, PatchedDiscussionItemContainer)
+    monkeyPatch(DiscussionTool, PatchedDiscussionTool)

Added: gzo/trunk/products/PloneHelpCenter/README.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/README.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/README.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,74 @@
+Overview
+
+  Plone Help Center is an application designed to aid the documentation of
+  Plone, and is used on plone.org to categorize and keep documentation up to
+  date. It should be usable for documenting other open source products
+  (such as Plone Product add-ons) or even for other documentation projects.
+
+Installation
+
+  You install it the usual way - using Plone Setup.
+  
+Upgrading
+
+  If you are upgrading form a previous version, you must run migrations after
+  re-installing the PloneHelpCenter product.
+  
+  1. Visit the archetypes_tool in your site root via the ZMI;
+
+  2. Choose the "Update Schema" tab and select all the "PloneHelpCenter::"
+     content types;
+     
+  3. Press the "Update schema" button and wait for the "Done" indication.
+
+Usage
+
+  Plone Help Center has inline documentation, just add a help center.
+
+Requirements
+
+  This version of PloneHelpCenter has been tested with Plone 3.0.2.
+  
+  Optional:
+  
+  - AddRemoveWidget -- PLEASE NOTE: if AddRemoveWidget is installed
+  as a Zope product, you *must* also install it in Plone. If it is
+  present without being installed, errors will occur.
+
+Version 1.5 Notes
+
+  This version is still experimental. Baseline functionality looks good, but
+  there's work left to do.
+
+Credits
+
+  Project Architecture, Development, Content Types, Archetypes,
+  Workflow -- "Joel Burton":mailto:joel at joelburton.com
+
+  Development, User Interface, Project Architecture, Quality Assurance --
+  Alexander Limi, "Plone Solutions":http://www.plonesolutions.com
+  
+  Development, persistence and all-round brilliance -- Martin "optilude" Aspeli
+
+  Development, Assistance -- Christian 'Tiran' Heimes
+
+  Original FAQ code -- "Tim Terlegard":mailto:tim at se.linux.org,
+  "Edward Muller":mailto:edwardam at interlix.com - further enhancements
+  by Jean-Paul Ladage and Ahmad Hadi from "Zest
+  software":http://zestsoftware.nl
+
+  Fixing various stuff, documentation -- The Sprinters: Christian Heimes,
+  Dorneles Treméa, Daniel Nouri, Nate Aune
+
+  Added optional 'see also' references to other Archetypes based types --
+  Jens 'jensens' Klein, "jens quadrat":http://jensquadrat.com/
+
+  i18n improvements and general fixes in some templates and brazilian
+  translations by Jean Ferri <jeanferri at gmail.com>
+
+  Bugfixes and occasional Quality Assurance -- 
+  Geir Bækholt, "Plone Solutions":http://www.plonesolutions.com
+
+  Topic, start-here, and 1.0 search options -- the 2007 documentation
+  sprint participants, particularly aclark, joelburton, magnon and stevem.
+

Added: gzo/trunk/products/PloneHelpCenter/TODO.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/TODO.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/TODO.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,76 @@
+========================
+PloneHelpCenter ToDo
+========================
+
+Bugs
+--------
+
+    o Content type portlets ('latest faqs', 'latest how-tos', etc.) don't actually 
+      sort by most recent. 
+
+Questions
+--------
+
+Clean-up
+--------
+
+Process improvements
+--------------------
+
+Template improvements
+---------------------
+
+    o In addition to appearing at the top level (helpcenter_view) the 
+      documentation search box should also appear in the sub level view
+      (howtofolder_view, etc) but not the document view (howto_view).
+
+New functionality
+-----------------
+
+    o Pre-defined values for existing content type fields.
+
+        - In-your-face guideline we want to encourage people to follow.
+
+        - Show up as text in the body of a newly created document.
+
+        - Vague example: http://www.openplans.org/projects/plone-documentation/an-example-of-a-pre-defined-structure/
+
+    o Rate-able doc types. 
+
+        - More than just a Y/N type thing but at the same time it needs to be short.
+
+        - Rates if the document is useful, correct, tells you what you thought it was going to, etc.
+
+        - Extends existing PHC stats tools to make it easier to search for 
+          "bad" documentation that is flagged up.
+
+        - Option to trace back who made what rating so we can contact that 
+          person and discuss. Facilities to link these traces together and show 
+          traces that a document belongs to.
+
+        - Official blessing indicator. For when there are two docs on the same 
+          subject, to indicate which one is preferred.
+
+    o Alerts.
+
+        - Notification sent via email when a document is submitted for review or
+          published.
+    
+        - Configurable, to be sent to either a mailing-list or individual.
+
+
+    o Automated Review Cycle
+        - Some sort of cycle that every, let say, 6 months, boots out an email to 
+            the author of a doc and says, hey review this!                                                                                  
+    o Trails. 
+
+        - Take some smaller pieces of documentation and link them together to
+          form something bigger.
+
+        - See initial idea here: http://www.openplans.org/projects/plone-documentation/map/ 
+
+        - Should be prioritized last in this TODO list because it needs to be
+          thought about carefully before implementing. There are already a lot of 
+          content types in the PHC. For now, possibly use the reference manual type for
+          this which should be more than adequate. We may call it a "trail", but to the reader
+          it's just another style of constructing a reference on some topic.

Added: gzo/trunk/products/PloneHelpCenter/__init__.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/__init__.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/__init__.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,93 @@
+from AccessControl import allow_module
+from Globals import package_home
+from Products.Archetypes.public import process_types, listTypes
+from Products.CMFCore import utils as CMFCoreUtils
+from Products.CMFCore.DirectoryView import registerDirectory
+import os, os.path, sys
+
+# Get all the content types in the types directory
+from Products.PloneHelpCenter import content
+
+# Ensure that pickles refering to the old 'types' module now find 'content'
+sys.modules['Products.PloneHelpCenter.types'] = content
+
+from config import *
+
+registerDirectory(SKINS_DIR, GLOBALS)
+
+# MonkeyPatch CMFDefault.DiscussionItemContainer
+import Patch
+
+def initialize(context):
+
+    # Make the utils module importable TTW
+    allow_module('Products.PloneHelpCenter.utils')
+
+    contentTypes, constructors, ftis = process_types(
+        listTypes(PROJECTNAME),
+        PROJECTNAME)
+
+    # Initialise. Note that the ADD_CONTENT_PERMISSION is only used in contained
+    # images and files; for our special folders and content types, we have
+    # defined a custom factory with either ADD_CENTER_PERMISSION,
+    # ADD_HELP_AREA_PERMISSION, ADD_DOCUMENTATION_PERMISSION
+    CMFCoreUtils.ContentInit(
+        PROJECTNAME + ' Content',
+        content_types      = contentTypes,
+        permission         = ADD_CONTENT_PERMISSION,
+        extra_constructors = constructors,
+        fti                = ftis,
+        ).initialize(context)
+
+    # Extract constructors for items, areas and the root help center so that
+    # they can be given different permissions.
+    
+    itemConstructors = {}
+    areaConstructors = {}
+    rootConstructors = {}
+    for i in range(0, len(contentTypes)):
+        if contentTypes[i].meta_type in ('HelpCenterDefinition', 
+                                         'HelpCenterFAQ', 
+                                         'HelpCenterTutorial',
+                                         'HelpCenterReferenceManual',
+                                         'HelpCenterInstructionalVideo',
+                                         'HelpCenterLink',
+                                         'HelpCenterHowTo',
+                                         'HelpCenterErrorReference',):
+            itemConstructors[contentTypes[i].meta_type] = constructors[i]
+        elif contentTypes[i].meta_type in ('HelpCenterGlossary',
+                                           'HelpCenterFAQFolder',
+                                           'HelpCenterTutorialFolder',
+                                           'HelpCenterReferenceManualFolder',
+                                           'HelpCenterInstructionalVideoFolder',
+                                           'HelpCenterLinkFolder',
+                                           'HelpCenterHowToFolder',
+                                           'HelpCenterErrorReferenceFolder',):
+            areaConstructors[contentTypes[i].meta_type] = constructors[i]
+        elif contentTypes[i].meta_type in ('HelpCenter',):
+            rootConstructors[contentTypes[i].meta_type] = constructors[i]
+
+    # Set custom add permission for items and the help center root
+    for meta_type, constructor in itemConstructors.items():
+        context.registerClass(
+            meta_type = meta_type,
+            constructors = (constructor,),
+            permission = ADD_DOCUMENTATION_PERMISSION,
+            )
+    for meta_type, constructor in areaConstructors.items():
+        context.registerClass(
+            meta_type = meta_type,
+            constructors = (constructor,),
+            permission = ADD_HELP_AREA_PERMISSION,
+            )
+    for meta_type, constructor in rootConstructors.items():
+        context.registerClass(
+            meta_type = meta_type,
+            constructors = (constructor,),
+            permission = ADD_CENTER_PERMISSION,
+            )
+
+    # Force the loading of test data generation scripts that
+    # we're currently attaching to the portal_migration tool.
+    # XXX: Remove this hack when we final have a portal_test_script tool.
+    # import tests

Added: gzo/trunk/products/PloneHelpCenter/browser/configure.zcml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/browser/configure.zcml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/browser/configure.zcml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,23 @@
+<configure  xmlns="http://namespaces.zope.org/browser"
+            i18n_domain="plonehelpcenter">
+
+<page
+    name="hc_view"
+    for="..interfaces.IHelpCenterContent"
+    class=".helpcenter.HelpCenterView"
+    permission="zope2.View"
+    allowed_attributes="subtypes rss_subtypes sections sectionContents
+        getTopics getSubTopics getMajorTopics getSyndicationURL
+        getSectionMap getNonPHCContents statsQueryCatalog searchTypes"
+    />
+
+<page
+    name="hcf_view"
+    for="..interfaces.IHelpCenterFolder"
+    class=".phcfolder.HelpCenterFolderView"
+    permission="zope2.View"
+    allowed_attributes="Versions getItemsBySection getItemsBySections
+        getItemsByAudiencesAndSections getSectionsToList"
+    />
+
+</configure>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/browser/helpcenter.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/browser/helpcenter.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/browser/helpcenter.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,364 @@
+""" support for HelpCenter templates """
+
+from Products.Five.browser import BrowserView
+from Products.CMFCore.utils import getToolByName
+from Products.PythonScripts.standard import url_quote_plus
+
+from Products.PloneHelpCenter.config import TOPIC_VIEW_TYPES
+
+
+subtypes_tuples = (
+    ('HelpCenterFAQFolder','HelpCenterFAQ'),
+    ('HelpCenterHowToFolder','HelpCenterHowTo'),
+    ('HelpCenterTutorialFolder','HelpCenterTutorial'),
+    ('HelpCenterLinkFolder','HelpCenterLink'),
+    ('HelpCenterErrorReferenceFolder','HelpCenterErrorReference'),
+    ('HelpCenterGlossary','HelpCenterDefinition'),
+    ('HelpCenterReferenceManualFolder','HelpCenterReferenceManual'),
+    ('HelpCenterInstructionalVideoFolder','HelpCenterInstructionalVideo')
+    )
+
+
+# case-insensitive compare
+def ncCmp(a, b):
+    return cmp(a.lower(), b.lower())
+
+# compare items by startHere and caseless title
+def itemCmp(a, b):
+    ash = getattr(a, 'getStartHere', False)
+    bsh = getattr(b, 'getStartHere', False)
+    if (ash and bsh) or (not ash and not bsh):
+        return cmp(a.Title.lower(), b.Title.lower())
+    elif ash:
+        return -1
+    else:
+        return 1
+
+
+class HelpCenterView(BrowserView):
+    """ support for HelpCenter templates """
+
+    def __init__(self, context, request):
+        """ set up a few convenience object attributes """
+        
+        BrowserView.__init__(self, context, request)
+
+        self.catalog = getToolByName(self.context, 'portal_catalog')
+        self.portal_url = getToolByName(self.context, 'portal_url')()      
+        self.context_path = '/'.join(self.context.getPhysicalPath())
+
+
+    def subtypes(self):
+        """ returns a list of major container types """
+        return [t[0] for t in subtypes_tuples]
+    
+
+    def rss_subtypes(self):
+        """ returns a list of doc types """
+        return [t[1] for t in subtypes_tuples]
+        
+
+    def getSyndicationURL(self):
+        """ returns a URL for RSS feed of help doc types """
+
+        return self.portal_url + '/search_rss?sort_on=modified&sort_order=descending&path=' \
+         + self.context_path + '&' + ('&'.join(['portal_type=%s' % s[1] for s in subtypes_tuples ]))
+
+    
+    def sections(self):
+        """ subtype sections in current folder """
+
+        contentFilter = {'review_state':('published', 'visible',), 'portal_type' : self.subtypes()}
+        return self.context.getFolderContents(contentFilter=contentFilter)
+
+
+    def sectionContents(self, section, limit=5):
+        """ return section contents """
+        
+        contentFilter = {'review_state':'published','sort_on':'modified','sort_order':'reverse', 'limit' : limit}
+        return section.getObject().getFolderContents(contentFilter=contentFilter);        
+
+
+    def getTopics(self):
+        """Returns list of major topics and subtopics; used in helpcenter_topicview"""
+        
+        # major topics are those defined in the HelpCenter object.
+        # returns list in the form:
+        # [{title, url, subtopics}, ...]
+        # subtopics are [{title, url}, ...]
+        
+        here_url  = self.context.absolute_url()
+
+        # get a set of the major topics
+        try:
+            majorTopics = self.context.getSectionsVocab()
+        except KeyError:
+            return []
+        liveSections = set( self.catalog.uniqueValuesFor('getSections') )
+        
+        sections = []
+        currTitle = ''
+        for live in majorTopics:
+            if live in liveSections:
+                # break into main topic, sub topic
+                cs = [s.strip() for s in live.split(':')]
+                main = cs[0]
+                sub = ': '.join(cs[1:])
+                # sub = cs[-1]
+                
+                if main != currTitle:
+                    # append a new topic dict
+                    currTitle = main
+                    currSubSections = []
+                    sections.append(
+                     {'title':currTitle,
+                      'subtopics':currSubSections, 
+                      'url': here_url + '/phc_topic_area?topic=' + url_quote_plus(currTitle),
+                      }
+                     )
+                if sub:
+                    # add to the subtopics list
+                    id = sub.lower().replace(' ','-')  # make HTML anchor ID
+                    currSubSections.append(
+                     {'title':sub,
+                      'url': "%s/phc_topic_area?topic=%s#%s" % (here_url, url_quote_plus(currTitle), id)
+                      }
+                     )
+
+        #sections.sort(indexCmp)        
+        return sections
+
+
+    def getSectionMap(self):
+        """
+          returns a complex list of section dicts
+          [{title:sectiontitle, subtopics:listOfSubTopics, url:urlOfSection, count:itemsInSection}, ...]
+          subtopics are each lists [{title:titleOfSubSection,url:urlOfSubSection}]
+          This is used in helpcenter_ploneorg.pt.
+        """
+        
+        context = self.context
+        
+        here_url  = context.absolute_url()
+        phc = context.getPHCObject()
+        
+        topics = phc.getSectionsVocab()
+        
+        # dict to save counts
+        topicsDict = {}
+        
+        for topic in topics:
+            if ':' not in topic:
+                items = self.catalog(portal_type=['HelpCenterReferenceManual','HelpCenterTutorial','HelpCenterHowTo'],
+                                               review_state='published',
+                                               getSections=[topic])
+                for item in items:
+                    for section in item.getSections:
+                        topicsDict[section] = topicsDict.get(section, 0) + 1
+        
+        sections = []
+        currTitle = ''
+        for topic in topics:
+            count = topicsDict.get(topic)
+            if count:
+                # break into main topic, sub topic
+                cs = [s.strip() for s in topic.split(':')]
+                main = cs[0]
+                sub = ': '.join(cs[1:])
+                
+                if main != currTitle:
+                    # append a new topic dict
+                    currTitle = main
+                    currSubSections = []
+                    sections.append(
+                     {'title':currTitle,
+                      'subtopics':currSubSections,
+                      'url': here_url + '/phc_topic_area?topic=' + url_quote_plus(currTitle),
+                      'count':count
+                      }
+                     )
+                if sub:
+                    # add to the subtopics list
+                    id = sub.lower().replace(' ','-')  # make HTML anchor ID
+                    currSubSections.append(
+                     {'title':sub,
+                      'url': "%s/phc_topic_area?topic=%s#%s" % (here_url, url_quote_plus(currTitle), id)
+                      }
+                     )
+            
+        return sections
+
+
+    def getSubTopics(self, topic="Visual Design", portal_types=TOPIC_VIEW_TYPES):
+        """Get subtopics for phc_topic_area -- a utility for the phc_topicarea view"""
+        
+        # Returns sorted list of dicts in the form:
+        # { 'title': title, 'id':id, 'docs': docs, }
+        # docs are a sorted list of document brains
+
+        # get a list of brains for all items of matching type and topic
+        items = self.catalog(portal_type=portal_types, 
+                             getSections=topic, 
+                             path=self.context.getPHCPath())
+        
+        # construct a dict of subtopics under this topic
+        # with a list of matching items as value
+        subtopics = {}
+        for item in items:
+            # Add item to subtopics by section.
+            # Sections should have the format "topic : subtopic"
+            sections = []
+            for s in item.getSections:
+                if s.startswith(topic):
+                    pos = s.find(':')
+                    if pos > 0:
+                        sections.append(s[pos+1:].strip())
+            if sections:
+                for s in sections:
+                    subtopics.setdefault(s, []).append(item)
+            else:
+                subtopics.setdefault('!!!General', []).append(item)
+            
+        # Sort the subtopics
+        keys = subtopics.keys()
+        keys.sort(ncCmp)
+        
+        # organize into an array of dicts with keys: title, id, docs
+        # where docs is a sorted list of docs in section with 'start here' docs at top
+        sorted_list = []
+        for k in keys:
+          title = k.replace('!!!','') # strip off force-alpha
+          id = title.lower().replace(' ','-')  # make HTML anchor ID
+          docs = subtopics[k]
+          docs.sort(itemCmp)
+          sorted_list.append( { 'title': title, 'id':id, 'docs': docs, } )
+        
+        return sorted_list
+
+
+    def getMajorTopics(self):
+        """Returns a sorted list of major sections"""
+
+        topics = {}
+        for topic in self.context.getSectionsVocab():
+            pos = topic.find(':')
+            if pos > 0:
+                topics.setdefault(topic[:pos].strip(), 1)
+            else:
+                topics.setdefault(topic, 1)
+        
+        keys = topics.keys()
+        keys.sort(ncCmp)
+        
+        return keys
+
+
+    def getNonPHCContents(self):
+        """Get a list of folder objects of types not defined by the help
+        center product which have been placed in this help center.
+        """
+        
+        phcTypes = self.context.allowed_content_types
+        allTypes = self.catalog.uniqueValuesFor('portal_type')
+
+        nonPHCTypes = [t for t in allTypes if t not in phcTypes]
+
+        # Need this, else we end up with all types, not no types :)
+        if not nonPHCTypes:
+            return []
+
+        return self.context.getFolderContents(contentFilter = {'portal_type' : nonPHCTypes})
+
+
+    def statsQueryCatalog(self):
+        """
+            Find documentation items based on a statistics query.
+            Used in phc_stats_search.cpt
+        """
+        
+        REQUEST = self.context.REQUEST
+        
+        catalogMatches = self.context.queryCatalog(REQUEST=REQUEST, use_types_blacklist=False)
+        matches = [m for m in catalogMatches]
+        
+        # Now do checks for comments, multiple sections/audiences/versions
+        
+        multipleSections = REQUEST.get('getSections_multiple', False)
+        if multipleSections:
+            matches = [m for m in matches if len(m.getSections) > 1]
+            
+        noSections = REQUEST.get('getSections_none', False)
+        if noSections:
+            matches = [m for m in matches if len(m.getSections) == 0]
+            
+        multipleAudiences = REQUEST.get('getAudiences_multiple', False)
+        if multipleAudiences:
+            matches = [m for m in matches if len(m.getAudiences) > 1]
+        
+        multipleVersions = REQUEST.get('getVersions_multiple', False)
+        if multipleVersions:
+            matches = [m for m in matches if len(m.getVersions) > 1]
+            
+        noVersions = REQUEST.get('getVersions_none', False)
+        if noVersions:
+            matches = [m for m in matches if len(m.getVersions) == 0]
+            
+        hasComments = REQUEST.get('hasComments', False)
+        if hasComments:
+            matchedPaths = [m.getPath() for m in matches]
+            comments = self.catalog.searchResults(path = matchedPaths, 
+                                                  portal_type = 'Discussion Item')
+                                             
+            foundPaths = {}
+            for c in comments:
+                path = c.getPath()
+                idx = path.rfind('/talkback')
+                path = path[:idx]
+                id = path.split('/')[-1]
+                foundPaths[path] = 1
+                
+            matches = [m for m in matches if m.getPath() in foundPaths]
+                
+        return matches
+
+    def searchTypes(self):
+        """
+         Determine which portal_types to search
+         based on the request and our type list.
+        """
+        
+        # get our choice from the form request
+        request = self.context.REQUEST
+        choice = request.form.get("phc_selection",None)
+        
+        # map our sections to our eligible choices
+        choiceTypes={
+            "faq":('HelpCenterFAQ','HelpCenterFAQFolder'),
+            "howto":("HelpCenterHowTo","HelpCenterHowtoFolder"),
+            "tutorial":("HelpCenterTutorial","HelpCenterTutorialFolder", \
+                        "HelpCenterTutorialPage"),
+            "link":("HelpCenterLink","HelpCenterLinkFolder"),
+            "error":("HelpCenterErrorReference","HelpCenterErrorReferenceFolder"),
+            "glossary":("HelpCenterDefinition","HelpCenterGlossary"),
+            "manual":("HelpCenterReferenceManual","HelpCenterReferenceManualFolder", \
+                    "HelpCenterReferenceManualSection","HelpCenterReferenceManualPage"),
+            "video":("HelpCenterInstructionalVideo","HelpCenterInstructionalVideoFolder"),
+        }
+        
+        if choice and choiceTypes.has_key(choice):
+            result = choiceTypes.get(choice)
+        else:
+            # choice must have been "all documentation"
+            result=['HelpCenterFAQ',
+                    'HelpCenterHowTo',
+                    'HelpCenterTutorial',
+                    'HelpCenterTutorialPage',
+                    'HelpCenterLink',
+                    'HelpCenterErrorReference',
+                    'HelpCenterDefinition',
+                    'HelpCenterReferenceManual',
+                    'HelpCenterReferenceManualSection',
+                    'HelpCenterReferenceManualPage',
+                    'HelpCenterInstructionalVideo']
+        
+        return result

Added: gzo/trunk/products/PloneHelpCenter/browser/phcfolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/browser/phcfolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/browser/phcfolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,215 @@
+""" support for HelpCenter container templates """
+
+from Products.Five.browser import BrowserView
+from Products.CMFCore.utils import getToolByName
+from Products.PythonScripts.standard import url_quote_plus
+
+
+# Compare section brains by title
+def _sectionCmp(a, b):
+    # depends on cmp(True, False) == 1
+    ash = getattr(a, 'getStartHere', False)
+    bsh = getattr(b, 'getStartHere', False)
+    if ash == bsh:
+        return cmp(a.Title.lower(), b.Title.lower())
+    elif ash:
+        return -1
+    else:
+        return 1
+
+
+class HelpCenterFolderView(BrowserView):
+    """ support for HelpCenter container templates """
+    
+    def __init__(self, context, request):
+        """ set up a few convenience object attributes """
+        BrowserView.__init__(self, context, request)
+
+
+    def Versions(self):
+        """Method to display the versions in a nicer way."""
+        return ", ".join(getattr(self.context, 'versions', []))
+
+
+    def getItemsBySection(self, section, **kwargs):
+        """Get items in this section"""
+        
+        context = self.context
+        
+        criteria = {}
+        if section == 'No section':
+            items = []
+            for item in context.getFolderContents(contentFilter = kwargs):
+                if not item.getSections:
+                    items.append(item)
+            return items
+        else:
+            criteria['getSections'] = section
+            return context.getFolderContents(contentFilter = criteria)
+
+    def getItemsBySections(self, **kwargs):
+        """Get all items to list, by section only. Returns a list of dicts:
+
+        'id'      : A normalised string representing the section
+        'section' : The name of the section
+        'items'   : A list of catalog brains for items in this section
+
+        The first item will have an section title of 'No section' and contain
+        all items with no section selected.
+        """
+        
+        context = self.context
+        
+        plone_utils = getToolByName(context, 'plone_utils')
+        brains = context.getFolderContents(contentFilter = kwargs)
+
+        charset = context.getCharset()
+
+        # Set up the dicts listing all sections
+        # This is needed because we want it to list the audiences and sections
+        # in the order the vocab specifies them.
+
+        sections = []
+        for s in ['No section'] + list(context.getSectionsVocab()):
+            t = s.encode(charset)
+            sections.append({'id'      : plone_utils.normalizeString(t),
+                             'section' : t,
+                             'items'   : []})
+
+        # Then insert each how-to in the appropriate audience/section
+        for b in brains:
+            itemSections = b.getSections or ['No section']
+            matchedSections = [s for s in sections if s['section'] in itemSections]
+            for s in matchedSections:
+                s['items'].append(b)
+
+        # Finally clean out empty audiences or sections
+        delSections = []
+        for j in range(len(sections)):
+            if len(sections[j]['items']) == 0:
+                delSections.append(j)
+        delSections.reverse()
+        for j in delSections:
+            del sections[j]
+
+        # sort inside sections
+        for j in sections:
+            j['items'].sort(_sectionCmp)
+
+        return sections
+
+
+    def getItemsByAudiencesAndSections(self, **kwargs):
+        """Get all items to list, by audience and section. Returns a list of
+        dicts:
+
+            'audience'  : The name of the audience category
+            'sections'  : A list of dicts:
+
+                'id'      : A normalised string representing the section
+                'section' : The name of the section
+                'items'   : A list of catalog brains for items in this section
+
+        The first item will have an 'audience' title of 'Any audience' and 
+        contain all items with no audience selected.
+        """
+
+        context = self.context
+
+        plone_utils = getToolByName(context, 'plone_utils')
+        brains = context.getFolderContents(contentFilter = kwargs)
+
+        charset = context.getCharset()
+
+        # Set up the dicts listing all audiences + sections
+        # This is needed because we want it to list the audiences and sections
+        # in the order the vocab specifies them.
+        audiences = []
+        for a in ['Any audience'] + list(context.getAudiencesVocab()):
+            sections = []
+            for s in ['No section'] + list(context.getSectionsVocab()):
+                t = s.encode(charset)
+                sections.append({'id'      : plone_utils.normalizeString(t),
+                                 'section' : t,
+                                 'items'   : []})
+            audiences.append({'id'       : plone_utils.normalizeString(a),
+                              'audience' : a,
+                              'sections' : sections})
+
+        # Then insert each how-to in the appropriate audience/section
+        for b in brains:
+            itemSections = [s for s in b.getSections if s]
+            if not itemSections:
+                itemSections = ['No section']
+            else:
+                # we don't want to display an item under both a major and minor
+                # section. Presence of a colon indicates a subsection.
+                for section in itemSections[:]:
+                    cpos = section.find(':')
+                    if cpos > 0:
+                        try:
+                            itemSections.remove(section[:cpos])
+                        except ValueError:
+                            pass
+
+            itemAudiences = b.getAudiences or ['Any audience']            
+            matchedAudiences = [a for a in audiences if a['audience'] in itemAudiences]
+            if not matchedAudiences:
+                # put it in 'Any audience'
+                matchedAudiences = [audiences[0]]
+            for a in matchedAudiences:
+                matchedSections = [s for s in a['sections'] if s['section'] in itemSections]
+                if not matchedSections:
+                    # put it in 'No section'
+                    matchedSections = [a['sections'][0]]
+                for s in matchedSections:
+                    s['items'].append(b)
+
+        # Finally clean out empty audiences or sections
+        delAudiences = []
+        for i in range(len(audiences)):
+            a = audiences[i]
+            delSections = []
+            for j in range(len(a['sections'])):
+                if len(a['sections'][j]['items']) == 0:
+                    delSections.append(j)
+            delSections.reverse()
+            for j in delSections:
+                del a['sections'][j]
+            if len(a['sections']) == 0:
+                delAudiences.append(i)
+        delAudiences.reverse()
+        for i in delAudiences:
+            del audiences[i]
+
+        # sort inside sections            
+        for a in audiences:
+            for s in a['sections']:
+                s['items'].sort(_sectionCmp)
+
+        return audiences
+
+
+    def getSectionsToList(self, **kwargs):
+        """Sections that have at least one listable item. Note that this does 
+        not take account of audiences.
+
+        May return [] if there are no sections in the vocabulary
+        """
+
+        context = self.context
+
+        sections = {}
+        allSections = context.getSectionsVocab()
+
+        if len(allSections) == 0:
+            return []
+
+        max_sections = len(allSections)
+
+        for o in context.getFolderContents(contentFilter = kwargs):
+            for s in o.getSections:
+                sections[s]=1
+            if len(sections) == max_sections:
+                break
+        return [s for s in allSections if sections.has_key(s)]

Added: gzo/trunk/products/PloneHelpCenter/compile-locales.sh
===================================================================
--- gzo/trunk/products/PloneHelpCenter/compile-locales.sh	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/compile-locales.sh	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Compile .po files present in locales directory
+
+find ./locales/ -name *.po | sed -e 's/\(.*\)\.po/\/usr\/bin\/msgfmt -o \1.mo \1.po/' | xargs --replace=cmd /bin/sh -c "cmd"
+


Property changes on: gzo/trunk/products/PloneHelpCenter/compile-locales.sh
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/config.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/config.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/config.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,71 @@
+try:
+    from Products.CMFCore.permissions import AddPortalContent
+    from Products.CMFCore.permissions import setDefaultRoles
+except ImportError:    
+    from Products.CMFCore.CMFCorePermissions import AddPortalContent
+    from Products.CMFCore.CMFCorePermissions import setDefaultRoles
+from Products.Archetypes.public import DisplayList
+
+ADD_CENTER_PERMISSION = 'PloneHelpCenter: Add Plone Help Center'
+ADD_CONTENT_PERMISSION = AddPortalContent
+ADD_HELP_AREA_PERMISSION = 'PloneHelpCenter: Add Help Center Area'
+ADD_DOCUMENTATION_PERMISSION = 'PloneHelpCenter: Add Documentation'
+
+# Let members by default be allowed to add documentation, and managers only
+# be able to add new documentation areas
+setDefaultRoles(ADD_CENTER_PERMISSION, ('Manager',))
+setDefaultRoles(ADD_HELP_AREA_PERMISSION, ('Manager', 'Owner',))
+setDefaultRoles(ADD_DOCUMENTATION_PERMISSION, ('Manager', 'Member',))
+
+PROJECTNAME = "PloneHelpCenter"
+SKINS_DIR = 'skins'
+
+GLOBALS = globals()
+
+DEFAULT_CONTENT_TYPES = {
+    'default_output_type': 'text/html',
+    'default_content_type': 'text/html',
+    'allowable_content_types': ('text/plain',
+                                'text/restructured',
+                                'text/html',
+                                'text/structured',)
+    }
+
+# A bug in CMF 2.1 prevents setting default discussion.
+# If this gets fixed, we can turn this back on here
+# and in the individual content types.
+# IS_DISCUSSABLE = True
+
+# The Rights DC metadata attribute (copyright) can be disabled on each content
+# item, with the value for all items being set at the root HelpCenter level.
+# Set GLOBAL_RIGHTS to 0 to turn this feature off.
+GLOBAL_RIGHTS = 1
+
+# here you can specify which types are allowed as references.
+REFERENCEABLE_TYPES = ('HelpCenterFAQ',
+    'HelpCenterDefinition',
+    'HelpCenterTutorial',
+    'HelpCenterErrorReference',
+    'HelpCenterHowTo',
+    'HelpCenterLink',
+    #'Document'
+)
+
+IMAGE_SIZES = {
+    'preview': (400, 400),
+    'thumb': (128, 128),
+    'tile': (64, 64),
+    'icon': (32, 32),
+    'listing': (16, 16),
+    }
+
+# Path to HelpCenter How-to
+MANUAL_PATH        = 'doc/PHCManual.stx'
+MANUAL_MIMETYPE    = 'text/structured'
+MANUAL_ID          = 'use-help-center'
+MANUAL_TITLE       = 'How to use this resource'
+MANUAL_DESCRIPTION = 'A brief description of how you use and contribute to the Help Center.'
+MANUAL_SECTION     = 'General'
+
+# These are the types for which we'll support topic searches and views
+TOPIC_VIEW_TYPES = ['HelpCenterTutorial','HelpCenterReferenceManual','HelpCenterHowTo']

Added: gzo/trunk/products/PloneHelpCenter/configure.zcml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/configure.zcml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/configure.zcml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,36 @@
+<configure  xmlns="http://namespaces.zope.org/zope"
+            xmlns:five="http://namespaces.zope.org/five"
+	        xmlns:gs="http://namespaces.zope.org/genericsetup"
+            xmlns:i18n="http://namespaces.zope.org/i18n"
+            i18n_domain="plonehelpcenter">
+
+  <include package=".browser" />
+
+  <i18n:registerTranslations directory="locales"/>
+
+  <gs:registerProfile
+	name="default"
+    title="PloneHelpCenter"
+	directory="profiles/default"
+	description="What's powering the documentation section on plone.org"
+	provides="Products.GenericSetup.interfaces.EXTENSION"
+	/>
+
+  <five:deprecatedManageAddDelete class=".content.HelpCenter.HelpCenter" />
+  <five:deprecatedManageAddDelete class=".content.FAQFolder.HelpCenterFAQFolder" />
+  <five:deprecatedManageAddDelete class=".content.HowToFolder.HelpCenterHowToFolder" />
+  <five:deprecatedManageAddDelete class=".content.TutorialFolder.HelpCenterTutorialFolder" />
+  <five:deprecatedManageAddDelete class=".content.ReferenceManualFolder.HelpCenterReferenceManualFolder" />
+  <five:deprecatedManageAddDelete class=".content.ErrorReferenceFolder.HelpCenterErrorReferenceFolder" />
+  <five:deprecatedManageAddDelete class=".content.LinkFolder.HelpCenterLinkFolder" />
+  <five:deprecatedManageAddDelete class=".content.Glossary.HelpCenterGlossary" />
+  <five:deprecatedManageAddDelete class=".content.HowTo.HelpCenterHowTo" />
+  <five:deprecatedManageAddDelete class=".content.Tutorial.HelpCenterTutorial" />
+  <five:deprecatedManageAddDelete class=".content.TutorialPage.HelpCenterTutorialPage" />
+  <five:deprecatedManageAddDelete class=".content.ErrorReference.HelpCenterErrorReference" />
+  <five:deprecatedManageAddDelete class=".content.FAQ.HelpCenterFAQ" />
+  <five:deprecatedManageAddDelete class=".content.Definition.HelpCenterDefinition" />
+  <five:deprecatedManageAddDelete class=".content.Link.HelpCenterLink" />
+
+
+</configure>

Added: gzo/trunk/products/PloneHelpCenter/content/Definition.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/Definition.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/Definition.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,64 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema, GenericHelpCenterItemSchema
+from PHCContent import PHCContent
+
+DefinitionSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        primary=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=AttributeStorage(), # Needed for HistoryAwareMixin
+        widget = TextAreaWidget(
+                    description = 'An explanation of the term.',
+                    description_msgid = "phc_desc_definition",
+                    label = "Definition",
+                    label_msgid = "phc_label_definition",
+                    rows = 5,
+                    i18n_domain = "plonehelpcenter",
+                    )
+        ),
+    ),) + GenericHelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+DefinitionSchema.moveField('subject', pos='bottom')
+DefinitionSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterDefinition(PHCContent,BaseContent):
+    """A Definition defines a special term, and will be listed in the glossary.
+    """
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseContent.__implements__,)
+
+    content_icon = 'glossary_icon.gif'
+
+    schema = DefinitionSchema
+    archetype_name = 'Definition'
+    meta_type = 'HelpCenterDefinition'
+    global_allow = 0
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'A Definition defines a special term, and will be listed in the glossary.'
+    typeDescMsgId  = 'description_edit_definition'
+
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)' : 'definition_view',
+    #                 'view'      : 'definition_view'})
+
+registerType(HelpCenterDefinition, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/ErrorReference.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ErrorReference.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ErrorReference.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,96 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, GenericHelpCenterItemSchema
+from PHCContent import PHCContent
+from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder
+
+ErrorReferenceSchema = HelpCenterBaseSchemaFolderish + Schema((
+
+    TextField('description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget = TextAreaWidget(
+                  description = "Enter a brief description.",
+                  description_msgid = "phc_desc_ErrorReference",
+                  label = "Description",
+                  label_msgid = "phc_label_ErrorReference",
+                  rows = 5,
+                  i18n_domain = "plonehelpcenter",
+                  ),
+        ),
+        
+    TextField('body',
+        searchable=1,
+        required=1,
+        primary=1,
+        widget=RichWidget(description_msgid='phc_desc_body_ErrorReference',
+            description='Explanation of the error.',
+            label_msgid='phc_label_body_ErrorReference',
+            label='Body',
+            i18n_domain = "plonehelpcenter",
+            rows=25,
+            ),
+
+        **DEFAULT_CONTENT_TYPES
+        ),
+    ),) + GenericHelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+ErrorReferenceSchema.moveField('subject', pos='bottom')
+ErrorReferenceSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterErrorReference(PHCContent,OrderedBaseFolder):
+    """An Error Reference can be used to explain a particular error which may 
+    arise.
+    """ 
+
+    __implements__ = (PHCContent.__implements__,
+                      OrderedBaseFolder.__implements__,
+                      INonStructuralFolder)
+
+
+    content_icon = 'errorref_icon.gif'
+
+    schema = ErrorReferenceSchema
+    archetype_name = 'Error Reference'
+    meta_type = 'HelpCenterErrorReference'
+    global_allow = 0
+    filter_content_types = 1
+    # allow_discussion = IS_DISCUSSABLE
+    allowed_content_types = ('Image', 'File',)
+
+    typeDescription= 'An Error Reference can be used to explain a particular error which may arise.'
+    typeDescMsgId  = 'description_edit_errorreference'
+
+    actions = PHCContent.actions + (
+        {
+            'id': 'attachments',
+            'name': 'Attachments',
+            'action': 'string:${object_url}/attachments',
+            'permissions': (CMFCorePermissions.ModifyPortalContent,)
+        },
+    )
+
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)'   : 'errorreference_view',
+    #                 'view'        : 'errorreference_view',
+    #                 'attachments' : 'phc_attachments'})
+
+    security = ClassSecurityInfo()
+
+registerType(HelpCenterErrorReference, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/ErrorReferenceFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ErrorReferenceFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ErrorReferenceFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,64 @@
+#
+# The Plone How-to container.
+#
+# The main goals of these containers are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+ErrorReferenceFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField('description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+            description_msgid="description_edit_ErrorReferenceFolder",
+            description="Description for the Error Reference section.",
+            label_msgid="description_label_ErrorReferenceFolder",
+            label="Description",
+            i18n_domain = "plonehelpcenter",
+            rows=6)
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterErrorReferenceFolder(PHCFolder,BaseFolder):
+    """An Error Reference Section can contain references to and explanations of 
+    common errors.
+    """
+
+    content_icon = 'errorref_icon.gif'
+
+    schema = ErrorReferenceFolderSchema
+    archetype_name = 'Error Reference Section'
+    meta_type = 'HelpCenterErrorReferenceFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterErrorReference', )
+
+    typeDescription= 'An Error Reference Section can contain references to and explanations of common errors.'
+    typeDescMsgId  = 'description_edit_errorreferencefolder'
+
+    security = ClassSecurityInfo()
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'errorreferencefolder_view',
+    #                 'view'      : 'errorreferencefolder_view'})
+
+registerType(HelpCenterErrorReferenceFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/FAQ.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/FAQ.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/FAQ.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,77 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema, GenericHelpCenterItemSchema
+from PHCContent import PHCContent
+
+FAQSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=0,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description = 'More details on the question, if not evident from the title.',
+                description_msgid = "help_detailed_question",
+                label = "Detailed Question",
+                label_msgid = "label_detailed_question",
+                rows = 5,
+                i18n_domain = "plonehelpcenter",
+                ),
+        ),
+        
+    TextField(
+        'answer',
+        required=1,
+        searchable=1,
+        primary=1,
+        widget=RichWidget(
+                label_msgid = "label_answer",
+                i18n_domain = "plonehelpcenter",
+                rows=10),
+        **DEFAULT_CONTENT_TYPES
+        ),
+    ),) + GenericHelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+FAQSchema.moveField('subject', pos='bottom')
+FAQSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterFAQ(PHCContent,BaseContent):
+    """A Frequently Asked Question defines a common question with an answer - 
+    this is a place to document answers to common questions, not ask them.
+    """
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseContent.__implements__,)
+
+    content_icon = 'faq_icon.gif'
+
+    schema = FAQSchema
+    archetype_name = 'FAQ'
+    meta_type = 'HelpCenterFAQ'
+    global_allow = 0
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'A Frequently Asked Question defines a common question with an answer - this is a place to document answers to common questions, not ask them.'
+    typeDescMsgId  = 'description_edit_faq'
+
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)' : 'faq_view',
+    #                 'view'      : 'faq_view'})
+
+
+registerType(HelpCenterFAQ, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/FAQFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/FAQFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/FAQFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,60 @@
+#
+#  This is the Plone Help Center FAQ Folder type, with enhanced features
+#  like dividing the FAQ into Sections, and Display relevant
+#  versions.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+FAQFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField('description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description="Description of the FAQ Container.",
+                description_msgid="phc_desc_folder",
+                label_msgid="phc_label_folder",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,)
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterFAQFolder(PHCFolder,OrderedBaseFolder):
+    """An FAQ Section can hold frequently asked questions with answers."""
+
+    content_icon = 'faq_icon.gif'
+
+    schema = FAQFolderSchema
+    archetype_name = 'FAQ Section'
+    meta_type = 'HelpCenterFAQFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterFAQ', )
+
+    security = ClassSecurityInfo()
+
+    typeDescription= 'An FAQ Section can hold frequently asked questions with answers.'
+    typeDescMsgId  = 'description_edit_faqfolder'
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'faqfolder_view',
+    #                 'view'      : 'faqfolder_view'})
+
+registerType(HelpCenterFAQFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/Glossary.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/Glossary.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/Glossary.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,64 @@
+#
+#  This is the Plone Help Center folderish Glossary type, which
+#  is a simple container that has Definitions.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+GlossarySchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        primary=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description="Description of the Glossary.",
+                description_msgid="phc_desc_folder_glossary",
+                label_msgid="phc_label_folder_glossary",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows= 6,
+                )
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterGlossary(PHCFolder,OrderedBaseFolder):
+    """A Glossary can be used to hold definitions of common terms, listing them 
+    in a dictionary-like manner.
+    """
+
+    content_icon = 'glossary_icon.gif'
+
+    schema = GlossarySchema
+    archetype_name = 'Glossary'
+    meta_type = 'HelpCenterGlossary'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterDefinition', )
+
+    typeDescription= 'A Glossary can be used to hold definitions of common terms, listing them in a dictionary-like manner.'
+    typeDescMsgId  = 'description_edit_glossary'
+
+    security = ClassSecurityInfo()
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'glossary_view',
+    #                 'view'      : 'glossary_view'})
+
+registerType(HelpCenterGlossary, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/HelpCenter.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/HelpCenter.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/HelpCenter.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,416 @@
+#
+# The Plone Help Center container.
+#
+# A Help Center is pre-populated with the following folders:
+#
+# /faq - contains the FAQ objects
+# /how-to - contains the How-tos
+# /tutorial - contains the tutorials
+# /reference - contains the reference manuals
+# /error - contains the error references
+# /link - contains the links to other documentation
+# /glossary - contains the definitions
+# /video - contains video files for training/instruction
+# /manual - contains reference manuals
+#
+# The main goals of these folders are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+
+import transaction
+
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+    
+from zope.interface import implements
+from Products.PloneHelpCenter.interfaces import IHelpCenterContent
+
+from Products.CMFCore.WorkflowCore import WorkflowException
+from Products.CMFCore.utils import getToolByName
+from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin, fti_meta_type
+from AccessControl import ClassSecurityInfo
+from Products.PloneHelpCenter.config import *
+from Products.CMFPlone.utils import _createObjectByType
+
+import os
+from Globals import package_home
+
+try:
+    set
+except NameError:
+    from sets import Set as set
+
+HCRootSchema = BaseFolderSchema + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="phc_desc_helpcenter",
+                description="Description for the Help Center.",
+                label_msgid="phc_label_desc_helpcenter",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,
+                ),
+        ),
+
+    LinesField(
+        'audiencesVocab',
+        accessor='getAudiencesVocab',
+        edit_accessor='getRawAudiencesVocab',
+        mutator='setAudiencesVocab',
+        required=0,
+        languageIndependent=1,
+        widget=LinesWidget(
+                description_msgid="phc_audience_helpcenter",
+                description="One type of audience on each line. If you leave this blank, audience information will not be used. Audience is typically 'End user', 'Developer' and similar.",
+                label="Documentation Audiences",
+                label_msgid="phc_label_audience_helpcenter",
+                i18n_domain = "plonehelpcenter",
+                ),
+        ),
+
+    LinesField(
+        'versionsVocab',
+        accessor='getVersionsVocab',
+        edit_accessor='getRawVersionsVocab',
+        mutator='setVersionsVocab',
+        required=0,
+        languageIndependent=1,
+        widget=LinesWidget(
+                description_msgid="phc_version_helpcenter",
+                description="One version on each line, if you're documenting different versions of software. If you leave this blank, version information will not be used.",
+                label="Versions",
+                label_msgid="phc_label_version_helpcenter",
+                i18n_domain = "plonehelpcenter",
+                ),
+        ),
+
+    LinesField(
+        'currentVersions',
+        required=0,
+        multiValued=1,
+        languageIndependent=1,
+        vocabulary='getVersionsVocab',
+        widget=MultiSelectionWidget(
+            description_msgid="phc_current_versions_helpcenter",
+            description="Readers will be informed when content relates to versions not in this list, as it may be outdated.",
+            label="Current Versions",
+            label_msgid="phc_label_current_versions_helpcenter",
+            i18n_domain = "plonehelpcenter",
+            ),
+        ),
+
+    LinesField(
+        'sectionsVocab',
+        accessor='getSectionsVocab',
+        edit_accessor='getRawSectionsVocab',
+        mutator='setSectionsVocab',
+        widget=LinesWidget(
+           label="Sections",
+           description="One section on each line. Used for grouping items. May be overriden in individual help center folders.",
+           description_msgid = "phc_topsections_vocab",
+           label_msgid = "phc_label_sections-vocab",
+           i18n_domain="plonehelpcenter",
+           rows=6,
+           )
+        ),
+
+    TextField(
+        'rights',
+        accessor="Rights",
+        widget=TextAreaWidget(
+                label='Copyright',
+                description="Copyright info for all content in the helpcenter.",
+                label_msgid="phc_label_copyrights_helpcenter",
+                description_msgid="phc_copyrights_helpcenter",
+                i18n_domain="plonehelpcenter"
+                ),
+        ),
+    
+    BooleanField(
+        'constrainSearches',
+        default=1,
+        required=0,
+        languageIndependent=1,
+        widget=BooleanWidget(
+                label='Constrain Searches',
+                description="""Constrain the results of Help Center searches to this document area. 
+                    Turn this off to search the entire site.
+                    This affects only the Help Center's search facility, not the global search.
+                """,
+                label_msgid="phc_label_constrainSearches_helpcenter",
+                description_msgid="phc_constrainSearches_helpcenter",
+                i18n_domain="plonehelpcenter"
+            ),
+        ),
+    ),)
+
+
+class HelpCenter(BrowserDefaultMixin, OrderedBaseFolder):
+    """A simple folderish archetype"""
+    
+    implements(IHelpCenterContent)
+    
+    schema = HCRootSchema
+
+    content_icon = 'helpcenter_icon.gif'
+
+    # Not really needed any longer, and is causing
+    # problems when schema updates.
+    # _properties = OrderedBaseFolder._properties +  (
+    #     {'id'    : 'right_slots',
+    #      'type'  : 'lines',
+    #      'mode'  : 'rw',
+    #      'label' : 'Right slots'
+    #      },
+    #      )
+
+    archetype_name = 'Help Center'
+    meta_type = 'HelpCenter'
+    filter_content_types = 1
+    _at_rename_after_creation = True
+
+    allowed_content_types = ('HelpCenterFAQFolder',
+                             'HelpCenterHowToFolder',
+                             'HelpCenterTutorialFolder',
+                             'HelpCenterReferenceManualFolder',
+                             'HelpCenterLinkFolder',
+                             'HelpCenterErrorReferenceFolder',
+                             'HelpCenterGlossary',
+                             
+                             # XXX: Video type not yet finished
+                             'HelpCenterInstructionalVideoFolder',
+                             )
+
+    security = ClassSecurityInfo()
+
+    default_view = 'helpcenter_view'
+    suppl_views = ('helpcenter_topicview', 'helpcenter_topicview_main',)
+
+    actions = (
+        {'id'          : 'view',
+         'name'        : 'View',
+         'action'      : 'string:${object_url}',
+         'permissions' : (CMFCorePermissions.View,)
+         },
+        {'id'          : 'edit',
+         'name'        : 'Edit',
+         'action'      : 'string:${object_url}/edit',
+         'permissions' : (CMFCorePermissions.ModifyPortalContent,),
+         },
+        {'id'          : 'metadata',
+         'name'        : 'Properties',
+         'action'      : 'string:${object_url}/properties',
+         'permissions' : (CMFCorePermissions.ModifyPortalContent,),
+         },
+        {'id'          : 'local_roles',
+         'name'        : 'Sharing',
+         'action'      : 'string:${object_url}/sharing',
+         'permissions' : (CMFCorePermissions.ManageProperties,),
+         },
+        {'id'          : 'stats',
+         'name'        : 'Statistics',
+         'action'      : 'string:${object_url}/stats',
+         'permissions' : (CMFCorePermissions.ManageProperties,),
+         },
+        )
+
+    aliases = {
+        '(Default)'  : '(dynamic view)',
+        'view'       : '(selected layout)',
+        'index.html' : '',
+        'edit'       : 'base_edit',
+        'properties' : 'base_metadata',
+        'sharing'    : 'folder_localrole_form',
+        'stats'      : 'phc_stats',
+        'gethtml'    : '',
+        'mkdir'      : '',
+        }
+
+    def initializeArchetype(self, **kwargs):
+        """Pre-populate the help center folder with its basic folders. Also
+        add a standard how-to-use-this-resource help page. The body text of
+        this is found in docs/PHCManual.stx.
+        """
+        OrderedBaseFolder.initializeArchetype(self,**kwargs)
+
+        # Set right_slots to empty
+        self.manage_changeProperties(right_slots=[])
+
+        if 'faq' not in self.objectIds():
+            _createObjectByType('HelpCenterFAQFolder',self, 'faq')
+            obj = self['faq']
+            obj.setTitle(self.translate(
+                    msgid='phc_faq_title',
+                    domain='plonehelpcenter',
+                    default='FAQs'))
+            obj.setDescription(self.translate(
+                    msgid='phc_faq_description',
+                    domain='plonehelpcenter',
+                    default='Frequently Asked Questions'))
+            obj.reindexObject()
+
+        if 'how-to' not in self.objectIds():
+            _createObjectByType('HelpCenterHowToFolder',self, 'how-to')
+            obj = self['how-to']
+            obj.setTitle(self.translate(
+                    msgid='phc_howto_title',
+                    domain='plonehelpcenter',
+                    default='How-tos'))
+            self['how-to'].setDescription(self.translate(
+                    msgid='phc_howto_description',
+                    domain='plonehelpcenter',
+                    default='Step-by-step instructions.'))
+            obj.reindexObject()
+
+        if 'tutorial' not in self.objectIds():
+            _createObjectByType('HelpCenterTutorialFolder',self, 'tutorial')
+            obj = self['tutorial']
+            obj.setTitle(self.translate(
+                    msgid='phc_tutorial_title',
+                    domain='plonehelpcenter',
+                    default='Tutorials'))
+            obj.setDescription(self.translate(
+                    msgid='phc_tutorial_description',
+                    domain='plonehelpcenter',
+                    default='Detailed tutorials.'))
+            obj.reindexObject()
+
+        if 'manual' not in self.objectIds():
+            _createObjectByType('HelpCenterReferenceManualFolder',self, 'manual')
+            obj = self['manual']
+            obj.setTitle(self.translate(
+                    msgid='phc_referencemanual_title',
+                    domain='plonehelpcenter',
+                    default='Reference Manuals'))
+            obj.setDescription(self.translate(
+                    msgid='phc_referencemanual_description',
+                    domain='plonehelpcenter',
+                    default='Reference manuals for larger projects.'))
+            obj.reindexObject()
+
+        # XXX: Video type is not yet finished
+        # if 'video' not in self.objectIds():
+        #    self.invokeFactory('HelpCenterInstructionalVideoFolder','video')
+        #    obj = self['video']
+        #    obj.setTitle(self.translate(
+        #            msgid='phc_video_title',
+        #            domain='plonehelpcenter',
+        #            default='Videos'))
+        #    obj.setDescription(self.translate(
+        #            msgid='phc_video_description',
+        #            domain='plonehelpcenter',
+        #            default='Instructional videos.'))
+        #    obj.reindexObject()
+
+        if 'error' not in self.objectIds():
+            _createObjectByType('HelpCenterErrorReferenceFolder',self, 'error')
+            obj = self['error']
+            obj.setTitle(self.translate(
+                    msgid='phc_errorreference_title',
+                    domain='plonehelpcenter',
+                    default='Error References'))
+            obj.setDescription(self.translate(
+                    msgid='phc_errorreference_description',
+                    domain='plonehelpcenter',
+                    default='Error reference section.'))
+            obj.reindexObject()
+
+        if 'link' not in self.objectIds():
+            _createObjectByType('HelpCenterLinkFolder',self, 'link')
+            obj = self['link']
+            obj.setTitle(self.translate(
+                    msgid='phc_links_title',
+                    domain='plonehelpcenter',
+                    default='Links'))
+            obj.setDescription(self.translate(
+                    msgid='phc_links_description',
+                    domain='plonehelpcenter',
+                    default='Links section.'))
+            obj.reindexObject()
+
+        if 'glossary' not in self.objectIds():
+            _createObjectByType('HelpCenterGlossary',self, 'glossary')
+            obj = self['glossary']
+            obj.setTitle(self.translate(
+                    msgid='phc_glossary_title',
+                    domain='plonehelpcenter',
+                    default='Glossary Definitions'))
+            obj.setDescription(self.translate(
+                    msgid='phc_glossary_description',
+                    domain='plonehelpcenter',
+                    default='Glossary of terms.'))
+            obj.reindexObject()
+
+        transaction.savepoint(optimistic=True)
+
+        # Add how-to-use-this-resource how-to
+        if MANUAL_ID not in self['how-to'].objectIds():
+            manualPath = os.path.join(package_home(GLOBALS), MANUAL_PATH)
+            try:
+                manualFile = open(manualPath, 'r')
+                manualText = manualFile.read()
+                manualFile.close()
+            except IOError:
+                # Silently ignore if we can't open/read the file
+                pass
+            else:
+                # XXX: With the factory on, this causes an AttributeError
+    
+                self['how-to'].invokeFactory('HelpCenterHowTo', MANUAL_ID)
+                manual = getattr(self['how-to'], MANUAL_ID)
+                manual.setTitle(MANUAL_TITLE)
+                manual.setDescription(MANUAL_DESCRIPTION)
+                manual.setSections([MANUAL_SECTION])
+                manual.setBody(manualText, mimetype = MANUAL_MIMETYPE)
+                manual.reindexObject()
+    
+                # Publish it
+                wftool = getToolByName(self, 'portal_workflow')
+                try:
+                    wftool.doActionFor(manual, 'publish')
+                except WorkflowException:
+                    wftool.doActionFor(manual, 'submit')
+
+
+    ##############
+    # the following methods are meant to be used in an enclosed object
+    # that is invoking the method by aquisition.        
+
+    security.declareProtected(CMFCorePermissions.View, 'getPHCObject')
+    def getPHCObject(self):
+        """return the enclosing PHC object"""
+        
+        return self
+        
+
+    security.declareProtected(CMFCorePermissions.View, 'getPHCUrl')
+    def getPHCUrl(self):
+        """return the enclosing PHC object URL"""
+        
+        return self.absolute_url()
+        
+
+    security.declareProtected(CMFCorePermissions.View, 'getPHCPath')
+    def getPHCPath(self):
+        """return the enclosing PHC object path as a string"""
+        
+        return '/'.join(self.getPhysicalPath())
+
+
+
+registerType(HelpCenter, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/HowTo.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/HowTo.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/HowTo.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,131 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterItemSchema
+from PHCContent import PHCContent
+from Products.CMFPlone.interfaces.NonStructuralFolder import INonStructuralFolder
+
+from zope import event
+try:
+    from zope.lifecycleevent import ObjectModifiedEvent
+except ImportError:
+    from zope.app.event.objectevent import ObjectModifiedEvent
+
+
+HowToSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+            description = 'Brief explanation of the How To.',
+            description_msgid = "phc_help_detailed_howto",
+            label = "Summary",
+            label_msgid = "phc_label_detailed_howto",
+            i18n_domain = "plonehelpcenter",
+            ),
+        ),
+
+    TextField(
+        'body',
+        searchable=1,
+        required=1,
+        primary=1,
+        accessor='getBody',
+        widget=RichWidget(
+            description_msgid='phc_desc_howto_body',
+            description='The text of the Howto',
+            label_msgid='phc_body',
+            label='Body',
+            i18n_domain = "plonehelpcenter",
+            rows=25,
+            ),
+
+        **DEFAULT_CONTENT_TYPES
+        ),
+    ),) + HelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+HowToSchema.moveField('subject', pos='bottom')
+HowToSchema.moveField('relatedItems', pos='bottom')
+
+MAPPING = {'text_html' : 'text/html'}
+
+# TODO: Generalize and i18nize
+def addHelpCenterHowTo(self, id, **kwargs):
+    obj = HelpCenterHowTo(id)
+    self._setObject(id, obj)
+    obj = self._getOb(id)
+    obj.initializeArchetype(**kwargs)
+    event.notify(ObjectModifiedEvent(obj))
+    #setattr(obj, 'body', howto_template)
+    # we need to get the template from the skin, so that it's customizable
+    template = getattr(self, 'HowToTemplate', None)
+    if template is not None:
+        setattr(obj, 'body', template(self))
+    return obj.getId()
+
+class HelpCenterHowTo(PHCContent,BaseFolder):
+    """A How-to is a document describing how to address a single, common 
+    use-case or issue. You may add images and files as attachments.
+    """
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseFolder.__implements__,
+                      INonStructuralFolder)
+
+    content_icon = 'howto_icon.gif'
+
+    typeDescription= 'A How-to is a document describing how to address a single, common use-case or issue. You may add images and files as attachments.'
+    typeDescMsgId  = 'description_edit_howto'
+
+
+    schema = HowToSchema
+    archetype_name = 'How-to'
+    meta_type = 'HelpCenterHowTo'
+    global_allow = 0
+    filter_content_types = 1
+    # allow_discussion = IS_DISCUSSABLE
+    allowed_content_types = ('Image', 'File',)
+    default_view = 'howto_view'
+
+    # actions = PHCContent.actions + (
+    #     {
+    #         'id': 'attachments',
+    #         'name': 'Attachments',
+    #         'action': 'string:${object_url}/attachments',
+    #         'permissions': (CMFCorePermissions.ModifyPortalContent,)
+    #         },
+    # )
+    # 
+    # 
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)'   : 'howto_view',
+    #                 'view'        : 'howto_view',
+    #                 'attachments' : 'phc_attachments'})
+
+    security = ClassSecurityInfo()
+
+    def getText(self):
+        return 'nisse'
+
+    security.declareProtected(CMFCorePermissions.ModifyPortalContent, 'setFormat')
+    def setFormat(self, value):
+        value = MAPPING.get(value, value)
+        BaseFolder.setFormat(self, value)
+
+registerType(HelpCenterHowTo, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/HowToFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/HowToFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/HowToFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,63 @@
+#
+# The Plone How-to container.
+#
+# The main goals of these containers are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+HowToFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="phc_desc_howto_folder",
+                description="Description for the How-to section.",
+                label_msgid="phc_label_howto_folder",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,
+                )
+        ),
+    )) + HelpCenterContainerSchema
+
+class HelpCenterHowToFolder(PHCFolder,OrderedBaseFolder):
+    """A How-to Section can contain how-to documents."""
+
+    content_icon = 'topic_icon.gif'
+
+    schema = HowToFolderSchema
+    archetype_name = 'How-to Section'
+    meta_type = 'HelpCenterHowToFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterHowTo', )
+
+    typeDescription= 'A How-to Section can contain how-to documents.'
+    typeDescMsgId  = 'description_edit_howtofolder'
+
+    security = ClassSecurityInfo()
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'howtofolder_view',
+    #                 'view'      : 'howtofolder_view'})
+
+registerType(HelpCenterHowToFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/InstructionalVideo.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/InstructionalVideo.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/InstructionalVideo.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,135 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema, GenericHelpCenterItemSchema
+from PHCContent import PHCContent
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+
+InstructionalVideoSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        required=1,
+        searchable=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                 description = "Brief explanation of the video's content.",
+                 description_msgid = "phc_help_detailed_video",
+                 label = "Summary",
+                 label_msgid = "phc_label_detailed_video",
+                 i18n_domain = "plonehelpcenter"
+              ),
+        ),
+        
+    FileField(
+        'video_file',
+        required=1,
+        primary=1,
+        widget=FileWidget(
+            description="Click 'Browse' to upload a Flash .swf file.",
+            description_msgid="phc_help_videofile_description",
+            label="Flash File (.swf)",
+            label_msgid="phc_label_videofile_description",
+            i18n_domain="plonehelpcenter",
+            ),
+        ),
+
+    ImageField(
+        'screenshot',
+        required=0,
+        sizes=IMAGE_SIZES,
+        widget=ImageWidget(
+            label='Screenshot',
+            label_msgid='phc_label_video_screenshot',
+            description='Add a screenshot by clicking the \'Browse\' '
+                          'button. Add a screenshot that highlights the '
+                          'content of the instructional video.',
+            description_msgid='phc_help_video_screenshot',
+            i18n_domain='plonehelpcenter',
+            ),
+        ),
+
+    StringField(
+        'duration',
+        required=0,
+        widget=StringWidget(
+            description_msgid='phc_help_video_duration',
+            description='Length (in minutes) of the video.',
+            label_msgid='phc_label_video_duration',
+            label='Duration',
+            i18n_domain='plonehelpcenter',
+            ),
+        ),
+
+    IntegerField(
+        'width',
+        required=0,
+        default='800',
+        validators=('isInt',),
+        widget=IntegerWidget(
+            description_msgid='phc_help_video_width',
+            description='Width of the video.',
+            label_msgid='phc_label_video_width',
+            label='Width',
+            i18n_domain='plonehelpcenter',
+            ),
+        ),
+
+    IntegerField(
+        'height',
+        required=0,
+        default='600',
+        validators=('isInt',),
+        widget=IntegerWidget(
+            description_msgid='phc_help_video_height',
+            description='Height of the video.',
+            label_msgid='phc_label_video_height',
+            label='Height',
+            i18n_domain='plonehelpcenter',
+            ),
+        ),
+    ),
+
+    marshall=PrimaryFieldMarshaller(),
+
+    ) + GenericHelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+InstructionalVideoSchema.moveField('subject', pos='bottom')
+InstructionalVideoSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterInstructionalVideo(PHCContent,BaseContent):
+    """This is an Instructional Video content type, to which you can attach 
+    movies and other relevant files.
+    """
+
+    content_icon = 'movie_icon.gif'
+
+    schema = InstructionalVideoSchema
+    archetype_name = 'Video'
+    meta_type = 'HelpCenterInstructionalVideo'
+    global_allow = 0
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'An Instructional Video can be used to upload Flash instructional videos.'
+    typeDescMsgId  = 'description_edit_instructionalvideo'
+
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)' : 'ivideo_view',
+    #                 'view'      : 'ivideo_view'})
+
+    security = ClassSecurityInfo()
+
+registerType(HelpCenterInstructionalVideo, PROJECTNAME)


Property changes on: gzo/trunk/products/PloneHelpCenter/content/InstructionalVideo.py
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/content/InstructionalVideoFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/InstructionalVideoFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/InstructionalVideoFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,61 @@
+#
+# The Plone Instructional Video container.
+#
+# The main goals of these containers are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+InstructionalVideoFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="phc_desc_video_folder",
+                description="Description for the Video section.",
+                label_msgid="phc_label_video_folder",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6),
+                ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterInstructionalVideoFolder(PHCFolder,OrderedBaseFolder):
+    """A simple folderish archetype"""
+
+    content_icon = 'movie_icon.gif'
+
+    schema = InstructionalVideoFolderSchema
+    archetype_name = 'Video Section'
+    meta_type = 'HelpCenterInstructionalVideoFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterInstructionalVideo', )
+
+    typeDescription= 'A Video Section can contain instructional Flash videos.'
+    typeDescMsgId  = 'description_edit_instructionalvideofolder'
+
+    security = ClassSecurityInfo()
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'ivideofolder_view',
+    #                 'view'      : 'ivideofolder_view'})
+
+registerType(HelpCenterInstructionalVideoFolder, PROJECTNAME)


Property changes on: gzo/trunk/products/PloneHelpCenter/content/InstructionalVideoFolder.py
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/content/Link.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/Link.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/Link.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,78 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema, GenericHelpCenterItemSchema
+from PHCContent import PHCContent
+
+LinkSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(description_msgid="description_edit_Link",
+                description="Description for the Link.",
+                label_msgid="description_label_Link",
+                label="Description",
+                i18n_domain = "plonehelpcenter"),
+        ),
+    
+    StringField(
+        'url',
+        searchable=1,
+        required=1,
+        primary=1,
+        default='http://',
+        languageIndependent=1,
+        widget=StringWidget(
+                description_msgid='phc_desc_link_url',
+                description='Web address.',
+                label_msgid='phc_label_link_url',
+                label='URL',
+                i18n_domain='plonehelpcenter',
+                ),
+        ),
+    ),
+
+    ) + GenericHelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+LinkSchema.moveField('subject', pos='bottom')
+LinkSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterLink(PHCContent,BaseContent):
+    """A simple archetype"""
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseContent.__implements__,)
+
+    content_icon = 'helplink_icon.gif'
+
+    schema = LinkSchema
+    archetype_name = 'Link'
+    meta_type = 'HelpCenterLink'
+    global_allow = 0
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'Links are links to other documentation and resources.'
+    typeDescMsgId  = 'description_edit_link'
+
+    # aliases = PHCContent.aliases.copy()
+    # aliases.update({'(Default)' : 'helplink_view',
+    #                 'view'      : 'helplink_view'})
+
+
+registerType(HelpCenterLink, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/LinkFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/LinkFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/LinkFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,62 @@
+#
+#  This is the Plone Help Center FAQ Folder type, with enhanced features
+#  like dividing the FAQ into Sections, and Display relevant
+#  versions.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+LinkFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="description_description_LinkFolder",
+                description="Description for the Link section.",
+                label_msgid="label_description_LinkFolder",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,
+                )
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterLinkFolder(PHCFolder,OrderedBaseFolder):
+    """A simple folderish archetype"""
+
+    content_icon = 'link_icon.gif'
+
+    schema = LinkFolderSchema
+    archetype_name = 'Link Section'
+    meta_type = 'HelpCenterLinkFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterLink', )
+
+    typeDescription= 'A Link Section can contain links to other documentation.'
+    typeDescMsgId  = 'description_edit_linkfolder'
+
+    security = ClassSecurityInfo()
+
+    # aliases = PHCFolder.aliases.copy()
+    # aliases.update({'(Default)' : 'helplinkfolder_view',
+    #                 'view'      : 'helplinkfolder_view'})
+
+registerType(HelpCenterLinkFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/PHCContent.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/PHCContent.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/PHCContent.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,192 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from Products.CMFCore.utils import getToolByName
+from AccessControl import ClassSecurityInfo
+from Products.PloneHelpCenter.config import *
+from Products.CMFPlone.utils import base_hasattr
+from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin
+
+try:
+    set
+except NameError:
+    from sets import Set as set
+
+# Get HistoryAwareMixin on all our types:
+
+# This is currently in ATContentTypes, which introduces a dependency we'd rather 
+# do without. It's slated to move to Archetypes itself, so try that first in the
+# hope that it's there. If both fail, fall back on a dummy HistoryAwareMixin
+# which will let us continue as normal. Yep, it's another optilude hack(tm).
+
+try:
+    from Products.Archetypes.HistoryAware import HistoryAwareMixin
+except ImportError:
+    try:
+        from Products.ATContentTypes.HistoryAware import HistoryAwareMixin
+    except ImportError:
+        
+        class HistoryAwareMixin:
+            """Dummy class when we can't find the real McCoy"""
+            
+            __implements__ =()
+            actions        =()
+
+class PHCContent(BrowserDefaultMixin, HistoryAwareMixin):
+    """A simple  mixin class to provide contentish functions
+    archetype no schema defined"""
+
+    security = ClassSecurityInfo()
+    _at_rename_after_creation = True
+
+    __implements__ = (HistoryAwareMixin.__implements__,)
+
+    # actions = ({
+    #     'id'          : 'view',
+    #     'name'        : 'View',
+    #     'action'      : 'string:${object_url}/view',
+    #     'permissions' : (CMFCorePermissions.View,)
+    #      },
+    #     {
+    #     'id'          : 'edit',
+    #     'name'        : 'Edit',
+    #     'action'      : 'string:${object_url}/edit',
+    #     'permissions' : (CMFCorePermissions.ModifyPortalContent,),
+    #      },
+    #     {
+    #     'id'          : 'metadata',
+    #     'name'        : 'Properties',
+    #     'action'      : 'string:${object_url}/properties',
+    #     'permissions' : (CMFCorePermissions.ModifyPortalContent,),
+    #      },
+    #      {
+    #     'id'          : 'local_roles',
+    #     'name'        : 'Sharing',
+    #     'action'      : 'string:${object_url}/sharing',
+    #     'permissions' : (CMFCorePermissions.ManageProperties,),
+    #      },
+    #     ) + HistoryAwareMixin.actions
+    # 
+    # aliases = {
+    #     # Set (Default) and view in each type
+    #     # '(Default)'  : '',
+    #     # 'view'       : '',
+    #     'index.html' : '',
+    #     'edit'       : 'base_edit',
+    #     'properties' : 'base_metadata',
+    #     'sharing'    : 'folder_localrole_form',
+    #     'gethtml'    : '',
+    #     'mkdir'      : '',
+    #     }
+
+    security.declareProtected(CMFCorePermissions.View, 'getVersionsVocab')
+    def getVersionsVocab(self):
+        """Get version vocabulary"""
+        if base_hasattr(self.aq_parent, 'getVersionsVocab'):
+            return self.aq_parent.getVersionsVocab()
+        else:
+            return ()
+    
+    security.declareProtected(CMFCorePermissions.View, 'getSectionsVocab')
+    def getSectionsVocab(self):
+        """Get sections vocabulary"""
+        if base_hasattr(self.aq_parent, 'getSectionsVocab'):
+            return self.aq_parent.getSectionsVocab()
+        else:
+            return ()
+    
+    security.declareProtected(CMFCorePermissions.ModifyPortalContent, 'SetSections')
+    def setSections(self, values):
+        """set sections"""
+        
+        # The sections field may be in use with a "topic : subtopic" pattern.
+        # If so, make sure that the 'topic' is set as a separate item
+        # so that we'll be able to look it up by topic as well as
+        # by "topic : subtopic"
+
+        valueSet = set(values)
+        for s in values:
+            pos = s.find(':')
+            if pos >= 0:
+                valueSet.add( s[:pos].strip() )
+        self.sections = tuple(valueSet)
+        
+
+    security.declareProtected(CMFCorePermissions.View, 'getAudiencesVocab')
+    def getAudiencesVocab(self):
+        """Get audiences vocabulary"""
+        if base_hasattr(self.aq_parent, 'getAudiencesVocab'):
+            return self.aq_parent.getAudiencesVocab()
+        else:
+            return ()
+
+    security.declareProtected(CMFCorePermissions.View, 'getSubjectVocab')
+    def getSubjectVocab(self):
+        """Get subject (keywords) vocabulary"""
+        catalog = getToolByName(self, 'portal_catalog')
+        return catalog.uniqueValuesFor('Subject')
+
+    security.declareProtected(CMFCorePermissions.View, 'Versions')
+    def Versions(self):
+        """method to display the versions in a nicer way
+        """
+        field = self.getField('versions')
+        if field:
+            return ", ".join(field.get(self))
+        else:
+            return ''
+        
+    security.declareProtected(CMFCorePermissions.View, 'Audiences')
+    def Audiences(self):
+        """method to display the audiences in a nicer way
+        """
+        field = self.getField('audiences')
+        if field:
+            return ", ".join(field.get(self))
+        else:
+            return ''
+    
+    security.declareProtected(CMFCorePermissions.View, 'isOutdated')
+    def isOutdated(self):
+        """Check the current versions of the PHC root container against the
+        versions of this item. If the version of this item is not in the list
+        of current versions, return 1, else return 0. As a shortcircuit, if
+        no "currentVersions" is defined, always return 0.
+        """
+                
+        myVersions = self.getVersions()
+        
+        if not myVersions:
+            return 0
+                
+        # Acquire current versions
+        currentVersions = [x.decode('utf-8') for x in self.getCurrentVersions()]
+        
+        if not currentVersions:
+            return 0
+        
+        for v in myVersions:
+            if v in currentVersions:
+                # Not outdated - we match one of the current versions
+                return 0
+                
+        # Outdated - we didn't match anything
+        return 1
+        
+    security.declareProtected(CMFCorePermissions.View, 'getRelatedItems') 
+    def getRelatedItems(self):
+        """method to fetch the referenced items in context of
+           config and permissions
+        """
+        try:
+            objs = [o for o in self.getField('relatedItems').get(self) 
+                      if self.portal_membership.checkPermission('View', o)]
+            return objs
+        except:
+            return []

Added: gzo/trunk/products/PloneHelpCenter/content/PHCFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/PHCFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/PHCFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,77 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo
+from Products.PloneHelpCenter.config import *
+from Products.CMFCore.utils import getToolByName
+from Products.CMFPlone.utils import safe_hasattr, base_hasattr
+from AccessControl import getSecurityManager
+from Products.CMFDynamicViewFTI.browserdefault import BrowserDefaultMixin
+
+from zope.interface import implements
+from Products.PloneHelpCenter.interfaces import IHelpCenterFolder
+
+# Compare section brains by title
+def _sectionCmp(a, b):
+    # depends on cmp(True, False) == 1
+    ash = getattr(a, 'getStartHere', False)
+    bsh = getattr(b, 'getStartHere', False)
+    if ash == bsh:
+        return cmp(a.Title.lower(), b.Title.lower())
+    elif ash:
+        return -1
+    else:
+        return 1
+
+
+class PHCFolder(BrowserDefaultMixin):
+    """A simple mixin for folderish archetype"""
+
+    implements(IHelpCenterFolder)
+
+    _at_rename_after_creation = True
+
+    # empty right slot by default
+    _properties = OrderedBaseFolder._properties +  (
+        {'id'    : 'right_slots',
+         'type'  : 'lines',
+         'mode'  : 'rw',
+         'label' : 'Right slots'
+         },
+         )
+
+    security = ClassSecurityInfo()
+
+    security.declareProtected(CMFCorePermissions.View, 'getAudiencesVocab')
+    def getAudiencesVocab(self):
+        """Get sections vocabulary."""
+        if not safe_hasattr(self.aq_parent, 'getAudiencesVocab'):
+            return []
+        return self.aq_parent.getAudiencesVocab()
+
+
+    security.declareProtected(CMFCorePermissions.View, 'getVersionsVocab')
+    def getVersionsVocab(self):
+        """Get version vocabulary."""
+        if not safe_hasattr(self.aq_parent, 'getVersionsVocab'):
+            return []
+        return self.aq_parent.getVersionsVocab()
+            
+
+    security.declareProtected(CMFCorePermissions.View, 'getSectionsVocab')
+    def getSectionsVocab(self):
+        """Get sections vocabulary"""
+        
+        localSections = self.sectionsVocab
+        if len(localSections):
+            return localSections
+        elif base_hasattr(self.aq_parent, 'getSectionsVocab'):
+            return self.aq_parent.sectionsVocab
+        else:
+            return ()

Added: gzo/trunk/products/PloneHelpCenter/content/ReferenceManual.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ReferenceManual.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ReferenceManual.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,245 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+from Products.PloneHelpCenter.config import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from schemata import HelpCenterBaseSchema, HelpCenterItemSchema
+from PHCContent import PHCContent
+from Products.CMFCore.utils import getToolByName
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.CMFPlone.browser.navtree import NavtreeStrategyBase, buildFolderTree
+
+import re
+IMG_PATTERN = re.compile(r"""(\<img .*?)src="([^/]+?)"(.*?\>)""", re.IGNORECASE | re.DOTALL)
+
+
+ReferenceManualSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        primary=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description='A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual.',
+                description_msgid="phc_help_referencemanual_summary",
+                label="Reference Manual Description",
+                label_msgid="phc_label_referencemanual_description",
+                rows=5,
+                i18n_domain="plonehelpcenter",
+                ),
+        ),
+    ),)  + HelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+ReferenceManualSchema.moveField('subject', pos='bottom')
+ReferenceManualSchema.moveField('relatedItems', pos='bottom')
+
+
+class HelpCenterReferenceManual(PHCContent,OrderedBaseFolder):
+    """A reference manual containing ReferenceManualPages,
+    ReferenceManualSections, Files and Images.
+    """
+
+    __implements__ =(PHCContent.__implements__,
+                      OrderedBaseFolder.__implements__,)
+
+    schema = ReferenceManualSchema
+    archetype_name = 'Reference Manual'
+    meta_type='HelpCenterReferenceManual'
+    content_icon = 'referencemanual_icon.gif'
+
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types =('HelpCenterReferenceManualPage', 
+                             'HelpCenterReferenceManualSection', 
+                             'Image', 'File')
+    # allow_discussion = IS_DISCUSSABLE
+
+    security = ClassSecurityInfo()
+
+    typeDescription= 'A Reference Manual can contain Reference Manual Pages and Sections, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content.'
+    typeDescMsgId  = 'description_edit_referencemanual'
+
+    security.declareProtected(CMFCorePermissions.View,
+                                'getReferenceManualDescription')
+    def getReferenceManualDescription(self):
+        """ Returns the description of the ReferenceManual -- 
+        convenience method for ReferenceManualPage
+        """
+        return self.Description()
+
+    security.declareProtected(CMFCorePermissions.View, 'getTOC')
+    def getTOC(self, current=None, root=None):
+        """Get the table-of-contents of this manual. 
+        
+        The parameter 'current' gives the object that is the current page or
+        section being viewed. 
+        
+        The parameter 'root' gives the root of the manual - if not given, this
+        ReferenceManual object is used, but you can pass in a 
+        ReferenceManualSection instead to root the TOC at this element. The 
+        root element itself is not included in the table-of-contents.
+        
+        The return value is a list of dicts, recursively representing the 
+        table-of-contents of this manual. Each element dict contains:
+        
+            item        -- a catalog brain for the item (a section or page)
+            numbering   -- The dotted numbering of this item, e.g. 1.3.2
+            depth       -- The depth of the item (0 == top-level item)
+            currentItem -- True if this item corresponds to the object 'current'
+            children    -- A list of dicts
+            
+        The list 'children' recursively contains the equivalent dicts for
+        children of each section. If the parameter 'current' is not given, no
+        element will have current == True.
+        """
+
+        if not root:
+            root = self
+
+        class Strategy(NavtreeStrategyBase):
+            
+            rootPath = '/'.join(root.getPhysicalPath())
+            showAllParents = False
+                
+        strategy = Strategy()
+        query=  {'path'        : '/'.join(root.getPhysicalPath()),
+                 'portal_type' : ('HelpCenterReferenceManualSection',
+                                   'HelpCenterReferenceManualPage',),
+                 'sort_on'     : 'getObjPositionInParent'}
+                
+        toc = buildFolderTree(self, current, query, strategy)['children']
+        
+        def buildNumbering(nodes, base=""):
+            idx = 1
+            for n in nodes:
+                numbering = "%s%d." % (base, idx,)
+                n['numbering'] = numbering
+                buildNumbering(n['children'], numbering)
+                idx += 1
+                
+        buildNumbering(toc)
+        return toc
+
+    security.declareProtected(CMFCorePermissions.View, 'getTOCInfo')
+    def getTOCInfo(self, toc):
+        """Get information about a table-of-contents, as returned by getTOC.
+        
+        The return value is a dict, containing:
+
+            tocList    -- A flat list representing the table-of-contents
+            localTOC   -- A toc structure for the contents under the current
+                            item (passed in as 'current' to getTOC())
+            currentIdx -- The index in tocList of 'current'
+            nextIdx    -- The index in tocList of the next item after 'current'
+            prevIdx    -- The index in tocList of the next item before 'current'
+            parentIdx  -- The index in tocList of the parent of 'current'
+            
+        The elements 'currentIdx', 'nextIdx', 'prevIdx' and 'parentIdx' may be
+        None if either the table-of-contents was not constructed with a current
+        item, or if there is no previous/next/parent item. Similarly, 'localTOC' 
+        will be None if the table-of-contents was not constructed with a current 
+        item.
+        
+        Each item in the list 'tocList' in the returned dict contains a dict 
+        with keys:
+        
+            item       -- A catalog brain repsenting the item
+            numbering  -- The dotted numbering of the item, e.g. 1.3.2.
+            depth      -- The depth of the item (0 = top-level item)
+            current    -- True if this item represents the current page/section
+         
+        The parameter 'toc' gives the table of contents, as returned by
+        getTOC() above.
+        """
+
+        # Let's fake static variables - keep track of what may be our parent
+        global parentIdx, prevIdx, prevDepth, prevWasCurrent
+
+        parentIdx = None
+        prevIdx = None
+        prevDepth = -1
+        prevWasCurrent = False
+
+        def addToList(tocInfo, tocItem):
+            item      = tocItem['item']
+            numbering = tocItem['numbering']
+            depth     = tocItem['depth']
+            children  = tocItem['children']
+            isCurrent = tocItem['currentItem']
+
+            global parentIdx, prevIdx, prevDepth, prevWasCurrent
+
+            numberingList = numbering.split('.')[:-1]
+            idxList = [int(number) - 1 for number in numberingList]
+
+            tocInfo['tocList'].append({'item'        : item,
+                                       'numbering'   : numbering,
+                                       'depth'       : depth,
+                                       'currentItem' : isCurrent,
+                                       })
+
+            currentIdx = len(tocInfo['tocList']) - 1
+
+            if isCurrent:
+                prevWasCurrent = True
+                tocInfo['currentIdx'] = currentIdx
+                if currentIdx > 0:
+                    tocInfo['prevIdx'] = currentIdx - 1
+                tocInfo['parentIdx'] = parentIdx
+                tocInfo['localTOC'] = tocItem['children']
+            elif prevWasCurrent:
+                prevWasCurrent = False
+                tocInfo['nextIdx'] = currentIdx
+
+            for child in children:
+                addToList(tocInfo, child)
+
+            # parent index will be item with depth = depth - 1
+            # keep track of potential parents by noting when we move down
+            # one step
+
+            if depth > prevDepth:
+                parentIdx = prevIdx
+                prevDepth = depth
+
+            prevIdx = currentIdx
+
+        tocInfo = {'currentIdx' : None,
+                   'nextIdx'    : None,
+                   'prevIdx'    : None,
+                   'parentIdx'  : None,
+                   'tocList'    : [],
+                   'localTOC'   : None}
+
+        for topLevel in toc:
+            addToList(tocInfo, topLevel)
+
+        return tocInfo
+
+    security.declareProtected(CMFCorePermissions.View, 'addImagePaths')
+    def addImagePaths(self, body, baseurl):
+        """Fixup image paths in section body"""
+        
+        # This is a convenience method for use in referencemanual_macros
+        # section_collation macro. It looks in body for img tags
+        # with relative URLs in the src attribute and prepends the baseurl.
+        # TODO: when we not longer need 2.1 compatibility, this belongs in 
+        # a view.
+                
+        return IMG_PATTERN.sub(r"""\1src="%s/\2"\3""" % baseurl, body)
+
+
+registerType(HelpCenterReferenceManual, PROJECTNAME)
+

Added: gzo/trunk/products/PloneHelpCenter/content/ReferenceManualFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ReferenceManualFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ReferenceManualFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,62 @@
+#
+# The Plone Reference Manual container.
+#
+# The main goals of these containers are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+
+ReferenceManualFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="phc_desc_folder_referencemanual",
+                description="Description for the reference manual section.",
+                label_msgid="phc_label_folder_referencemanual",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,
+                ),
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterReferenceManualFolder(PHCFolder,OrderedBaseFolder):
+    """A simple folderish archetype"""
+
+    content_icon = 'referencemanual_icon.gif'
+
+    schema = ReferenceManualFolderSchema
+    archetype_name = 'Reference Manual Section'
+    meta_type = 'HelpCenterReferenceManualFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterReferenceManual', )
+
+    typeDescription= 'A Reference Manual Section can contain reference manuals for individual projects and larger documentation efforts.'
+    typeDescMsgId  = 'description_edit_referencemanualfolder'
+
+
+    security = ClassSecurityInfo()
+
+
+registerType(HelpCenterReferenceManualFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/ReferenceManualPage.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ReferenceManualPage.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ReferenceManualPage.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,70 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema
+from PHCContent import PHCContent
+
+ReferenceManualPageSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description="Enter a brief description.",
+                description_msgid="phc_desc_referencemanual_page",
+                label="Description",
+                label_msgid="phc_label_referencemanual_page",
+                rows=5,
+                i18n_domain="plonehelpcenter",
+                )
+        ),
+
+    TextField(
+        'body',
+        required=1,
+        searchable=1,
+        primary=1,
+        widget=RichWidget(
+                description = "The body text.",
+                description_msgid = "phc_desc_body_referencemanual",
+                label = "Body text",
+                label_msgid = "phc_label_body_referencemanual",
+                rows = 25,
+                i18n_domain = "plonehelpcenter"
+                ),
+        **DEFAULT_CONTENT_TYPES
+        )
+    ),)
+
+class HelpCenterReferenceManualPage(PHCContent,BaseContent):
+    """Part of a reference manual."""
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseContent.__implements__,)
+
+    schema = ReferenceManualPageSchema
+    archetype_name = 'Page'
+    meta_type='HelpCenterReferenceManualPage'
+    content_icon = 'document_icon.gif'
+
+    global_allow = 0
+    # allow_discussion = 1
+
+    typeDescription= 'A Reference Manual Page contains the text of one of the pages of the the reference manual, usually confined to a single topic.'
+    typeDescMsgId  = 'description_edit_referencemanualpage'
+
+
+registerType(HelpCenterReferenceManualPage, PROJECTNAME)
+

Added: gzo/trunk/products/PloneHelpCenter/content/ReferenceManualSection.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/ReferenceManualSection.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/ReferenceManualSection.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,68 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+from Products.PloneHelpCenter.config import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from schemata import HelpCenterBaseSchema
+from PHCContent import PHCContent
+from AccessControl import ClassSecurityInfo
+
+ReferenceManualSectionSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description = "Enter a brief description for this section of the manual.",
+                description_msgid = "phc_desc_referencemanual_section",
+                label = "Description",
+                label_msgid = "phc_label_referencemanual_section",
+                rows = 5,
+                i18n_domain = "plonehelpcenter",
+                )
+        ),
+    ),)
+
+class HelpCenterReferenceManualSection(PHCContent,OrderedBaseFolder):
+    """A section of a reference manual containing ReferenceManualPages and
+    other ReferenceManualSections.
+    """
+
+    __implements__ = (PHCContent.__implements__,
+                      OrderedBaseFolder.__implements__,)
+
+    schema = ReferenceManualSectionSchema
+    archetype_name = 'Section'
+    meta_type = 'HelpCenterReferenceManualSection'
+    content_icon = 'chapter_icon.gif'
+
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterReferenceManualPage', 'Image',
+                                'HelpCenterReferenceManualSection')
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'A Reference Manual Section can contain Reference Manual Pages, and other Reference Manual (Sub-)Sections. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content.'
+    typeDescMsgId  = 'description_edit_referencemanualsection'
+
+    security = ClassSecurityInfo()
+
+    security.declareProtected(CMFCorePermissions.View, 'getSectionDescription')
+    def getSectionDescription(self):
+        """ Returns the description of the section --
+        convenience method for ReferenceManualPage
+        """
+        return self.Description()
+
+registerType(HelpCenterReferenceManualSection, PROJECTNAME)
+

Added: gzo/trunk/products/PloneHelpCenter/content/Tutorial.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/Tutorial.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/Tutorial.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,86 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+from Products.PloneHelpCenter.config import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from schemata import HelpCenterBaseSchema, HelpCenterItemSchema
+from PHCContent import PHCContent
+from AccessControl import ClassSecurityInfo
+
+TutorialSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        primary=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                 description = 'A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial.',
+                 description_msgid = "phc_help_tutorial_summary",
+                 label = "Tutorial Description",
+                 label_msgid = "phc_label_tutorial_description",
+                 rows = 5,
+                 i18n_domain = "plonehelpcenter",
+                )
+        ),
+    ),)  + HelpCenterItemSchema
+
+# For some reason, we need to jump through these hoops to get the fields in the
+# the right order
+TutorialSchema.moveField('subject', pos='bottom')
+TutorialSchema.moveField('relatedItems', pos='bottom')
+
+class HelpCenterTutorial(PHCContent,OrderedBaseFolder):
+    """A tutorial containing TutorialPages, Files and Images."""
+
+    __implements__ = (PHCContent.__implements__,
+                      OrderedBaseFolder.__implements__,)
+
+    schema = TutorialSchema
+    archetype_name = 'Tutorial'
+    meta_type = portal_type = 'HelpCenterTutorial'
+    content_icon = 'tutorial_icon.gif'
+
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterTutorialPage', 'Image', 'File')
+    # allow_discussion = IS_DISCUSSABLE
+
+    typeDescription= 'A Tutorial can contain Tutorial Pages, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content.'
+    typeDescMsgId  = 'description_edit_tutorial'
+
+    security = ClassSecurityInfo()
+
+    security.declareProtected(CMFCorePermissions.View, 'getTutorialDescription')
+    def getTutorialDescription(self):
+        """ Returns the description of the Tutorial--convenience method for TutorialPage """
+        return self.Description()
+
+    security.declareProtected(CMFCorePermissions.View, 'getPages')
+    def getPages(self, states=[]):
+        """Get items"""
+        criteria = contentFilter = {'portal_type' : 'HelpCenterTutorialPage'}
+        if states:
+            criteria['review_state'] = states
+        return self.getFolderContents(contentFilter = criteria)
+
+    security.declareProtected(CMFCorePermissions.View, 'getPagePosition')
+    def getPagePosition(self, obj, states=[]):
+        """Get position in folder of the current context"""
+        pages = self.getPages()
+        for i in range(len(pages)):
+            if pages[i].getId == obj.getId():
+                return i
+        return None
+
+registerType(HelpCenterTutorial, PROJECTNAME)
+

Added: gzo/trunk/products/PloneHelpCenter/content/TutorialFolder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/TutorialFolder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/TutorialFolder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,61 @@
+#
+# The Plone How-to container.
+#
+# The main goals of these containers are to restrict the addable types and
+# provide a sensible default view out-of-the-box, like the FAQ view.
+#
+
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from AccessControl import ClassSecurityInfo, ModuleSecurityInfo
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchemaFolderish, HelpCenterContainerSchema
+from PHCFolder import PHCFolder
+
+TutorialFolderSchema = HelpCenterBaseSchemaFolderish + Schema((
+    TextField(
+        'description',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                description_msgid="phc_desc_folder_tutorial",
+                description="Description for the tutorials section.",
+                label_msgid="phc_label_folder_tutorial",
+                label="Description",
+                i18n_domain = "plonehelpcenter",
+                rows=6,
+                ),
+        ),
+    ),) + HelpCenterContainerSchema
+
+class HelpCenterTutorialFolder(PHCFolder,OrderedBaseFolder):
+    """A simple folderish archetype"""
+
+    content_icon = 'tutorial_icon.gif'
+
+    schema = TutorialFolderSchema
+    archetype_name = 'Tutorial Section'
+    meta_type = 'HelpCenterTutorialFolder'
+    global_allow = 0
+    filter_content_types = 1
+    allowed_content_types = ('HelpCenterTutorial', )
+
+    typeDescription= 'A Tutorial Section can contain tutorial-length, multi-page documentation.'
+    typeDescMsgId  = 'description_edit_tutorialfolder'
+
+
+    security = ClassSecurityInfo()
+
+
+registerType(HelpCenterTutorialFolder, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/TutorialPage.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/TutorialPage.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/TutorialPage.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,69 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from Products.PloneHelpCenter.config import *
+from schemata import HelpCenterBaseSchema
+from PHCContent import PHCContent
+
+TutorialPageSchema = HelpCenterBaseSchema + Schema((
+    TextField(
+        'description',
+        default='',
+        searchable=1,
+        required=1,
+        accessor="Description",
+        default_content_type = 'text/plain',
+        allowable_content_types = ('text/plain',),
+        storage=MetadataStorage(),
+        widget=TextAreaWidget(
+                  description="Enter a brief description.",
+                  description_msgid="phc_desc_tutorial_page",
+                  label="Description",
+                  label_msgid="phc_label_tutorial_page",
+                  rows=5,
+                  i18n_domain="plonehelpcenter",
+                  ),
+        ),
+
+    TextField(
+        'body',
+        required=1,
+        searchable=1,
+        primary=1,
+        widget=RichWidget(
+                description="The body text.",
+                description_msgid="phc_desc_body_tutorial",
+                label="Body text",
+                label_msgid="phc_label_body_tutorial",
+                rows=25,
+                i18n_domain="plonehelpcenter"
+                ),
+        **DEFAULT_CONTENT_TYPES
+        ),
+    ),)
+
+class HelpCenterTutorialPage(PHCContent,BaseContent):
+    """Part of a tutorial."""
+
+    __implements__ = (PHCContent.__implements__,
+                      BaseContent.__implements__,)
+
+    schema = TutorialPageSchema
+    archetype_name = 'Page'
+    meta_type='HelpCenterTutorialPage'
+    content_icon = 'document_icon.gif'
+
+    global_allow = 0
+    # allow_discussion = 1
+
+    typeDescription= 'A Tutorial Page contains the text of a single page of the tutorial.'
+    typeDescMsgId  = 'description_edit_tutorialpage'
+
+
+registerType(HelpCenterTutorialPage, PROJECTNAME)

Added: gzo/trunk/products/PloneHelpCenter/content/__init__.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/__init__.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/__init__.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,22 @@
+# import things here to make them visible to Plone.
+# Note, just commenting something out here isn't enough--
+# the Install.py method also should be changed,
+# and the __init__ method for HelpCenter.py.
+
+import HelpCenter
+
+import FAQFolder, FAQ
+
+import HowToFolder, HowTo
+
+import TutorialFolder, Tutorial, TutorialPage
+
+import ReferenceManualFolder, ReferenceManual, ReferenceManualSection, ReferenceManualPage
+
+import InstructionalVideoFolder, InstructionalVideo
+
+import LinkFolder, Link
+
+import ErrorReferenceFolder, ErrorReference
+
+import Glossary, Definition

Added: gzo/trunk/products/PloneHelpCenter/content/schemata.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/content/schemata.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/content/schemata.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,178 @@
+try:
+    from Products.LinguaPlone.public import *
+except ImportError:
+    # No multilingual support
+    from Products.Archetypes.public import *
+try:
+    import Products.CMFCore.permissions as CMFCorePermissions
+except ImportError:
+    from Products.CMFCore import CMFCorePermissions
+from Products.Archetypes.Marshall import PrimaryFieldMarshaller
+from Products.PloneHelpCenter.config import *
+
+try:
+    from Products.ATReferenceBrowserWidget.ATReferenceBrowserWidget import ReferenceBrowserWidget
+    PHCReferenceWidget = ReferenceBrowserWidget
+except ImportError:
+    PHCReferenceWidget = ReferenceWidget
+
+try:
+    from Products.AddRemoveWidget import AddRemoveWidget
+    PHCKeywordWidget = AddRemoveWidget
+except ImportError:
+    PHCKeywordWidget = KeywordWidget
+
+
+###########################################
+# Common components to Help Types schemas #
+###########################################
+
+HelpCenterItemSchema = Schema((
+
+    LinesField(
+        'versions',
+        languageIndependent=1,
+        index='KeywordIndex:brains',
+        vocabulary='getVersionsVocab',
+        condition='object/getVersionsVocab',
+        multiValued=1,
+        required=0,
+        widget=MultiSelectionWidget(
+                label_msgid='phc_label_versions',
+                label= "Versions",
+                condition='object/getVersionsVocab',
+                description='Versions of product that apply to this item ' \
+                            '(leave blank if not version-specific).',
+                description_msgid = "phc_versions",
+                i18n_domain = "plonehelpcenter"
+                ),
+        ),
+    
+    LinesField(
+        'sections',
+        multiValued=1,
+        required=0,
+        vocabulary='getSectionsVocab',
+        condition='object/getSectionsVocab',
+        index='KeywordIndex:schema',
+        widget=MultiSelectionWidget(
+                label='Sections',
+                condition='object/getSectionsVocab',
+                description='Section(s) that this item should appear in.',
+                description_msgid = "phc_sections",
+                label_msgid = "phc_label_sections",
+                i18n_domain = "plonehelpcenter",
+                ),
+        ),
+    
+    LinesField(
+        'audiences',
+        multiValued=1,
+        required=0,
+        vocabulary='getAudiencesVocab',
+        condition="object/getAudiencesVocab",
+        index='KeywordIndex:schema',
+        widget=MultiSelectionWidget(
+                label='Audiences',
+                description='Audience(s) this item is targetted at.',
+                description_msgid = "phc_audiences",
+                condition="object/getAudiencesVocab",
+                label_msgid = "phc_label_audiences",
+                i18n_domain = "plonehelpcenter",
+                ),
+        ),
+    
+    LinesField(
+        'contributors',
+        accessor="Contributors",
+        languageIndependent=1,
+        widget=LinesWidget(
+                label='Contributors',
+                label_msgid="label_contributors",
+                description="Enter additional names (no need to include the current owner) for those who have contributed to this entry, one per line.",
+                description_msgid="help_contributors",
+                i18n_domain="plone",
+                ),
+        ),
+    
+    LinesField(
+        'subject',
+        accessor='Subject',
+        searchable=1,
+        vocabulary='getSubjectVocab',
+        enforceVocabulary=0,
+        isMetadata=1,
+        widget=PHCKeywordWidget(
+                label='Related keywords',
+                label_msgid = "phc_label_related",
+                i18n_domain="plonehelpcenter",
+        ),
+    ),
+
+    BooleanField(
+        'startHere',
+        index='FieldIndex:schema',
+        permission = CMFCorePermissions.ReviewPortalContent,
+        widget=BooleanWidget(
+                label='Start Here',
+                description="Marks this as a good starting point for its section. Only key documents should have this property.",
+                description_msgid = "phc_starthere",
+                label_msgid = "phc_label_starthere",
+                i18n_domain="plonehelpcenter"
+        ),
+    ),
+    
+    ReferenceField(
+        'relatedItems',
+        relationship='PloneHelpCenter',
+        allowed_types=REFERENCEABLE_TYPES,
+        required = 0,
+        multiValued=1,
+        languageIndependent=1,
+        widget=PHCReferenceWidget (
+                label="Referenced Items",
+                description="Set one or more references to HelpCenter items.",
+                description_msgid = "phc_reference",
+                label_msgid = "phc_label_reference",
+                i18n_domain="plonehelpcenter"
+                ),
+    ),
+    
+))
+
+GenericHelpCenterItemSchema = HelpCenterItemSchema.copy()
+del GenericHelpCenterItemSchema['audiences']
+
+# what sections should there be? (for enclosing folders, not indiv items!)
+HelpCenterContainerSchema = Schema((
+
+    LinesField(
+        'sectionsVocab',
+        accessor='getSectionsVocab',
+        edit_accessor='getRawSectionsVocab',
+        mutator='setSectionsVocab',
+        widget=LinesWidget(
+                   label="Sections",
+                   description="One section on each line. Used for grouping items. If you leave this blank, the help center's sections will be used. If both are blank, sections will not be used.",
+                   description_msgid = "phc_sections_vocab",
+                   label_msgid = "phc_label_sections-vocab",
+                   i18n_domain="plonehelpcenter",
+                   rows=6,
+                   )
+        ),
+    ))
+
+# non folderish Help Center Base schemata
+HelpCenterBaseSchema = BaseSchema.copy()
+
+# folderish Help Center Base schemata
+HelpCenterBaseSchemaFolderish = BaseFolderSchema.copy()
+
+
+# Remove "contributors" from metadata, so that we can add it later
+if GLOBAL_RIGHTS:
+    del HelpCenterBaseSchema['contributors']
+    del HelpCenterBaseSchemaFolderish['contributors']
+
+    del HelpCenterBaseSchema['rights']
+    del HelpCenterBaseSchemaFolderish['rights']

Added: gzo/trunk/products/PloneHelpCenter/doc/PHCManual.stx
===================================================================
--- gzo/trunk/products/PloneHelpCenter/doc/PHCManual.stx	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/doc/PHCManual.stx	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,80 @@
+Welcome to the Help Center! This way of doing documentation is a bit
+different from what you may be used to, so please read this document
+to understand how to contribute.
+
+Quick Start
+    
+  For the impatient, here's the bare minimum you should know:
+
+o You normally need to be logged in.
+
+o There are several different documentation types, most are self-explanatory, but pay attention to the difference between a How-to and a Tutorial (explained below).
+        
+o To add a piece of documentation/help, go into the relevant section, make sure there isn't already an existing entry about what you want to add, and use the button at the top right to add (normally says Add  FAQ or similar).
+        
+o Add your content, and save it. This edit/view cycle can be performed as many times as you like, until you are happy with the result.
+        
+o Make sure you Submit your document for publication when you are done - top right pulldown in the content area.
+        
+o A reviewer will then pick up the document, and publish it unless the content needs to be improved.
+
+o If somebody adds comments to your entry later, you will be notified by e-mail.
+        
+What type of item is my documentation?
+
+  Below is a description, usage and example for each type.
+
+Frequently Asked Question (FAQ) -- An FAQ is a short question with a 1-2 paragraph answer. You can add several questions to a FAQ area and group the questions into sections::
+
+    FAQ Example
+    Question: What is Plone?
+
+    
+    Answer:
+    Plone is an open source Enterprise Content Management
+    System (ECM/CMS) that runs on top of Zope and CMF.
+                
+HowTo -- A HowTo is a one-page description on how to accomplish something, but is folderish, so Files/Images can be attached. It's usually very brief and to-the-point.
+
+  Typical How-Tos:
+
+  o How to set up Plone with the Apache Web Server
+  
+  o How to change the tabs that appear at the top of the portal
+
+Tutorial -- A tutorial is a multi-paged article with lots of detail. The tutorial is more in-depth than a How-to, and may cover the conceptual aspects of the task, in addition to the practical steps to get the job done.
+            
+  If you are unsure of the difference of a How-to and a Tutorial, think about it as the difference between a recipe that only teaches you what ingredients are needed, and how to bake the cake (How-to), and an article telling you about the history behind cakes in general, that may or may not teach you how to actually bake one (Tutorial).
+            
+  Typical Tutorials:
+
+  o How to utilize workflows in your projects
+   
+  o Why separate content, logic and presentation?
+                
+Reference Manual -- A reference manual is a definitive piece of documentation for some product or technology, and tends to be several pages in lenght, with sections breaking up the content. This is by far the rarest documentation type. 
+        
+Help Link -- A help link is a link (either external or internal). It is different from a standard Plone link in that it can have section and version information.
+
+  Typical Help Links:
+
+  o The Zope Book at zope.org
+    
+  o CSS reference manual at W3C
+                
+Error Reference -- An error reference is meant to be the explanation of a particular error, with details on how to fix it, if relevant.
+            
+  Typical Error References
+
+  o Expected sequence, got integer
+  
+  o FS Page Template has errors: Compilation failed
+                
+            
+Glossary Definition -- A glossary definition describes a particular term used as concisely as possible.
+            
+  Typical Glossary Definitions:
+
+  o CMF: The Content Management Framework
+  
+  o Workflow: A state machine structure used to model business processes

Added: gzo/trunk/products/PloneHelpCenter/doc/Tips.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/doc/Tips.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/doc/Tips.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+When a new HelpCenter is created, it automatically creates one of each 
+folderish type.  These container types hold the help center content.  
+
+
+I want anonymous users to see the folderish types in the nav portlet.
+
+  Publish the folderish help center types that you want to show.
+
+
+I don't have Error References, and I never will.  How should I get rid
+of the Error Reference portlet in the helpcenter_view.
+
+  Under the HelpCenter, find the FAQ folderish type.  Delete it.  The 
+  helpcenter_view will now no longer show the type.  
+
+
+I don't want anonymous users to see the FAQ portlet in the
+helpcenter_view, but I don't want to delete the FAQ folderish type
+yet.
+
+  Under the HelpCenter, find the FAQ folderish type.  Make it private.
+  Of course, now no one else will be able to see the FAQs in that
+  folder.
+

Added: gzo/trunk/products/PloneHelpCenter/doc/Workflow.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/doc/Workflow.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/doc/Workflow.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,54 @@
+
+WORKFLOWS & PERMISSIONS:
+
+- Any logged in user can add FAQ/HowTo/Tutorial/Link/ErrorRef.
+
+- The content is not visible or searchable to anybody else than the
+  Reviewers/Managers before it is Published.
+
+- There is no 'visible state', available states are:
+
+  - In-progress: Initial state, seen only to author/reviewers/managers.
+
+  - Pending: In the review queue to be approved by reviewers/managers.
+
+  - Published: Viewable to all.
+
+  - Obsolete: Viewable only to author/reviewers/managers. This state
+    has a very simple use now, but when plone.org finishes developing
+    our rating/obsolescence-marking tool, this will likely be
+    enhanced.
+
+- Transitions should be pretty self-explanatory:
+
+- User creates content object (state=in-progress)
+
+  - User has checkmark in the add form that says "Submit for approval
+    immediately" so they don't have to worry about the state menu
+    (state="pending")
+
+    This feature is not implemented yet; doing so would appear to
+    either add a useful field to the schema, or hacking the base_edit
+    form, neither of which is too pleasant. Instead, as a temporary
+    measure, the portal_status_message returned after editing a
+    non-published items reminds the editor that, unlike most
+    plone.org content, this needs to be published to be visible.
+
+  - Reviewer sees content in queue, checks content +
+    sections/versions, answers the question if it's a relevant
+    Question without an Answer, publishes. (state="published")
+
+  - Ideally, every time someone adds a comment to an item, the owner
+    of it gets a mail containing the comment + content URL.
+
+  - The Obsolete state is for later, when the ratings tool can push
+    something into an obsolete status if 3 or more people have marked
+    the content wrong/obsolete. The Owner should then get a mail about
+    it. 
+    
+    Mail sending is not turned on for these last two items. A good
+    idea would be integrate this with Geoff Davis' excellent
+    PortalNotifications, rather than doing this as one-off scripts.
+    This product can send mail on a status change, and does so in a
+    nice, clean way.
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-cs.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-cs.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-cs.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,421 @@
+# TextMessage Catalog for Plone HelpCenter.
+# Bobo Ruml, 2006
+# Czech Team for Plone Helpdesk <www.surecase.org>
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: 2006-01-27 00:55 +0000\n"
+"Last-Translator: Bobo RUML <bohous at bobonet.net>\n"
+"Language-Team: Czech <www.surecase.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: cs\n"
+"Language-Name: Czech\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: plone\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Termín"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Popis chyby"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Sekce chyby"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "FAQ"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "Sekce FAQ"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Slovník"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "Centrum pomoci"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "Centrum pomoci"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "Termín"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "Popisy chyb"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "Složka chyby"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "FAQ"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "Složka FAQ"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "Slovník"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "Jak-na-to"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "Složka Jak-na-to"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "Instruktážní videa"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "Složka video"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "Odkazy"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "Složka odkazy"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "Návod"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "Složka návodu"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "Stránka návodu"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "Jak-na-to"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "Sekce Jak-na-to"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Sekce Odkazy"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Složka"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Návod"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Stránka návodu"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Sekce návody"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Video"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Sekce video"
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr ""
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Zde můžete přidávat definice do slovníku a počkat na schválení Vaším dokumentačním týmem."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Můžete vložit často kladený dotaz (preferuje se i s odpovědí), a počkat zda vyhoví a bude schválen dokumentačním týmem."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Tato složka obsahuje nejčastěji kladené dotazy (FAQ), které mohou být zobrazovány v tématických sekcích."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Tato složka obsahuje definice, které jsou zobrazovány podobně jako ve slovníku s navazujícími odkazy."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "Odkaz v centru pomoci je například na další dokumentaci, apod..."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Tato složka obsahuje odkazy, které mohou být zobrazovány v tématických sekcích."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Tato složka obsahuje pouze objekty centra pomoci"
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Návod může obsahovat jednotlivé stránky návodu, obrázky a soubory. Je možné použít odkazy nahoru/dolů pro uspořádání těchto položek jako v běžné složce."
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr ""
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr ""
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr ""
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr ""
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr ""
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr ""
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr ""
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr ""
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr ""
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr ""
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr ""
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr ""
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr ""
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr ""
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr ""
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr ""
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr ""
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr ""
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr ""
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr ""
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr ""
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr ""
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr ""
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr ""
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr ""
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr ""
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr ""
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr ""
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr ""
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr ""
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr ""
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr ""
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr ""
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr ""
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr ""
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr ""
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr ""
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr ""
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr ""
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr ""
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr ""
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr ""
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-de.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-de.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-de.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,422 @@
+# --- PLEASE EDIT THE LINES BELOW CORRECTLY ---
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: Hannes Mayrhofer <mayhan at another.at>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: de\n"
+"Language-Name: German\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plone\n"
+"X-Is-Fallback-For: de-at de-ch\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Definitionen"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Fehlerhinweis"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Fehlerhinweis-Bereich"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "FAQ"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "FAQ-Bereich"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Wörterbuch"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "HelpCenter"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "HelpCenter"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "HelpCenter Definitionen"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "HelpCenter Fehlerhinweis"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "HelpCenter Fehlerhinweis-Ordner"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "HelpCenter FAQ"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "FAQ-Ordner"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "HelpCenter Wörterbuch"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "HelpCenter HowTo"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "HelpCenter HowTo-Ordner"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "HelpCenter Einführungs-Video"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "HelpCenter Einführungs-Video-Ordner"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "HelpCenter Link"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "HelpCenter Link-Ordner"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "HelpCenter Tutorial"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "HelpCenter Tutorial-Ordner"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "HelpCenter Tutorial-Seite"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "HowTo"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "HowTo-Bereich"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Link-Bereich"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Plone HelpCenter-Ordner"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Tutorial Seite"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Tutorial-Bereich"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Video"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Video-Bereich"
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr ""
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Sie können eine Definition zum Wörterbuch hinzufügen. Diese wird dann von unserem Dokumentations-Team bearbeitet."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Sie können ein häufig gestellte Frage (FAQ) hinzufügen (bevorzugt mit Antwort). Diese wird dann von unserem Dokumentations-Team bearbeitet."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Dieser Ordner enthält häufig gestellte Fragen (FAQ), und er erlaubt Ihnen individuelle Einstellungen."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Dieser Ordner enthält Definitionen, welche in einer Wörterbuch ähnlichen Form (mit Anker-Links) dargestellt werden."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "HelpCenter-Links sind Verweise zu anderen Dokumenten, usw."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Dieser Ordner enthält HelpCenter-Links, und er erlaubt Ihnen individuelle Einstellungen."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Dieser Ordner enthält PHC-Inhalte"
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Ein Tutorial kann Tutorial-Seiten, Bilder und Dateien enthalten. Die Index Reihenfolge wird durch die Reihenfolge im Ordner festgelegt, verwenden Sie bitte die normalen rauf/runter Symbole um die Reihenfolge zu ändern."
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr ""
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr ""
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr ""
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr ""
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr ""
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr ""
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr ""
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr ""
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr ""
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr ""
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr ""
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr ""
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr ""
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr ""
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr ""
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr ""
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr ""
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr ""
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr ""
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr ""
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr ""
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr ""
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr ""
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr ""
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr ""
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr ""
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr ""
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr ""
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr ""
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr ""
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr ""
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr ""
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr ""
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr ""
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr ""
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr ""
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr ""
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr ""
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr ""
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr ""
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr ""
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr ""
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-es.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-es.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-es.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,287 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: plone-es\n"
+"POT-Creation-Date: 2006-03-06 15:17+0000\n"
+"PO-Revision-Date: 2007-03-12 11:23+0200\n"
+"Last-Translator: Fernando de los Ríos Sánchez<fdelosrios at ub.edu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: es\n"
+"Language-Name: Spanish\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plone\n"
+
+#. Default: "Open for submissions"
+msgid "Open for submissions"
+msgstr "Abierto a aportaciones"
+
+#. Default: "In progress"
+msgid "In progress"
+msgstr "En progreso"
+
+#. Default: "A Reference Manual Section can contain Reference Manual Pages, and other Reference Manual (Sub-)Sections. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+msgid "description_edit_referencemanualsection"
+msgstr "Una Sección de Manuales de referencia contiene Páginas de manual de referencia y otras subsecciones de Manuales de referencia. El órden del índice viene dado por el orden de la carpeta, utilice las flechas de arriba/abajo habituales en la vista de contenidos de la carpeta para reorganizar el contenido."
+
+#. Default: "A Reference Manual Page contains the text of one of the pages of the the reference manual, usually confined to a single topic."
+msgid "description_edit_referencemanualpage"
+msgstr "Una Página de manual de referencia contiene el texto de una de las páginas del manual, generalmente sobre un único tema."
+
+#. Default: "Section"
+msgid "Section"
+msgstr "Sección"
+
+#. Default: "Close for submissions"
+msgid "Close for submissions"
+msgstr "Cerrado a aportaciones"
+
+#. Default: "Mark obsolete"
+msgid "Mark obsolete"
+msgstr "Marcar obsoleto"
+
+#. Default: "Hide"
+msgid "Hide"
+msgstr "Ocultar"
+
+#. Default: "Draft"
+msgid "Draft"
+msgstr "Borrador"
+
+#. Default: "Public"
+msgid "Public"
+msgstr "Público"
+
+#. Default: "An Instructional Video can be used to upload Flash instructional videos."
+msgid "description_edit_instructionalvideo"
+msgstr "Un Video didáctico puede usarse para subir videos didácticos en formato Flash."
+
+#. Default: "Attachments"
+msgid "Attachments"
+msgstr "Adjuntos"
+
+#. Default: "An Error Reference can be used to explain a particular error which may arise."
+msgid "description_edit_errorreference"
+msgstr "Una Referencia de error se utiliza para explicar un error particular que pueda surgir."
+
+#. Default: "A Reference Manual can contain Reference Manual Pages and Sections, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+msgid "description_edit_referencemanual"
+msgstr "Un Manual de referencia contiene Páginas de manual de referencia y Secciones, Imágenes y Archivos. El órden del índice viene dado por el orden de la carpeta, utilice las flechas de arriba/abajo habituales en la vista de contenidos de la carpeta para reorganizar el contenido."
+
+#. Default: "A How-to is a document describing how to address a single, common use-case or issue. You may add images and files as attachments."
+msgid "description_edit_howto"
+msgstr "Un How-to es un documento que describe cómo hacer algo particular. Se pueden adjuntar imágenes y archivos."
+
+#. Default: "A Video Section can contain instructional Flash videos."
+msgid "description_edit_instructionalvideofolder"
+msgstr "Una Sección de Video contiene videos Flash didácticos."
+
+#. Default: "An Error Reference Section can contain references to and explanations of common errors."
+msgid "description_edit_errorreferencefolder"
+msgstr "Una Sección de Referencias de error contiene referencias y explicaciones sobre errores comunes."
+
+#. Default: "A Reference Manual Section can contain reference manuals for individual projects and larger documentation efforts."
+msgid "description_edit_referencemanualfolder"
+msgstr "Una Sección de Manuales de referencia contiene manuales de referencia para proyectos individuales y otra documentación extensa."
+
+#. Default: "A Tutorial Section can contain tutorial-length, multi-page documentation."
+msgid "description_edit_tutorialfolder"
+msgstr "Una Sección de Tutoriales contiene documentación detallada multipágina sobre un tema."
+
+#. Default: "A Tutorial can contain Tutorial Pages, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Un Tutorial contiene Páginas de tutorial, imágenes y archivos. El órden del índice viene dado por el orden de la carpeta, utilice las flechas de arriba/abajo habituales en la vista de contenidos de la carpeta para reorganizar el contenido."
+
+#. Default: "A How-to Section can contain how-to documents."
+msgid "description_edit_howtofolder"
+msgstr "Una Sección de How-tos contiene documentos sobre cómo hacer algo concreto."
+
+#. Default: "Statistics"
+msgid "Statistics"
+msgstr "Estadísticas"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Definición"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Referencia de error"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Sección de Referencias de error"
+
+#. Default: "Reference Manual Section"
+msgid "Reference Manual Section"
+msgstr "Sección de Manuales de referencia"
+
+#. Default: "Reference Manual"
+msgid "Reference Manual"
+msgstr "Manual de Referencia"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "Preguntas frecuentes (FAQ)"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "Sección de Preguntas Frecuentes (FAQ)"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Glosario"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "Centro de ayuda"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "Centro de ayuda"
+
+#. Default: "Help Center Reference Manual"
+msgid "HelpCenterReferenceManual"
+msgstr "Manual de referencia"
+
+#. Default: "Help Center Reference Manual Page"
+msgid "HelpCenterReferenceManualPage"
+msgstr "Página de Manual de referencia"
+
+#. Default: "Help Center Reference Manual Section"
+msgid "HelpCenterReferenceManualSection"
+msgstr "Sección de Manual de referencia"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "Definición"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "Referencia de error"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "Carpeta de Referencias de error"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "Preguntas frecuentes (FAQ)"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "Carpeta de Preguntas frecuentes (FAQ)"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "Glosario"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "How-to"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "Carpeta de How-tos"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "Video didáctico"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "Carpeta de Videos didácticos"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "Enlace de ayuda"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "Carpeta de Enlaces de ayuda"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "Tutorial"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "Carpeta de Tutoriales"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "Página de tutorial"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "How-to"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "Sección de How-tos"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Sección de enlaces"
+
+#. Default: "Link"
+msgid "Link"
+msgstr "Enlace"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Carpeta de Centro de ayuda"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Página de tutorial"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Sección de tutoriales"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Video"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Carpeta de videos"
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Puede añadir una Definición al Glosario y será revisada y aprobada por nuestro equipo de documentación."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Puede añadir una Pregunta frecuente (preferiblemente con su respuesta) y será revisada y aprobada por nuestro equipo de documentación."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Esta carpeta contiene FAQs y permite mostrar secciones individuales."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Esta carpeta contiene Definiciones y las muestra en listas como un diccionario."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "Los enlaces de ayuda son enlaces a otra documentación, etc."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Esta carpeta contiene enlaces del Centro de ayuda y permite mostrar secciones individuales."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Esta carpeta contiene documentación."
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Un Tutorial contiene Páginas de tutorial, Imágenes y Archivos. El órden del índice viene dado por el orden de la carpeta, utilice las flechas de arriba/abajo habituales en la vista de contenidos de la carpeta para reorganizar el contenido."
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-fr.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-fr.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-fr.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,421 @@
+# --- PLEASE EDIT THE LINES BELOW CORRECTLY ---
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter 1.0 (Unreleased)\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: 2007-6-27 11:00+0000\n"
+"Last-Translator: Stephan Geulette <stephan.geulette at uvcw.be>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: fr\n"
+"Language-Name: Français\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plone\n"
+"X-Is-Fallback-For: fr-be fr-ca fr-lu fr-mc fr-ch fr-fr\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Définition"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Référence d'Erreur"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Section Référence d'Erreur"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "FAQ"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "Section FAQ"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Glossaire"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "Centre de Documentation"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "Centre de Documentation"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "Définition du Centre de Documentation"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "Référence d'Erreur du Centre de Documentation"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "Dossier Référence d'Erreur du Centre de Documentation"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "FAQ du Centre de Documentation"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "Dossier FAQ"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "Glossaire du Centre de Documentation"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "How-To du Centre de Documentation"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "Dossier How To du Centre de Documentation"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "Vidéo pédagogique du Centre de Documentation"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "Vidéo pédagogique du Centre de Documentation"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "Lien du Centre de Documentation"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "Dossier Lien du Centre de Documentation"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "Centre de Documentation Tutoriel"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "Dossier Tutoriel du Centre de Documentation"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "Page de Tutoriel du Centre de Documentation"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "How-to"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "Section How-to"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Section Lien"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Dossier du centre de documentation"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Tutoriel"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Page de Tutoriel"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Section Tutoriel"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Vidéo"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Section Vidéo"
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr "${number} éléments correspondant à vos critères."
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Vous pouvez ajouter une Définition au Glossaire. Elle sera revue et approuvée par notre équipe de documentation."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Vous pouvez ajouter une Question Fréquente (de préférence avec la réponse), elle sera revue et approuvée par notre équipe de documentation."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Ceci est un dossier qui contient des Questions Fréquentes, et qui vous permet de les afficher dans des sections individuelles."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Ceci est un dossier qui contient des Définitions et qui les liste dans une sorte de dictionaire avec des liens de type ancre."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "Les Liens du Centre de Documentation sont des liens vers d'autres documentations, etc."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Ceci est un dossier qui contient des Liens et qui vous permet de les afficher dans des sections individuelles."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Ceci est un dossier qui contient les éléments du centre de documentation"
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Un Tutoriel peut contenir des Pages de Tutoriel, des Images et des Fichiers. L'ordre d'indexage est le même que celui du dossier, utilisez les commandes habituelles déplacer vers le haut/bas pour réorganiser le contenu."
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr "Aucun résultat."
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr "Ce dossier n'a pas de contenu visible. Pour ajouter un élément, cliquer sur le bouton ajouter ou coller du contenu d'un autre dossier."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr "Correspond à tous"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr "Correspond à chacun"
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr "Remonter d'un niveau"
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr "Résultats de recherche"
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr "Retourne les éléments créés par une personne particulière."
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr "Retourne les éléments correspondant à cette description. Plusieurs mots peuvent être choisis en pressant <strong>AND</strong> et <strong>OR</strong>."
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr "Retourne les éléments d'un type spécifique."
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr "Retourne les éléments correspondant à ces mots. Plusieurs mots peuvent être choisis en pressant <strong>Ctrl</strong> (ou <strong>Apple</strong> key on Mac) et en cliquant sur vos choix."
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr "Retourne les éléments ajoutés depuis votre dernier login, la semaine dernière, etc."
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr "En tant que modérateur, vous pouvez chercher les éléments en fonction de leur état."
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr "Pour une recherche simple, entrez vos termes de recherche ici. Plusieurs mots peuvent être choisis en pressant <strong>AND</strong> et <strong>OR</strong>. Le texte de ce champ sera recherché dans le contenu, le titre et la description des éléments."
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr "Sélectionner un élément à ajouter"
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr "Tout auteur"
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr "Auteur"
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr "Description"
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr "Type d'élément"
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr "Mots-clés"
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr "Nouveaux éléments depuis"
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr ""
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr "Statut de révision"
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr "Texte de recherche"
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr "Sélectionner"
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr "Sélectionner tous les éléments"
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr "Sélectionner tous/aucun"
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr "Dernier log-in"
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr "Modifié"
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr "Ordre"
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr "Taille"
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr "Etat"
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr "Titre"
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr "Cet élément n'a aucun corps, cliquer sur l'onglet Modifier pour le changer."
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr "par ${author}, ${date}"
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr "Vous n'avez pas trouvé ce que vous cherchiez? Essayez la ${advanced_search} pour des options de recherche plus précises."
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr "Recherche avancée"
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr "Recherche"
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr "Depuis"
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr "expiré"
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr "Dernier mois"
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr "Dernière semaine"
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr "Hier"
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr "Déplacer l'élément vers le bas"
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr "Déplacer l'élément vers le haut"
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr "Pertinence"
+


Property changes on: gzo/trunk/products/PloneHelpCenter/i18n/plone-fr.po
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-it.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-it.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-it.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,422 @@
+# translation of plone-it.po to Italiano
+# Mirto Busico <m.busico at ieee.org>, 2006.
+# Lallo Gaifas <lallo at artiemestieri.tn.it>, 14-10-2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: plone-it\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: 2006-10-21 09:37+0200\n"
+"Last-Translator: Mirto Busico <m.busico at ieee.org>\n"
+"Language-Team: Italiano <it at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: it\n"
+"Language-Name: Italiano\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plone\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Definizione"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Breviario errori"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Errore"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "Domanda frequenti"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "Domanda frequente"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Glossario"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "Centro documentazione"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "Centro documentazione"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "Definizione del Centro di documentazione"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "Breviario degli errori del centro di documentazione"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "Cartella del breviario degli errori del centro di documentazione"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "Domande frequenti"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "Cartella delle domande frequenti"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "Glossario del centro di documentazione"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "Aiuto del centro di documentazione"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "Cartella degli aiuti del centro di documentazione"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "Filmato didattico del centro di documentazione"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "Cartella dei filmati didattici del centro di documentazione"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "Collegamento del centro di documentazione"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "Cartella dei collegamenti del centro di documentazione"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "Guida del centro di documentazione"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "Cartella delle guide del centro di documentazione"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "Pagina di una guida del centro di documentazione"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "Aiuto"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "Aiuto"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Collegamento"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Cartella del centro di documentazione"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Guida"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Pagina della guida"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Guida"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Filmato"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Filmato"
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr "${number} elementi corrispondono ai criteri inseriti."
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Puoi aggiungere una definizione nel glossario e sarà rivista ed approvata dal gruppo di documentazione."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Puoi aggiungere una domanda frequente (preferibilmente con una adeguata risposta), e sarà rivista ed approvata dal gruppo di documentazione."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Questa cartella contiene le domande frequenti e permette di visualizzarle suddivise per sezioni."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Questa cartella contiene le definizioni del glossario e le visualizza in un elenco tipo vocabolario, dotato di collegamenti."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "I collegamenti del centro di documentazione sono collegamenti che puntano ad altra documentazione, etc."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Questa cartella contiene i collegamenti del centro di documentazione e permette di visualizzarli suddivisi per sezioni."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Questa è la cartella che contiene il centro di documentazione."
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr "Una guida contiene pagine, immagini e file. L'ordine nell'indice viene stabilito in base all'ordine dei contenuti nella cartella. Utilizza le normali frecce su/giù nella vista dei contenuti per riorganizzarne l'ordine."
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr "Non è stato trovata alcuna corrispondenza."
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr "Questa cartella non ha elementi visibili. Per aggiungere un contenuto premi il pulsante aggiungi o incolla il contenuto da un altra posizione."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr "Tutte le corrispondenze"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr "Qualsiasi corrispondenza"
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr "Su di un livello"
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr "Risultati della ricerca"
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr "Trova gli elementi creati da una particolare persona."
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr "Trova gli elementi che corrispondono a questa descrizione. Parole multiple possono essere trovate combinandole con <strong>AND</strong> e <strong>OR</strong>."
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr "Trova solo gli elementi di uno specifico tipo."
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr "Trova gli elementi in cui corrispondono tutte queste parole chiave. Parole multiple possono essere trovate premendo <strong>Ctrl</strong> (o il tasto <strong>Apple</strong> su Mac) contemporaneamente alla parola."
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr "Trova gli elementi aggiunti dall'ultima tua registrazione, dalla settimana scorsa, ecc."
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr "Come revisore puoi cercare gli elementi in base al loro stato di revisione. Se desideri limitare il risultato agli elementi in qualche stato, selezionali da questo elenco."
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr "Inserisci qui i termini per la ricerca di testo. Parole multiple possono essere trovate combinandole con <strong>AND</strong> e <strong>OR</strong>. Il testo di questo campo sarà cercato nei contenuti degli elementi, nei titoli e nelle descrizioni."
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr "Seleziona un elemento da aggiungere"
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr "Qualsiasi autore"
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr "Autore"
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr "Descrizione"
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr "Tipo di elemento"
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr "Parole chiave"
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr "Nuovi elementi da"
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr "[ ${percentage} %]"
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr "Stato di revisione"
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr "Testo ricerca"
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr "Seleziona"
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr "Seleziona tutti"
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr "Seleziona/deseleziona tutto"
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr "Ultima registrazione"
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr "Modificati"
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr "Ordinamento"
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr "Dimensione"
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr "Stato"
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr "Titolo"
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr "Questo elemento non ha un corpo di testo, premi sulla scheda modifica per inserirlo."
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr "di ${author}, ${date}"
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr "Non trovi quello che cerchi? Prova la ${advanced_search} per opzioni di ricerca più precise."
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr "Ricerca avanzata"
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr "Elenco contenuti"
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr "Cerca"
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr "Sempre"
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr "scaduto"
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr "Ultimo mese"
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr "Ultima settimana"
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr "Ieri"
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr "Muovi in giù l'elemento"
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr "Muovi in su l'elemento"
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr "Pertinenza"
+


Property changes on: gzo/trunk/products/PloneHelpCenter/i18n/plone-it.po
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-manual.pot
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-manual.pot	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-manual.pot	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,177 @@
+# PloneHelpCenter
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2005-12-27 11:59+0000\n"
+"PO-Revision-Date: 2005-12-27 11:59+0000\n"
+"Last-Translator: Hanno Schlichting\n"
+"Language-Team: Plone i18n <plone-i18n at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plone\n"
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr ""
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr ""
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr ""
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr ""
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr ""
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr ""
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr ""
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr ""
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr ""
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr ""
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr ""
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr ""
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr ""
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr ""
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr ""
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr ""
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr ""
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr ""
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr ""
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr ""
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr ""
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr ""
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr ""
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr ""
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr ""
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr ""
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr ""
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr ""
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr ""
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr ""
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr ""
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr ""
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr ""
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr ""
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr ""
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr ""
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr ""
+
+#. Default: "Video"
+msgid "Video"
+msgstr ""
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr ""
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone-pt-br.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone-pt-br.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone-pt-br.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,421 @@
+# PloneHelpCenter
+# Jean Rodrigo Ferri <jeanrodrigoferri at yahoo.com.br>, 2006
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: 2006-05-09 02:43-0300\n"
+"Last-Translator: Jean Rodrigo Ferri <jeanrodrigoferri at yahoo.com.br>\n"
+"Language-Team: TcheZope.org <tchezope at yahoogroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: pt-br\n"
+"Language-Name: Português do Brasil\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plone\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr "Definição"
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr "Referência de Erros"
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr "Seção de Referência de Erros"
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr "FAQ"
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr "Seção de FAQ"
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr "Glossário"
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr "Centro de Ajuda"
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr "Centro de Ajuda"
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr "Definição do Centro de Ajuda"
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr "Referência de Erros do Centro de Ajuda"
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr "Pasta de Referência de Erros do Centro de Ajuda"
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr "FAQ do Centro de Ajuda"
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr "Pasta de FAQ"
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr "Glossário do Centro de Ajuda"
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr "How-To do Centro de Ajuda"
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr "Pasta de How-To do Centro de Ajuda"
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr "Vídeo Instrutivo do Centro de Ajuda"
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr "Pasta de Vídeo Instrutivo do Centro de Ajuda"
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr "Link do Centro de Ajuda"
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr "Pasta de Link do Centro de Ajuda"
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr "Tutorial do Centro de Ajuda"
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr "Pasta de Tutorial do Centro de Ajuda"
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr "Página de Tutorial do Centro de Ajuda"
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr "How-To"
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr "Seção de How-To"
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr "Seção de Link"
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr "Pasta do Centro de Ajuda do Plone"
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr "Tutorial"
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr "Página de Tutorial"
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr "Seção de Tutorial"
+
+#. Default: "Video"
+msgid "Video"
+msgstr "Vídeo"
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr "Seção de Vídeo"
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr ""
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr "Você pode adicionar uma Definição ao Glossário, ela será revisada e aprovada por nosso grupo de documentação."
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr "Você pode adicionar uma Pergunta Feita com Freqüência - FAQ - (de preferência com sua resposta), ela será revisada e aprovada por nosso grupo de documentação."
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr "Esta é a pasta que contém as FAQs, ela permite que você mostre seções individuais."
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr "Esta é a pasta que contém as Definições, ela lista-as com um visual parecido com um dicionário, com links de âncora."
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr "Os links do Centro de Ajuda são links para outra documentação, sites, etc."
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr "Esta é a pasta que contém Links do Centro de Ajuda, ela permite que você mostre seções individuais."
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr "Esta é a pasta que contém conteúdo do Centro de Ajuda do Plone"
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+#, fuzzy
+msgid "description_edit_tutorial"
+msgstr "Um Tutorial pode conter Páginas de Tutorial, Imagens e Arquivos. A ordem do índice é decidida pela ordem da pasta, utilize as setas habituais na visão de conteúdo da pasta para reordenar o conteúdo."
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr "Nenhum resultado encontrado."
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr "Esta pasta não possui itens visíveis. Para adicionar um conteúdo clique no botão adicionar ou cole conteúdo copiado de outro local."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr "Encontrar todos os termos"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr "Encontrar qualquer termo"
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr "Um nível acima"
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr "Resultado da busca"
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr "Lista itens criados por um autor específico"
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr "Lista itens com esta descrição. A combinação de múltiplas palavras pode ser feita através dos operadores <strong>AND</strong> e <strong>OR</strong>"
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr "Lista apenas itens de um tipo de conteúdo específico."
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr "Lista itens que contenham alguma ou todas as palavras-chave selecionadas. A seleção de múltiplas palavras pode ser feita pressionando-se a tecla <strong>Ctrl</strong> (ou <strong>Apple</strong> em um Mac) enquanto se clica na palavra-chave."
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr "Lista os itens criados desde sua última visita, última semana, etc."
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr "Com o papel de Revisor, você pode buscar itens em um determinado estado de revisão. Caso deseje limitar os resultados a apenas itens em um alguns estados, escolha-os através desta listagem."
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr "Para a busca por texto simples, informe o termo a ser utilizado. Múltiplas palavras podem ser combinadas com os operadores <strong>AND</strong> e <strong>OR</strong>. O texto neste campo será comparado com o conteúdo, título e descrição dos itens."
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr "Selecione um item a ser adicionado"
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr "Qualquer autor"
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr "Autor"
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr "Descrição"
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr "Tipo do item"
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr "Palavras-chave"
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr "Novos itens desde"
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr "[ ${percentage} %]"
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr "Estado de revisão"
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr "Texto para busca"
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr "Selecione"
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr "Selecionar todos os itens"
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr "Selecionar Todos/Nenhum"
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr "Último acesso"
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr "Modificado"
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr "Ordenação"
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr "Tamanho"
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr "Estado"
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr "Título"
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr "Este item não possui nenhum corpo, clique na aba editar para modificá-lo."
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr "por ${author}, ${date}"
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr "Não encontrou o resultado que esperava? Utilize a ${advanced_search) para opções mais refinadas de busca."
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr "Busca avançada"
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr "Listagem de conteúdo"
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr "Buscar"
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr "Sempre"
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr "expirado"
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr "Mês passado"
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr "Última semana"
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr "Ontem"
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr "Mover item para baixo"
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr "Mover item para cima"
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr "Relevância"
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plone.pot
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plone.pot	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plone.pot	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,419 @@
+# PloneHelpCenter
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:17+0000\n"
+"PO-Revision-Date: 2005-12-27 11:59+0000\n"
+"Last-Translator: Hanno Schlichting\n"
+"Language-Team: Plone i18n <plone-i18n at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plone\n"
+
+#. Default: "Definition"
+msgid "Definition"
+msgstr ""
+
+#. Default: "Error Reference"
+msgid "Error Reference"
+msgstr ""
+
+#. Default: "Error Reference Section"
+msgid "Error Reference Section"
+msgstr ""
+
+#. Default: "FAQ"
+msgid "FAQ"
+msgstr ""
+
+#. Default: "FAQ Section"
+msgid "FAQ Section"
+msgstr ""
+
+#. Default: "Glossary"
+msgid "Glossary"
+msgstr ""
+
+#. Default: "Help Center"
+msgid "Help Center"
+msgstr ""
+
+#. Default: "Help Center"
+msgid "HelpCenter"
+msgstr ""
+
+#. Default: "Help Center Definition"
+msgid "HelpCenterDefinition"
+msgstr ""
+
+#. Default: "Help Center Error Reference"
+msgid "HelpCenterErrorReference"
+msgstr ""
+
+#. Default: "Help Center Error Reference Folder"
+msgid "HelpCenterErrorReferenceFolder"
+msgstr ""
+
+#. Default: "HelpCenter FAQ"
+msgid "HelpCenterFAQ"
+msgstr ""
+
+#. Default: "FAQ Folder"
+msgid "HelpCenterFAQFolder"
+msgstr ""
+
+#. Default: "Help Center Glossary"
+msgid "HelpCenterGlossary"
+msgstr ""
+
+#. Default: "Help Center How-To"
+msgid "HelpCenterHowTo"
+msgstr ""
+
+#. Default: "HelpCenter How To Folder"
+msgid "HelpCenterHowToFolder"
+msgstr ""
+
+#. Default: "Help Center Instructional Video"
+msgid "HelpCenterInstructionalVideo"
+msgstr ""
+
+#. Default: "Help Center Instructional Video Folder"
+msgid "HelpCenterInstructionalVideoFolder"
+msgstr ""
+
+#. Default: "Help Center Link"
+msgid "HelpCenterLink"
+msgstr ""
+
+#. Default: "Help Center Link Folder"
+msgid "HelpCenterLinkFolder"
+msgstr ""
+
+#. Default: "Help Center Tutorial"
+msgid "HelpCenterTutorial"
+msgstr ""
+
+#. Default: "Help Center Tutorial Folder"
+msgid "HelpCenterTutorialFolder"
+msgstr ""
+
+#. Default: "Help Center Tutorial Page"
+msgid "HelpCenterTutorialPage"
+msgstr ""
+
+#. Default: "How-to"
+msgid "How-to"
+msgstr ""
+
+#. Default: "How-to Section"
+msgid "How-to Section"
+msgstr ""
+
+#. Default: "Link Section"
+msgid "Link Section"
+msgstr ""
+
+#. Default: "Plone Help Center Folder"
+msgid "PHCFolder"
+msgstr ""
+
+#. Default: "Tutorial"
+msgid "Tutorial"
+msgstr ""
+
+#. Default: "Tutorial Page"
+msgid "Tutorial Page"
+msgstr ""
+
+#. Default: "Tutorial Section"
+msgid "Tutorial Section"
+msgstr ""
+
+#. Default: "Video"
+msgid "Video"
+msgstr ""
+
+#. Default: "Video Section"
+msgid "Video Section"
+msgstr ""
+
+#. Default: "${number} items matching your criteria."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "batch_x_items_matching_your_criteria"
+msgstr ""
+
+#. Default: "You can add a Definition to the Glossary, and it will be reviewed and approved by our documentation team."
+msgid "description_edit_definition"
+msgstr ""
+
+#. Default: "You can add a Frequently Asked Question (preferrably with an answer), and it will be reviewed and approved by our documentation team."
+msgid "description_edit_faq"
+msgstr ""
+
+#. Default: "This is a folder that holds FAQs, and it allows you to display individual sections."
+msgid "description_edit_faqfolder"
+msgstr ""
+
+#. Default: "This is a folder that holds Definitions, and it lists them in a dictionary-like fashion, with anchor links."
+msgid "description_edit_glossary"
+msgstr ""
+
+#. Default: "Help Center links are links to other documentation, etc."
+msgid "description_edit_link"
+msgstr ""
+
+#. Default: "This is a folder that holds Help Center Links, and it allows you to display individual sections."
+msgid "description_edit_linkfolder"
+msgstr ""
+
+#. Default: "This is a folder that holds PHC content"
+msgid "description_edit_phc"
+msgstr ""
+
+#. Default: "A Tutorial can contain Tutorial Pages, Image and Files. Index order is decided by the folder order, use the normal up/down selectors to rearrange content."
+msgid "description_edit_tutorial"
+msgstr ""
+
+#. Default: "No results were found."
+#: ../skins/plone_help_center/phc_search.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "description_no_results_found"
+msgstr ""
+
+#. Default: "This folder has no visible items. To add content, press the add button, or paste content from another location."
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "description_no_visible_items_add_paste"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_and"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_subject_or"
+msgstr ""
+
+#. Default: "Up one level"
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "go_to_parent_url"
+msgstr ""
+
+#. Default: "Search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "heading_search_results"
+msgstr ""
+
+#. Default: "Return items created by a particular person."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_author"
+msgstr ""
+
+#. Default: "Return items matching this description. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_description"
+msgstr ""
+
+#. Default: "Return items of a specific type."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_item_type"
+msgstr ""
+
+#. Default: "Return items matching some or all of these keywords. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_keywords"
+msgstr ""
+
+#. Default: "Return items added since you were last logged on, the last week, etc."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_new_items_since"
+msgstr ""
+
+#. Default: "As a reviewer, you may search for items based on their review state. If you wish to constrain results to items in certain states, select them from this list."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_review_status"
+msgstr ""
+
+#. Default: "For a simple text search, enter your search term here. Multiple words may be found by combining them with <strong>AND</strong> and <strong>OR</strong>. The text in this field will be matched with items' contents, title and description."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_text"
+msgstr ""
+
+#. Default: "Select an item to add"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_add_item"
+msgstr ""
+
+#. Default: "Any Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_any_author"
+msgstr ""
+
+#. Default: "Author"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_author"
+msgstr ""
+
+#. Default: "Description"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_description"
+msgstr ""
+
+#. Default: "Item type"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_item_type"
+msgstr ""
+
+#. Default: "Keywords"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_keywords"
+msgstr ""
+
+#. Default: "New items since"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_new_items_since"
+msgstr ""
+
+#. Default: "[ ${percentage} %]"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "label_relevance_percentage"
+msgstr ""
+
+#. Default: "Review status"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_review_status"
+msgstr ""
+
+#. Default: "Search Text"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_search_text"
+msgstr ""
+
+#. Default: "Select"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "label_select"
+msgstr ""
+
+#. Default: "Select all items"
+#: ../skins/plone_help_center/phc_attachments.pt
+#: ../skins/plone_help_center/phc_stats_search.cpt
+msgid "label_select_all_items"
+msgstr ""
+
+#. Default: "Select All/None"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_toggle"
+msgstr ""
+
+#. Default: "Last log-in"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "last_login"
+msgstr ""
+
+#. Default: "Modified"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_modified"
+msgstr ""
+
+#. Default: "Order"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_order"
+msgstr ""
+
+#. Default: "Size"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_size"
+msgstr ""
+
+#. Default: "State"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_status"
+msgstr ""
+
+#. Default: "Title"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "listingheader_title"
+msgstr ""
+
+#. Default: "This item does not have any body text, click the edit tab to change it."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "no_body_text"
+msgstr ""
+
+#. Default: "by ${author}, ${date}"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "results_by_author"
+msgstr ""
+
+#. Default: "Did you not find what you were looking for? Try the ${advanced_search} for more precise search options."
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced"
+msgstr ""
+
+#. Default: "Advanced Search"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "search_results_advanced_link"
+msgstr ""
+
+#. Default: "Content listing"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "summary_content_listing"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "text_search"
+msgstr ""
+
+#. Default: "Ever"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_ever"
+msgstr ""
+
+#. Default: "expired"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "time_expired"
+msgstr ""
+
+#. Default: "Last month"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_month"
+msgstr ""
+
+#. Default: "Last week"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_last_week"
+msgstr ""
+
+#. Default: "Yesterday"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "time_yesterday"
+msgstr ""
+
+#. Default: "Move item down"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_down"
+msgstr ""
+
+#. Default: "Move item up"
+#: ../skins/plone_help_center/phc_attachments.pt
+msgid "title_move_item_up"
+msgstr ""
+
+#. Default: "Relevance"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "title_relevance"
+msgstr ""
+


Property changes on: gzo/trunk/products/PloneHelpCenter/i18n/plone.pot
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter-manual.pot
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter-manual.pot	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter-manual.pot	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,369 @@
+# PloneHelpCenter
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2005-12-27 11:59+0000\n"
+"PO-Revision-Date: 2005-12-27 11:59+0000\n"
+"Last-Translator: Hanno Schlichting\n"
+"Language-Team: Plone i18n <plone-i18n at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr ""
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr ""
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr ""
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr ""
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr ""
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr ""
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr ""
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr ""
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr ""
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr ""
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr ""
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr ""
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr ""
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr ""
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr ""
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr ""
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr ""
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr ""
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr ""
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr ""
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr ""
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr ""
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr ""
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr ""
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr ""
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr ""
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr ""
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr ""
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr ""
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr ""
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr ""
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr ""
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr ""
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr ""
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr ""
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr ""
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr ""
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr ""
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr ""
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr ""
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr ""
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr ""
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr ""
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr ""
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr ""
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr ""
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr ""
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr ""
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr ""
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr ""
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr ""
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr ""
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr ""
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter.pot
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter.pot	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/plonehelpcenter.pot	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,1071 @@
+# PloneHelpCenter
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2005-12-27 11:59+0000\n"
+"Last-Translator: Hanno Schlichting\n"
+"Language-Team: Plone i18n <plone-i18n at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: en\n"
+"Language-Name: English\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr ""
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr ""
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr ""
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr ""
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr ""
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr ""
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr ""
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr ""
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr ""
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr ""
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr ""
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr ""
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr ""
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr ""
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr ""
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr ""
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr ""
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr ""
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr ""
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr ""
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr ""
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr ""
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr ""
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr ""
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr ""
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr ""
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr ""
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr ""
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr ""
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr ""
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr ""
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr ""
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr ""
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr ""
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr ""
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr ""
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr ""
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr ""
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr ""
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr ""
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr ""
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr ""
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr ""
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr ""
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr ""
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr ""
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr ""
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr ""
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr ""
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr ""
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr ""
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr ""
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr ""
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr ""
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr ""
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr ""
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr ""
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr ""
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr ""
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr ""
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr ""
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr ""
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr ""
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr ""
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr ""
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr ""
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr ""
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr ""
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr ""
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr ""
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr ""
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr ""
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr ""
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr ""
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr ""
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr ""
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr ""
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr ""
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr ""
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr ""
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr ""
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr ""
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr ""
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr ""
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr ""
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr ""
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr ""
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr ""
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr ""
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr ""
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr ""
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr ""
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr ""
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr ""
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr ""
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr ""
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr ""
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr ""
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr ""
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr ""
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
+
+#. Default: "Any audience"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "Any audience" 
+msgstr "Toute audience"
+
+#. Default: "Description for the Error Reference section."
+#: ../content/ErrorReferenceFolder.py
+msgid "description_edit_ErrorReferenceFolder"
+msgstr ""
+
+#. Default: "An Error Reference Section can contain references to and explanations of common errors."
+#: ../content/ErrorReferenceFolder.py
+msgid "description_edit_errorreferencefolder"
+msgstr ""
+
+#. Default: "Description"
+#: ../content/ErrorReferenceFolder.py
+msgid "description_label_ErrorReferenceFolder"
+msgstr ""
+
+#. Default: "An Error Reference can be used to explain a particular error which may arise."
+#: ../content/ErrorReference.py
+msgid "description_edit_errorreference"
+msgstr ""
+
+#. Default: "A Tutorial can contain Tutorial Pages, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/Tutorial.py
+msgid "description_edit_tutorial"
+msgstr ""
+
+#. Default: "One type of audience on each line. If you leave this blank, audience information will not be used. Audience is typically 'End user', 'Developer' and similar."
+#: ../content/HelpCenter.py
+msgid "phc_audience_helpcenter"
+msgstr ""
+
+#. Default: "Documentation Audiences"
+#: ../content/HelpCenter.py
+msgid "phc_label_audience_helpcenter"
+msgstr ""
+
+#. Default: "Copyright"
+#: ../content/HelpCenter.py
+msgid "phc_label_copyrights_helpcenter"
+msgstr ""
+
+#. Default: "Copyright info for all content in the helpcenter."
+#: ../content/HelpCenter.py
+msgid "phc_copyrights_helpcenter"
+msgstr ""
+
+#. Default: "A How-to is a document describing how to address a single, common use-case or issue. You may add images and files as attachments."
+#: ../content/HowTo.py
+msgid "description_edit_howto"
+msgstr ""
+
+#. Default: "A How-to Section can contain how-to documents."
+#: ../content/HowToFolder.py
+msgid "description_edit_howtofolder"
+msgstr ""
+
+#. Default: "Description for the Link section."
+#: ../content/LinkFolder.py
+msgid "description_description_LinkFolder"
+msgstr ""
+
+#. Default: "Description"
+#: ../content/LinkFolder.py
+msgid "label_description_LinkFolder"
+msgstr ""
+
+#. Default: "A Link Section can contain links to other documentation."
+#: ../content/LinkFolder.py
+msgid "description_edit_linkfolder"
+msgstr ""
+
+#. Default: "Links are links to other documentation and resources."
+#: ../content/Link.py
+msgid "description_edit_link"
+msgstr ""
+
+#. Default: "A Reference Manual can contain Reference Manual Pages and Sections, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/ReferenceManual.py
+msgid "description_edit_referencemanual"
+msgstr ""
+
+#. Default: "Description for the reference manual section."
+#: ../content/ReferenceManualFolder.py
+msgid "phc_desc_folder_referencemanual"
+msgstr ""
+
+#. Default: "Description"
+#: ../content/ReferenceManualFolder.py
+msgid "phc_label_folder_referencemanual"
+msgstr ""
+
+#. Default: "A Reference Manual Section can contain reference manuals for individual projects and larger documentation efforts."
+#: ../content/ReferenceManualFolder.py
+msgid "description_edit_referencemanualfolder"
+msgstr ""
+
+#. Default: "Enter a brief description."
+#: ../content/ReferenceManualPage.py
+msgid "phc_desc_referencemanual_page"
+msgstr ""
+
+#. Default: "Description"
+#: ../content/ReferenceManualPage.py
+msgid "phc_label_referencemanual_page"
+msgstr ""
+
+#. Default: "The body text."
+#: ../content/ReferenceManualPage.py
+msgid "phc_desc_body_referencemanual"
+msgstr ""
+
+#. Default: "Body text"
+#: ../content/ReferenceManualPage.py
+msgid "phc_label_body_referencemanual"
+msgstr ""
+
+#. Default: "A Reference Manual Page contains the text of one of the pages of the the reference manual, usually confined to a single topic."
+#: ../content/ReferenceManualPage.py
+msgid "description_edit_referencemanualpage"
+msgstr ""
+
+#. Default: "Enter a brief description for this section of the manual."
+#: ../content/ReferenceManualSection.py
+msgid "phc_desc_referencemanual_section"
+msgstr ""
+
+#. Default: "Description"
+#: ../content/ReferenceManualSection.py
+msgid "phc_label_referencemanual_section"
+msgstr ""
+
+#. Default: "A Reference Manual Section can contain Reference Manual Pages, and other Reference Manual (Sub-)Sections. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/ReferenceManualSection.py
+msgid "description_edit_referencemanualsection"
+msgstr ""
+
+#. Default: "Audience(s) this item is targetted at."
+#: ../content/schemata.py
+msgid "phc_audiences"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../content/schemata.py
+msgid "phc_label_audiences"
+msgstr ""
+
+#. Default: "Enter additional names (no need to include the current owner) for those who have contributed to this entry, one per line."
+#: ../content/schemata.py
+msgid "help_contributors"
+msgstr ""
+
+#. Default: "Contributors"
+#: ../content/schemata.py
+msgid "label_contributors"
+msgstr ""
+
+#. Default: "Description for the tutorials section."
+#: ../content/TutorialFolder.py
+msgid "phc_desc_folder_tutorial"
+msgstr ""
+
+#. Default: "A Tutorial Section can contain tutorial-length, multi-page documentation."
+#: ../content/TutorialFolder.py
+msgid "description_edit_tutorialfolder"
+msgstr ""
+
+#. Default: "A Tutorial Page contains the text of a single page of the tutorial."
+#: ../content/Tutorial.py
+msgid "description_edit_tutorialpage"
+msgstr ""
+
+#. Default: "A Video Section can contain instructional Flash videos."
+#: ../content/InstructionalVideoFolder.py
+msgid "description_edit_instructionalvideofolder"
+msgstr ""
+
+#. Default: "An Instructional Video can be used to upload Flash instructional videos."
+#: ../content/InstructionalVideo.py
+msgid "description_edit_instructionalvideo"
+msgstr ""
+
+#. Default: "A Definition defines a special term, and will be listed in the glossary."
+#: ../content/Definition.py
+msgid "description_edit_definition"
+msgstr ""
+
+#. Default: "A Glossary can be used to hold definitions of common terms, listing them in a dictionary-like manner."
+#: ../content/Glossary.py
+msgid "description_edit_glossary"
+msgstr ""
+
+#. Default: "A Frequently Asked Question defines a common question with an answer - this is a place to document answers to common questions, not ask them."
+#: ../content/FAQ.py
+msgid "description_edit_faq"
+msgstr ""
+
+#. Default: "An FAQ Section can hold frequently asked questions with answers."
+#: ../content/FAQFolder.py
+msgid "description_edit_faqfolder"
+msgstr ""
+
+#. Default: "Constrain Searches"
+msgid "phc_label_constrainSearches_helpcenter"
+msgstr ""
+
+#. Default: "Constrain the results of Help Center searches to this document area. Turn this off to search the entire site. This affects only the Help Center's search facility, not the global search."
+msgid "phc_copyrights_helpcenter"
+msgstr ""
+
+#. Default: All documentation
+#: ../skins/plone_help_center/helpcenter_view.pt
+#: ../skins/plone_help_center/helpcenter_topicview.pt
+#: ../skins/plone_help_center/phc_topic_area.pt
+msgid "phc_all_docs"
+msgstr ""

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/chart.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/chart.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/chart.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+"""
+   Usage: chart.py <product>
+   Note that PYTHON and I18NDUDE must have been set as enviroment variables before calling this script
+"""
+
+import os, sys
+from utils import getPoFilesAsCmdLine, getLongProductName
+
+__PYTHON = os.environ.get('PYTHON', '')
+__I18NDUDE = os.environ.get('I18NDUDE', '')
+
+def main():
+    if len(sys.argv) == 1:
+        print 'You have to specify the product.'
+        sys.exit(1)
+
+    product = getLongProductName(sys.argv[1])
+    pot = '%s.pot' % product
+    chart = os.curdir + os.sep + 'charts' + os.sep + '%s-chart.gif' % product
+
+    os.chdir('..')
+
+    if not os.path.isfile(pot):
+        print 'No pot was found for the given product.'
+        sys.exit(2)
+
+    poFiles = getPoFilesAsCmdLine(product)
+    if poFiles == '':
+        print 'No po-files were found for the given product.'
+        sys.exit(3)
+
+    os.system(__PYTHON + ' ' + __I18NDUDE + (' chart -o %s --pot %s %s') % (chart, pot, poFiles))
+
+if __name__ == '__main__':
+    main()

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/filter.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/filter.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/filter.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+"""
+   Usage: filter.py <target-product> <source-product>
+
+   Filter out all msgid's in target product that are already in source product.
+
+   Note that PYTHON and I18NDUDE must have been set as enviroment variables before calling this script
+"""
+
+import os, sys
+
+__PYTHON = os.environ.get('PYTHON', '')
+__I18NDUDE = os.environ.get('I18NDUDE', '')
+
+def main():
+    if len(sys.argv) < 3:
+        print 'You have to specify the target and source product.'
+        sys.exit(1)
+
+    target = sys.argv[1]+'.pot'
+    source = sys.argv[2]+'.pot'
+
+    os.chdir('..')
+
+    if not os.path.isfile(source):
+        print 'Source pot was not found for the given product.'
+        sys.exit(2)
+
+    if not os.path.isfile(target):
+        print 'Target pot was not found for the given product.'
+        sys.exit(3)
+
+    os.system(__PYTHON + ' ' + __I18NDUDE + (' filter %s %s > %s-new') % (target, source, target))
+
+if __name__ == '__main__':
+    main()

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/rebuild-pot.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/rebuild-pot.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/rebuild-pot.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+
+"""
+   Usage: rebuild-pot.py <product> <path to products skins dir>
+   Note that PYTHON and I18NDUDE must have been set as enviroment variables before calling this script
+
+   If you are really lazy you can also use atct, atrbw and at as shorthands and if you set your
+   INSTANCE_HOME correct, provide '-i' as second argument. This will automagically use the right version.
+
+   So 'rebuilt-pot.py atrbw -i' is a valid shorthand.
+"""
+
+import os, sys, string
+from utils import getLongProductName
+
+try:
+    import win32api
+    WIN32 = True
+except ImportError:
+    WIN32 = False
+
+__PYTHON = os.environ.get('PYTHON', '')
+__I18NDUDE = os.environ.get('I18NDUDE', '')
+__INSTANCE_HOME = os.environ.get('INSTANCE_HOME', '')
+
+def main():
+    if len(sys.argv) < 3:
+        print 'You have to specify the product und skins directory.'
+        sys.exit(1)
+
+    product = sys.argv[1]
+
+    product = getLongProductName(product)
+
+    pot = product + '.pot-new'
+    manualpot = '%s-manual.pot' % product
+    generatedpot = '%s-generated.pot' % product
+    log = 'rebuild-%s-pot.log' % product
+
+    domain = product
+
+    os.chdir('..')
+
+    if not os.path.isfile(manualpot):
+        print 'Manual pot missing for the given product: %s.' % manualpot
+        sys.exit(2)
+
+    skins = sys.argv[2]
+
+    skinserror = False
+    if not os.path.isdir(skins):
+        if skins == '-i':
+            skins = os.path.join(__INSTANCE_HOME, 'Products')
+            if os.path.isdir(skins):
+                if product == 'plonehelpcenter':
+                    skins = os.path.join(skins, 'PloneHelpCenter')
+                elif product == 'plone':
+                    skins = os.path.join(skins, 'PloneHelpCenter')
+                skins = os.path.join(skins, 'skins')
+            else:
+                skinserror = True
+        else:
+            skinserror = True
+
+    if skinserror:
+        print 'Skins directory (%s) could not be found.' % skins
+        sys.exit(3)
+
+    print 'Using %s to build new pot.\n' % skins
+
+    cmd = __PYTHON + ' ' + __I18NDUDE + (' rebuild-pot --pot %s --create %s --merge %s ') % (pot, domain, manualpot)
+    cmd += '%s > %s 2>&1' % (skins, log)
+
+    print 'Rebuilding to %s - this takes a while, logging to %s' % (pot, log)
+    os.system(cmd)
+
+    # Remove ## X more: occurences
+    os.system('sed -r "/## [0-9]+ more:/d" %s > %s2' % (pot, pot))
+
+    # Make paths relative to products skins dir
+    step3 = pot
+    if WIN32:
+        step3 = step3 + '3'
+    os.system('sed -r "s,%s,\.,g" %s2 > %s' % (string.replace(skins, '\\', '\\\\'), pot, step3))
+    os.remove('%s2' % pot)
+
+    if WIN32:
+        # Make directory separator unix like
+        os.system('sed -r "/^#:.*/s,\\\\,/,g" %s3 > %s' % (pot, pot))
+        os.remove('%s3' % pot)
+
+if __name__ == '__main__':
+    main()

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.bat.example
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.bat.example	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.bat.example	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,30 @@
+ at echo off
+rem
+rem path to your Python executable used to run Zope
+rem
+
+set PYTHON=c:\zope\bin\python.exe
+
+rem
+rem path to the i18ndude script
+rem if you installed i18ndude using "python setup.py install" it should be
+rem under the scripts folder of Zope's Python install
+rem
+
+set I18NDUDE=c:\zope\bin\Scripts\i18ndude
+
+rem
+rem path to your instance home
+rem this is the folder containing the etc, var, Products, ... folders
+rem containing your real data
+rem
+
+set INSTANCE_HOME=c:\zope\Data
+
+rem
+rem path to your software home
+rem this is the folder containing Zope's modules like AccessControl,
+rem Acquisition, App, ... and Testing
+rem
+
+set SOFTWARE_HOME=c:\zope\lib\python
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.sh.example
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.sh.example	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/setenv.sh.example	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+PYTHON=/usr/bin/python
+
+# Locate Plone dir
+PWD=`pwd`
+PARENT=`dirname $PWD`
+
+[ -e $PARENT/PloneTool.py ] && PLONE=$PARENT
+[ -e $PARENT/CMFPlone/PloneTool.py ] && PLONE=$PARENT/CMFPlone
+
+if [ -z $PLONE ]; then
+    echo "Unable to locate Plone dir!"
+    exit 1
+fi
+
+[ -e $PLONE/../i18ndude/i18ndude ] && I18NDUDE=$PLONE/../i18ndude/i18ndude
+
+if [ -z $I18NDUDE ]; then
+    echo "Unable to locate i18ndude utility!"
+    exit 2
+fi
+
+export PYTHON I18DUDE

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/sync.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/sync.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/sync.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+"""
+   Usage: sync.py [<product> | <language-code>]
+   Note that PYTHON and I18NDUDE must have been set as enviroment variables before calling this script
+"""
+
+import os, sys
+from utils import getPoFilesAsCmdLine, getPoFilesByLanguageCode, getProduct, getPotFiles, getLongProductName
+
+__PYTHON = os.environ.get('PYTHON', '')
+__I18NDUDE = os.environ.get('I18NDUDE', '')
+
+def main():
+    if len(sys.argv) == 1:
+        print 'You have to specify a product or a language code.'
+        sys.exit(1)
+
+    product = getLongProductName(sys.argv[1])
+    pot = '%s.pot' % product
+
+    os.chdir('..')
+
+    if not os.path.isfile(pot): # no pot? test for language-code
+        poFiles = getPoFilesByLanguageCode(product)
+        if poFiles:
+            potFiles = getPotFiles()
+            for po in poFiles:
+                for pot in potFiles:
+                    if getProduct(po) == getProduct(pot):
+                        os.system(__PYTHON + ' ' + __I18NDUDE + (' sync --pot %s %s') % (pot, po))
+        else:
+            print 'Neither a pot nor po files for the given argument were found.'
+            sys.exit(3)
+
+    else: # product was given
+        poFiles = getPoFilesAsCmdLine(product)
+        if poFiles == []:
+            print 'No po-files were found for the given product.'
+            sys.exit(4)
+
+        os.system(__PYTHON + ' ' + __I18NDUDE + (' sync --pot %s %s') % (pot, poFiles))
+
+if __name__ == '__main__':
+    main()

Added: gzo/trunk/products/PloneHelpCenter/i18n/utils/utils.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/i18n/utils/utils.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/i18n/utils/utils.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,75 @@
+import os
+
+def getPoFiles(product, all=False):
+    """ Returns all product*.po files in the current folder """
+    files = os.listdir(os.curdir)
+    if all:
+        files = [file for file in files if file.startswith('%s-' % product) and file.endswith('.po')]
+    else:
+        files = [file for file in files if file.startswith('%s-' % product) and file.endswith('.po') and file != '%s-en.po' % product]
+    return files
+
+
+def getPotFiles(all=False):
+    """ Returns all pot files in the current folder
+        Normally it doesn't return manual.pots and generated.pots
+    """
+    files = os.listdir(os.curdir)
+    if all:
+        files = [f for f in files if f.endswith('.pot')]
+    else:
+        files = [f for f in files if f.endswith('.pot') and not f[:-4].endswith('manual') and not f[:-4].endswith('generated')]
+    return files
+
+
+def getPoFilesAsCmdLine(product):
+    files = getPoFiles(product)
+    filestring = ''
+    for file in files:
+        filestring += file + ' '
+    return filestring.rstrip()
+
+
+def getPotFilesAsCmdLine():
+    files = getPotFiles()
+    filestring = ''
+    for file in files:
+        filestring += file + ' '
+    return filestring.rstrip()
+
+
+def getPoFilesByLanguageCode(lang):
+    """ Returns all po files which ends with given language code."""
+    files = os.listdir(os.curdir)
+    files = [file for file in files if file.endswith('.po') and file[:-3].endswith(lang)]
+    return files
+
+
+def getLanguage(product, file):
+    """ Returns the language part of a po-file """
+    lang = None
+    if file.endswith('.po'):
+        if file.startswith(product):
+            lang = '-'.join(file.split('-')[1:])[:-3]
+    return lang
+
+
+def getProduct(file):
+    """ Returns the product part of a file. We assume files to be something like domain-language.po.
+        Example: atcontenttypes-pt-br.po
+    """
+    assert file.endswith('.po') or file.endswith('.pot')
+
+    file = file.split('.')[0] # strip of ending
+    file = file.split('-')[0] # only take product
+
+    return file
+
+
+def getLongProductName(product):
+    """ Returns the product name for a known abbreviation or the given value."""
+    if product in ['phc']:
+        if product == 'phc':
+            product = 'plonehelpcenter'
+    return product
+

Added: gzo/trunk/products/PloneHelpCenter/interfaces.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/interfaces.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/interfaces.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,10 @@
+from zope.interface import Interface
+
+class IHelpCenterContent(Interface):
+    """ The HelpCenter
+    """
+
+class IHelpCenterFolder(Interface):
+    """ Marker interface for PHCFolder class that is
+        the ancestory of the PHC containers.
+    """
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/cs/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,858 @@
+# TextMessage Catalog for Plone HelpCenter.
+# Bobo Ruml, 2006
+# Czech Team for Plone Helpdesk <www.surecase.org>
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2006-01-27 00:55 +0000\n"
+"Last-Translator: Bobo RUML <bohous at bobonet.net>\n"
+"Language-Team: Czech <www.surecase.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: cs\n"
+"Language-Name: Czech\n"
+"Preferred-Encodings: utf-8 latin2\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Jdi"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Vyhledat"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "FAQ se vztahuje k předchozí verzi"
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr "Položka se vztahuje k předchozí verzi"
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Video se vztahuje k předchozí verzi"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "Vyhledávání pomocí klíčových slov"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "all_helptype"
+msgstr "VÅ¡echny ${title}"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Zde napište výstižným způsobem v několika větách odpověď na otázku."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Stručný popis sekce chybových hlášení."
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Stručný popis odkazu."
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Stručný popis pro sekci odkazů."
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Popis"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Více podrobností k otázce, které nejsou patrné z nadpisu."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Odpověď"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Klikni pro zvětšení"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Podrobnosti otázky"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr ""
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr ""
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Poslední ${title}"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "VÅ¡echny verze"
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Tělo"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_contrib_use"
+msgstr "Instrukce jak používat tento produkt a jak se stát přispěvatelem."
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "Čtenáři budou informováni, když obsah nebude souviset s verzí uvedenou v seznamu, protože je možná zastaralý."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Výchozí důležitost hodnocení pro nové příspěvky."
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Termíny"
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Termín se vztahuje k předchozí verzi."
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr "Stručný popis položky."
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Vysvětlení chyby"
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "Textové tělo dokumentu."
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Stručný popis termínu"
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Stručný popis složky FAQ."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Stručný popis složky slovník."
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Stručný popis centra pomoci."
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "Textové tělo dokumentu"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Stručný popis složky Jak-na-to."
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr "Internetová adresa odkazu"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr "Stručný popis položky."
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Stručný popis složky video."
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "Vyhledání dokumentace"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Popisy chyb"
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Popis chyby se vztahuje k:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Sekce chyb"
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Popisy chyb"
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "FAQ"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "FAQ se vztahuje k:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Nejčastěji kladené dotazy"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "FAQ"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "Oblast dokumentace"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Otázka"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Slovníkové termíny"
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Termíny"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Stručný popis položky Jak-na-to."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Stručný popis položky video."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Stručný a výstižný popis příručky. (Položky <b>Nadpis</b> a <b>Popis</b> bodou zobrazeny na každé stránce příručky)."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Stručný a výstižný popis návodu. (Položky <b>Nadpis</b> a <b>Popis</b> bodou zobrazeny na každé stránce návodu)."
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr "Délka videa v minutách."
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr "Výška videa v obrazových bodech."
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr "Můžete vložit ukázku videa (screenshot) pro zvýraznění příspěvku, kliknutím na tlačítko 'Procházet'."
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr "Šířka videa v obrazových bodech."
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Klikněte na tlačítko 'Procházet' pro nahrání souboru Flash .swf"
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "Jak-na-to"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Jak-na-to se vztahuje k:"
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Instrukce krok za krokem."
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "Jak-na-to"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "Důležitost položky"
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Možnosti důležitosti hodnocení obsahu."
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr "Sekce"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Popis"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Tělo"
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Tělo"
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Současné verze"
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Výchozí důležitost"
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Popis"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Popis"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Popis"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Důležitost"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Důležitost"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "Adresa URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Zmíněné položky"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Stručný popis příručky"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "Příbuzné položky"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Sekce"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Sekce"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Popis"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Popis"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Verze"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Verze"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Délka"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Popis"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Výška"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Ukázka"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Šířka"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "Soubor"
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Odkaz:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr "Odkaz se vztahuje k:"
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Odkazy"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Odkazy na související dokumentaci"
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Odkazy"
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Další:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "V centru pomoci nejsou žádné položky."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "z"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Stránka"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Předchozí:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Vyberte jeden nebo více popisů pro položky v centru pomoci."
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Příručky"
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Příručka se vztahuje k:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Rozsáhlé příručky"
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Příručky"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "Seznam klíčových slov může pomoci snažší orientaci mezi položkami. (Pro jednu položku můžete zadat i více klíčových slov)."
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_rss_all"
+msgstr "Dávka RSS pro všechny dokumentační typy"
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Vyberte tématickou sekci, do keré chcete zařadit Váš příspěvek"
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Napište názvy tématických sekcí pro třídění položek. Každou sekci na zvláštní řádek"
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "Návody"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Návod se vztahuje k:"
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Tématické návody"
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Návody"
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Zpět do slovníku"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+#, fuzzy
+msgid "phc_up_to_toc"
+msgstr "Zpět na tabulku položek"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Seznam verzí produktu, ke kterým se budou vztahovat položky v centru pomoci."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "Verze Plone, kterých se týká tato položka"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr "Video se vztahuje k:"
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Instruktážní videa"
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Videa"
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Zobrazit celkový pohled"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Zobrazit celou sekci"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Příbuzné dokumentace"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/de/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,855 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n"
+"Last-Translator: Hannes Mayrhofer <mayhan at another.at>\n"
+"Language-Team: LANGUAGE <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: de\n"
+"Language-Name: German\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+"X-Is-Fallback-For: de-at de-ch\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Los"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Suche"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "Diese FAQ betrifft eine alte Version"
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr ""
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Dieser Film betrifft eine alte Version"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "AccessKeys (Zugangsschlssel) suchen"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "all_helptype"
+msgstr "Alle ${title}"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Sinnvolle Sätze, die die Antwort erklären."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Beschreibung des Bezuges zum Fehlercontainers."
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Beschreibung für den Link."
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Beschreibung des Link Containers."
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Beschreibung"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Beschreibung"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Mehr Details zur Frage, wenn nicht im Titel offensichtlich."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Antwort"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Zum Vergrößern klicken"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Ausführliche Frage"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr ""
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr ""
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Neueste ${title}"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "Alle Versionen"
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Body (Hauptbereich)"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_contrib_use"
+msgstr "Anleitung wie Sie zu diesen Ressourcen beitragen und sie benutzten können."
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "Der Leser wird bei Inhalte dieser Version informiert, dass der Inhalt möglicherweise veraltet ist."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Vorgabewert für die Wichtigkeit von Inhalten."
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Wörterbuch-Definitionen"
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Diese Definition trifft zu auf:"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr "Eine kurze Beschreibung eingeben"
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Erklärung des Fehlers."
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "Der Haupttext."
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Eine Erklärung der Bezeichnung."
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Beschreibung des FAQ Containers."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Beschreibung der Inhaltsangabe."
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Beschreibung des HelpCenters."
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "Der Text der Kurzanleitung"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Beschreibung der Kurzanleitungs-Ordners."
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr "Web Adresse"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr "Eine kurze Beschreibung eingeben"
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Beschreibung des Videobereichs."
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "Dokumentationssuche"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Fehler-Hinweise"
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Diese Fehlerhinweis trifft zu auf:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Bereich-Fehlerhinweise."
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Fehlerhinweise"
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "Häufig gestellte Fragen (FAQ)"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "Diese FAQ betrifft:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Häufig gestellte Fragen (FAQs)"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "FAQs"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "Vollständiger Dokumentationsbereich"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Ausführliche Frage"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Wörterbuch der Bezeichnungen."
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Wörterbuch-Definitionen"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Kurzbeschreibung der Kurzanleitung."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Kurze Inhaltsangabe des Videos."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Eine Zusammenfassung des Handbuches - Ziele und Aussichten. Wird auf jeder Handbuchseite angezeigt."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Eine Zusammenfassung des Tutorial - Ziele und Aussichten. Wird auf jeder Seite der Anleitung angezeigt."
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr "Länge des Videos in Minuten"
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr "Höhe des Videos"
+
+#. Default: "Add a screenshot by clicking the 'Browse' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr "Fügen Sie bitte durch Klicken des 'Durchsuchen' Knopfes einen Screenshot hinzu. Suchen Sie einen Screenshot aus, der den Inhalt des Videos hervorhebt."
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr "Breite des Videos"
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Klicken Sie bitte 'Durchsuchen' um ein Flash-Datei (.swf) hochzuladen."
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "Kurze Anleitung (HowTo)"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Diese Kurzanleitung trifft zu auf:"
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Kurze Schritt-für-Schritt Anleitungen."
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "Kurzanleitung"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "Wichtigkeit dieses Eintrages."
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Liste der Wichtigkeitsbewertungen, die Inhalte verwendet werden sollen."
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Beschreibung"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Haupttext"
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Haupttext"
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Der Leser wird bei Versionen, die nicht in dieser Liste sind, darüber informiert, dass sie möglicherweise nicht mehr aktuell sind."
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Vorgabewert für die Wichtigkeit von Inhalten."
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Beschreibung"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Beschreibung"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Zusammenfassung"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Zusammenfassung"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Beschreibung"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Beschreibung"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Beschreibung"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Beschreibung"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Bedeutung"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Wichtigkeiten"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Referenzelement"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Beschreibung des Benutzerhandbuches"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "verwandte Schlüsselwörter"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Bereiche"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Abschnitt"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Tutorial Beschreibung"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Beschreibung"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Versionen"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Versionen"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Dauer"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Beschreibung"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Höhe"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Screenshot (Bildschirmfoto)"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Breite"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "Flash-Datei (.swf)"
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Link:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr "Dieser Link trifft zu auf:"
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Links"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Bereich-Links."
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Links"
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Weiter:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "Es sind keine Objekte dieser Art enthalten."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "von"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Seite"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Zurck:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Bitte geben Sie einen oder mehrere Hinweise zum HelpCenter an."
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Bedienungsanleitungen"
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Diese Bedienungsanleitung betrifft:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Bedienungsanleitungen für größere Projekte."
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Bedienungsanleitungen"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "Eine Liste der Schlüsselwörter, die zusammen mit dem Inhalt registriert werden sollen (z.B. für ein HowTo zu VerboseSecurity, fügen Sie Verbose Security, ungengende Rechte oder Debugging Sicherheit ein)"
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_rss_all"
+msgstr "RSS-Feeds für alle Dokumentationsarten"
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Bereich(e) wo dieser Eintrag erscheinen soll."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Definiere die vorhandenen Abschnitte um die Einträge einzustufen."
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "Anleitung (Tutorial)"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Dieses Tutorial trifft zu auf:"
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Detaillierte Anleitungen."
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Tutorials"
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Zum Wörterbuch"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+#, fuzzy
+msgid "phc_up_to_toc"
+msgstr "Zum Inhaltsverzeichnis"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Versionen auf die Einträge im HelpCenter verweisen können."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "Versionen des Produktes, die auf diesen Eintrag zutreffen (Frei lassen wenn nicht Versionsspezifisch)"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Einführungsvideos."
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Videos"
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Zeige die ganze FAQ"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Zeige den ganzen Abschnitt"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Neueste Dokumentation"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/es/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,953 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: plonehelpcenter-es\n"
+"POT-Creation-Date: 2006-03-06 15:16+0000\n"
+"PO-Revision-Date: 2007-03-12 11:38+0200\n"
+"Last-Translator: Fernando de los Ríos <fdelosrios at ub.edu>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: es\n"
+"Language-Name: Spanish\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Description"
+msgid "phc_label_referencemanual_section"
+msgstr "Descripción"
+
+#. Default: "Enter a brief description for this section of the manual."
+msgid "phc_desc_referencemanual_section"
+msgstr "Añade una breve descripción para esta sección del manual"
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ./plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr "Nota: Ésta es la vista de impresión del Manual de referencia completo en una sola página. Si lo prefiere puede encontrar la versión original <a tal:attributes=\"href here/absolute_url\">aquí</a>."
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ./plone_help_center/referencemanualpage_view.pt
+msgid "You must publish this page before it becomes visible to the public."
+msgstr "Debe publicar esta página antes de que sea visible al público."
+
+#. Default: "The body text."
+msgid "phc_desc_body_referencemanual"
+msgstr "Contenido del manual."
+
+#. Default: "Body text"
+msgid "phc_label_body_referencemanual"
+msgstr "Texto."
+
+#. Default: "Enter a brief description."
+msgid "phc_desc_referencemanual_page"
+msgstr "Añada una breve descripción."
+
+#. Default: "Description"
+msgid "phc_label_referencemanual_page"
+msgstr "Descripción"
+
+#. Default: "see also:"
+#: ./plone_help_center/helpcenter_references.pt
+msgid "see also:"
+msgstr "vea también:"
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ./plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr "Use el menú 'agregar un nuevo ítem' para añadir Secciones, Páginas, Archivos o Imágenes. Las secciones pueden anidarse a cualquier profundidad pero se recomienda no hacerlo en más de tres o cuatro niveles para una buena legibilidad."
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ./plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr "No hay páginas o secciones en este Manual de referencia."
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a tal:attributes=\"href here/absolute_url\">The paginated version is available here</a>, if you prefer that."
+#: ./plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr "Nota: Ésta es la vista de impresión del Tutorial completo en una sola página. Si lo prefiere puede encontrar la versión original <a tal:attributes=\"href here/absolute_url\">aquí</a>."
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ./plone_help_center/tutorial_view.pt
+msgid "All content on one page (useful for printing, presentation mode etc.)"
+msgstr "Todo el contenido en una página (útil para impresión, modo de presentación, etc.)"
+
+#. Default: "Audience(s) this item is targetted at."
+msgid "phc_audiences"
+msgstr "Audiencia(s) para las que va dirigido este ítem."
+
+#. Default: "Audiences"
+msgid "phc_label_audiences"
+msgstr "Audiencias"
+
+#. Default: "Duration:"
+#: ./plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr "Duración:"
+
+#. Default: "Size:"
+#: ./plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr "Tamaño:"
+
+#. Default: "minutes"
+#: ./plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr "minutos"
+
+#. Default: "Description"
+msgid "description_label_LinkFolder"
+msgstr "Descripción"
+
+#. Default: "Description for the Link section."
+msgid "description_description_LinkFolder"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "description_label_ErrorReferenceFolder"
+msgstr "Descripción"
+
+#. Default: "Description for the Error Reference section."
+msgid "description_edit_ErrorReferenceFolder"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "phc_label_folder_referencemanual"
+msgstr "Descripción"
+
+#. Default: "Description for the reference manual section."
+msgid "phc_desc_folder_referencemanual"
+msgstr "Descripción"
+
+#. Default: "Search for content"
+#: ./plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr "Búsqueda"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ./plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr "Utilizando los siguientes criterios puede encontrar y modificar contenidos desde la página de resultados."
+
+#. Default: "Find and modify content"
+#: ./plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr "Busca y modifica contenidos"
+
+#. Default: "This form aids maintenance of help center content."
+#: ./plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr "Este formulario ayuda a mantener los contenidos del Help Center."
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ./plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr "Estadísticas y mantenimiento del Help Center"
+
+#. Default: "Documentation Audiences"
+msgid "phc_label_audience_helpcenter"
+msgstr "Audiencias"
+
+#. Default: "One type of audience on each line. If you leave this blank, audience information will not be used. Audience is typically 'End user', 'Developer' and similar."
+msgid "phc_audience_helpcenter"
+msgstr "Un tipo de audiencia en cada línea. Si lo deja en blanco, la información sobre la audiencia no será usada. Ejemplos de audiencia: 'Usuario final', 'Desarrollador', etc."
+
+#. Default: "Copyright"
+msgid "phc_label_copyrights_helpcenter"
+msgstr "Copyright"
+
+#. Default: "Copyright info for all content in the helpcenter."
+msgid "phc_copyrights_helpcenter"
+msgstr " Información sobre el Copyright aplicable al contenido del Help Center"
+
+#. Default: "in"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "in"
+msgstr "en"
+
+#. Default: "Go"
+#: ./plone_help_center/referencemanual_macros.pt
+#: ./plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Ir"
+
+#. Default: "RSS Feed"
+#: ./plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr "Hilo RSS"
+
+#. Default: "RSS feed of these search results"
+#: ./plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr "Hilo RSS de los resultados de la búsqueda."
+
+#. Default: "Search"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "Search"
+msgstr "Búsqueda"
+
+#. Default: "This FAQ applies to a previous version"
+#: ./plone_help_center/faqfolder_view.pt
+#: ./plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "Este FAQ se aplica a una versión anterior."
+
+#. Default: "This item applies to a previous version"
+#: ./plone_help_center/glossary_view.pt
+#: ./plone_help_center/phcfolder_view.pt
+#: ./plone_help_center/phc_genericfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr "Este ítem se aplica a una versión anterior."
+
+#. Default: "This video applies to a previous version"
+#: ./plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Este vídeo se aplica a una versión anterior."
+
+#. Default: "accesskeys-search"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "accesskeys-search"
+msgstr "Teclas rápidas de búsqueda"
+
+#. Default: "All ${title}"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr "Todo ${title}"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ./plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr "Más <tal:center replace=\"center/Title\">Documentación</tal:center> …"
+
+#. Default: "No stale items found in the Help Center."
+#: ./plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr "No hay ítems obsoletos en el Help Center."
+
+#. Default: "Stale Help Center Items"
+#: ./plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr "Elementos obsoletos"
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Frases significativas que explican la respuesta."
+
+#. Default: "Match all"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "description_audiences_and"
+msgstr "Coincidir con todas"
+
+#. Default: "Has more than one audience selected"
+#: ./plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr "Tiene más de una audiencia seleccionada"
+
+#. Default: "Match any"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "description_audiences_or"
+msgstr "Coincidir con cualquiera"
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Descripción del contenedor de referencias de error"
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Descripción del link"
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Descripción del contenedor de enlaces"
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Descripción"
+
+#. Default: "Match all"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "description_sections_and"
+msgstr "Coincidir con todos los elementos"
+
+#. Default: "Has more than one section selected"
+#: ./plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr "Tiene más de un elemento seleccionado"
+
+#. Default: "Match any"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "description_sections_or"
+msgstr "Coincidir con cualquier elemento"
+
+#. Default: "Match all"
+#: ./plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr "Coincidir con todos los elementos"
+
+#. Default: "Has more than one version selected"
+#: ./plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr "Tiene más de una versión seleccionada"
+
+#. Default: "Match any"
+#: ./plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr "Coincidir con cualquier elemento"
+
+#. Default: "Someone has commented on <span tal:condition=\"comment_on_type\" tal:define=\"content string:your $comment_on_type, \" tal:replace=\"content\"/> \" <span tal:replace=\"comment_on_object/title_or_id\"/> \". If you are the author of this item: We recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. If further clarification is needed, reply to the comment, and the person will get a notification like this, and will likely give you more details. To view the new comment, visit: <span tal:replace=\"comment_on_object/absolute_url\"/>"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr "Alguien ha opinado sobre <span tal:condition=\"comment_on_type\" tal:define=\"content string:your $comment_on_type, \" tal:replace=\"content\"/> \" <span tal:replace=\"comment_on_object/title_or_id\"/> \". Si es el autor de este elemento: le recomendamos que lea el comentario, actualice la documentación si fuera necesario y borre el comentario. Si necesita aclarar lo expuesto, responda al comentario y la persona recibirá una notificación como ésta, probablemente le dé más detalles. Para ver el nuevo comentario visite: <span tal:replace=\"comment_on_object/absolute_url\"/>"
+
+#. Default: "Someone has replied to your comment, <span tal:replace=\"comment_on_object/title_or_id\"/>. To view the reply, visit <span tal:replace=\"comment_on_object/absolute_url\"/>"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr "Alguien ha respondido a tu comentario, <span tal:replace=\"comment_on_object/title_or_id\"/>. Para ver la respuesta visite <span tal:replace=\"comment_on_object/absolute_url\"/>"
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Más detalles sobre la pregunta, si no es suficientemente claro el título."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "help_search_audiences"
+msgstr "Devuelve los elementos destinados a las audiencias seleccionadas. Puede seleccionar varias presionando <strong>Ctrl</strong> (o la tecla <strong>Apple</strong>  en Mac) mientras hace click sobre ellas. También puede limitar su búsqueda a sólo aquellos elementos con más de una audiencia seleccionada."
+
+#. Default: "Return items that have comments."
+#: ./plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr "Devuelve elementos que tenga comentarios."
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "help_search_sections"
+msgstr "Devuelve elementos ubicados en las secciones seleccionadas. Puede seleccionar varias presionando <strong>Ctrl</strong> (o la tecla <strong>Apple</strong>  en Mac) mientras hace click sobre ellas. También puede limitar su búsqueda a sólo aquellos elementos con más de una sección seleccionada."
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ./plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr "Devuelve elementos correspondientes a las versiones seleccionadas. Puede seleccionar varias presionando <strong>Ctrl</strong> (o la tecla <strong>Apple</strong>  en Mac) mientras hace click sobre ellas. También puede limitar su búsqueda a sólo aquellos elementos con más de una versión seleccionada."
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Respuesta"
+
+#. Default: "Audiences"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "label_audiences"
+msgstr "Audiencias"
+
+#. Default: "Click to enlarge"
+#: ./plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Click para ampliar"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Pregunta detallada"
+
+#. Default: "Has comments"
+#: ./plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr "Tiene comentarios"
+
+#. Default: "Sections"
+#: ./plone_help_center/phc_stats.cpt
+#: ./plone_help_center/phc_stats.pt
+msgid "label_sections"
+msgstr "Secciones"
+
+#. Default: "Versions"
+#: ./plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr "Versiones"
+
+#. Default: "Latest ${title}"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Últimos ${title}"
+
+#. Default: "Any audience."
+#: ./plone_help_center/errorreference_view.pt
+#: ./plone_help_center/howto_view.pt
+#: ./plone_help_center/referencemanual_view.pt
+msgid "phc_any_audience"
+msgstr "Cualquier audiencia"
+
+#. Default: "Any version."
+#: ./plone_help_center/definition_view.pt
+#: ./plone_help_center/errorreference_view.pt
+#: ./plone_help_center/faqfolder_view.pt
+msgid "phc_any_version"
+msgstr "Cualquier versión"
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Cuerpo del texto"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_contrib_use"
+msgstr "Instrucciones de cómo contribuir y usar este recurso."
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "Los lectores serán informados cuando el contenido haga referencia a versiones que no estén en la lista, podría estar obsoleto."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Criterio de relevancia por defecto para nuevo contenido."
+
+#. Default: "Glossary definitions"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Definiciones del glosario"
+
+#. Default: "This Definition applies to:"
+#: ./plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Esta definición se aplica a:"
+
+#. Default: "Enter a brief description."
+msgid "phc_desc_ErrorReference"
+msgstr "Introduzca una breve descripción."
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Explicación del error."
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "Cuerpo del texto"
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Una explicación del término."
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Descripción"
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Descripción"
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Descripción"
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "Descripción"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Descripción"
+
+#. Default: "Web address."
+msgid "phc_desc_link_url"
+msgstr "Dirección web."
+
+#. Default: "Enter a brief description."
+msgid "phc_desc_tutorial_page"
+msgstr "Introduzca una breve descripción."
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Descripción"
+
+#. Default: "Documentation search"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_doc_search"
+msgstr "Buscar documentación"
+
+#. Default: "This Error Reference is intended for:"
+#: ./plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr "Esta Referencia de error está destinada a:"
+
+#. Default: "Error references"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Referencias de error"
+
+#. Default: "This Error Reference applies to:"
+#: ./plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Esta Referencia de error es aplicable a:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Sección de Referencias de error"
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Referencias de error"
+
+#. Default: "FAQs"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_faq"
+msgstr "Preguntas frecuentes (FAQ)"
+
+#. Default: "This FAQ applies to:"
+#: ./plone_help_center/faqsection_view.pt
+#: ./plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "Esta pregunta frecuente (FAQ) es aplicable a:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Preguntas frecuentes (FAQ)"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "Preguntas frecuentes (FAQ)"
+
+#. Default: "Entire documentation area"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_full_area"
+msgstr "Toda el area de documentación"
+
+#. Default: "Full Question"
+#: ./plone_help_center/faqsection_view.pt
+#: ./plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Pregunta completa"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Glosario de términos"
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Definiciones del glosario"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Breve explicación del How-to."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Breve explicación del contenido del video."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Un resumen del Manual de referencia -- tema y alcance. Se mostrará en cada página del manual."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Un resumen del Tutorial -- propósitos y alcance. Se mostrará en cada página del manual."
+
+#. Default: "Length (in minutes) of the video."
+msgid "phc_help_video_duration"
+msgstr "Duración (en minutos) del video."
+
+#. Default: "Height of the video."
+msgid "phc_help_video_height"
+msgstr "Altura del video."
+
+#. Default: "Add a screenshot by clicking the 'Browse' button. Add a screenshot that highlights the content of the instructional video."
+msgid "phc_help_video_screenshot"
+msgstr "Añada una captura de pantalla haciendo click sobre el botón 'Explorar'. Añada una captura que represente el contenido del video didáctico."
+
+#. Default: "Width of the video."
+msgid "phc_help_video_width"
+msgstr "Ancho del video."
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Pulse el botón 'Explorar' para subir un video en formato Flash (extensión .swf)."
+
+#. Default: "How-tos"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_howto"
+msgstr "How-tos"
+
+#. Default: "This How-to applies to:"
+#: ./plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Este How-to es aplicable a:"
+
+#. Default: "This How-to is intended for:"
+#: ./plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr "Este how-to está destinado a:"
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Instrucciones paso a paso"
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "How-tos"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "Relevancia de este elemento"
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Criterios de importacia que pueda tener el contenido."
+
+#. Default: "Audiences"
+#: ./plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr "Audiencias"
+
+#. Default: "Sections"
+#: ./plone_help_center/faqfolder_view.pt
+#: ./plone_help_center/glossary_view.pt
+#: ./plone_help_center/phc_genericfolder_view.pt
+msgid "phc_index_sections"
+msgstr "Secciones"
+
+#. Default: "<span tal:replace=\"itemslabel\"> items </span>"
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_items"
+msgstr "<span tal:replace=\"itemslabel\"> elementos </span>"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Descripción"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Cuerpo del texto"
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Cuerpo del texto"
+
+#. Default: "Current Versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Versiones actuales"
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Relevancia por defecto"
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Definición"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Descripción"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Resumen"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Resumen"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Descripción"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Relevancia"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Relevancia"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Elementos referenciados"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Descripción"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "Palabras clave relacionadas"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Secciones"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Secciones"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Descripción"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Descripción"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Versiones"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Versiones"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Duración"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Descripción"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Descripción"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Captura de video"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Ancho"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "Archivo en formato Flash (extensión .swf)"
+
+#. Default: "Link:"
+#: ./plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Enlace"
+
+#. Default: "This Link applies to:"
+#: ./plone_help_center/helplink_view.pt
+#: ./plone_help_center/helplink_view_amtho.pt
+msgid "phc_link_applies_to"
+msgstr "Este enlace es aplicable a:"
+
+#. Default: "Link:"
+#: ./plone_help_center/helplink_view_amtho.pt
+msgid "phc_link_indicator"
+msgstr "Enlace:"
+
+#. Default: "Links"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Enlaces"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Sección de Enlaces"
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Enlaces"
+
+#. Default: "Next:"
+#: ./plone_help_center/referencemanual_macros.pt
+#: ./plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Siguiente:"
+
+#. Default: "There are no contained help center object types."
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_nolist"
+msgstr "No se encuentran contenidos del centro de ayuda."
+
+#. Default: "There are contained help center object types, but none are viewable because of their permission settings."
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_nopublished"
+msgstr "Se ha encontrado contenidos del centro de ayuda pero ninguno de ellos es visible debido a su configuración de permisos."
+
+#. Default: "of"
+#: ./plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "de"
+
+#. Default: "Page"
+#: ./plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Página"
+
+#. Default: "Previous:"
+#: ./plone_help_center/referencemanual_macros.pt
+#: ./plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Anterior:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Establece una o más referencias a elementos del centro de ayuda."
+
+#. Default: "Reference manuals"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Manuales de referencia"
+
+#. Default: "This Reference Manual applies to:"
+#: ./plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Este manual de referencia es aplicable a:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ./plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr "Este manual de referencia está destinado a:"
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Descripción"
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Manual de referencia"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)."
+msgid "phc_related"
+msgstr "Una lista de palabras clave que deben ser indexadas junto al contenido (p.e. para un how-to sobre 'Cómo hacer una tortilla de patatas', podría incluir Cocina, Tortilla patatas, Gastronomía española...)."
+
+#. Default: "RSS feed for all documentation types."
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_rss_all"
+msgstr "Hilo RSS para todos los tipos de documentación"
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Sección(es) en que este elemento debería aparecer."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Defina las secciones disponibles para clasificar estos elementos."
+
+#. Default: "Tutorials"
+#: ./plone_help_center/helpcenter_view.pt
+#: ./plone_help_center/helpcenter_view_amtho.pt
+msgid "phc_tutorial"
+msgstr "Tutorial"
+
+#. Default: "This Tutorial applies to:"
+#: ./plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Este Tutorial es aplicable a:"
+
+#. Default: "This Tutorial is intended for:"
+#: ./plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr "Este Tutorial está destinado a:"
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Tutoriales detallados."
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Tutorial"
+
+#. Default: "Up to Glossary"
+#: ./plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Volver al Glosario"
+
+#. Default: "Up to table of contents"
+#: ./plone_help_center/faqsection_view.pt
+#: ./plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr "Volver al índice"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Versiones a que elementos en la ayuda pueden referirse."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)."
+msgid "phc_versions"
+msgstr "Versiones del producto aplicables a este elemento (dejar en blanco si no es específico de una versión)"
+
+#. Default: "Instructional videos"
+#: ./plone_help_center/helpcenter_view.pt
+msgid "phc_video"
+msgstr "Videos didácticos"
+
+#. Default: "This Video applies to:"
+#: ./plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr "Este Video didáctico es aplicable a:"
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Videos didácticos"
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Videos"
+
+#. Default: "View entire FAQ in full"
+#: ./plone_help_center/faqfolder_view.pt
+#: ./plone_help_center/faqfolder_view_amtho.pt
+#: ./plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Muestra las Preguntas frecuentes (FAQ) en modo completo"
+
+#. Default: "View section in full"
+#: ./plone_help_center/faqfolder_view.pt
+#: ./plone_help_center/faqfolder_view_amtho.pt
+msgid "phc_view_entire_section"
+msgstr "Muestra en modo completo las Secciones"
+
+#. Default: "View FAQ table of contents"
+#: ./plone_help_center/faqfolder_view.pt
+#: ./plone_help_center/faqfolder_view_amtho.pt
+msgid "phc_view_index_faq"
+msgstr "Muestra el índice de las Preguntas frecuentes (FAQ)"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ./plone_help_center/definition_view.pt
+#: ./plone_help_center/errorreference_view.pt
+#: ./plone_help_center/faq_view.pt
+msgid "phc_warning_outdated"
+msgstr "Atención: Este elemento está marcado como obsoleto."
+
+#. Default: "Recent documentation"
+#: ./plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Documentación reciente"
+
+#. Default: "Nothing published in $title..."
+#: ./plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr "No hay nada publicado en $title..."
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,1055 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter 1.0 (Unreleased)\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2007-6-27 11:00+0000\n"
+"Last-Translator: Stephan Geulette <stephan.geulette at uvcw.be>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: fr\n"
+"Language-Name: Français\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plonehelpcenter\n"
+"X-Is-Fallback-For: fr-be fr-ca fr-lu fr-mc fr-ch fr-fr\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr "Durée:"
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr "Trouver et modifier le contenu"
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Aller"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr "Statistiques et maintenance du centre de documentation"
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr "Feed RSS"
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr "Feed RSS de ce résultat de recherche"
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Rechercher"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr "Chercher du contenu"
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr "Taille:"
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "Cette FAQ s'applique à une version précédente"
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr "Ce formulaire aide à la maintenance du contenu."
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr "Cet élément correspond à une version précédente"
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Cette vidéo correspond à une version précédente"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr "A partir des critères ci-dessous, vous pouvez trouver du contenu et ensuite le modifier."
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "Recherche rapide"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr "Contenu entier sur une seule page (utile pour imprimer, présenter etc.)"
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr "Le(s) ${number} ${title}"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr "Plus <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr "Pas d'élément obsolète dans le centre de documentation"
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr "Eléments obsolètes du centre de documentation"
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Phrases explicites qui répondent à la question."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr "Correspond à tous"
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr "A plus d'une audience sélectionné"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr "Correspond à chacun"
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Description du dossier Référence d'Erreurs."
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Description du Lien."
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Description du dossier Liens."
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Description de la Référence d'erreur"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Description du Lien"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr "Correspond à tous"
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr "A plus d'une section sélectionnée"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr "Correspond à chacun"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr "Correspond à tous"
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr "A plus d'une version sélectionnée"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr "Correspond à chacun"
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr "Quelqu'un a ajouté un commentaire sur votre ${type}: ${title}. \nSi vous en êtes l'auteur, nous vous recommandons de lire le commentaire, et éventuellement d'adapter votre documentation - ensuite enlevez le commentaire. \nSi une clarification est nécessaire, répondez au commentaire, et la personne qui a commenté recevra une notification, et pourra vous donner plus de détails. \nPour visualiser le commentaire, suivez le lien: ${url}"
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr "Nouveau commentaire sur:"
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr "Quelqu'un a répondu à votre commentaire, ${title}. \nPour visualiser la réponse, suivez le lien: \n${url}"
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr "Nouvelle réponse à votre commentaire sur:"
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Plus de détails sur la question si le titre n'est pas évident."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr "Retourne les éléments correspondant à ces audiences. Plusieurs mots peuvent être choisis en pressant <strong>Ctrl</strong> (ou <strong>Apple</strong> key on Mac) et en cliquant sur vos choix. Vous pouvez aussi limiter votre recherche aux éléments qui ont plusieurs audiences."
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr "Retourne les éléments qui ont des commentaires."
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr "Retourne les éléments correspondant à ces sections. Plusieurs mots peuvent être choisis en pressant <strong>Ctrl</strong> (ou <strong>Apple</strong> key on Mac) et en cliquant sur vos choix. Vous pouvez aussi limiter votre recherche aux éléments qui sont dans plusieurs sections."
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr "Retourne les éléments correspondant à ces versions. Plusieurs mots peuvent être choisis en pressant <strong>Ctrl</strong> (ou <strong>Apple</strong> key on Mac) et en cliquant sur vos choix. Vous pouvez aussi limiter votre recherche aux éléments qui ont plusieurs versions."
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Réponse"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr "Audiences"
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Cliquer pour agrandir"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Question détaillée"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr "A des commentaires"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr "Sections"
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr "Versions"
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Les derniers éléments ${title}"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr "minutes"
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr "Vous devez publier cette page pour qu'elle devienne visible pour tous."
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr "Rien de publié dans ${title}"
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr "Toute audience."
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "Toute version"
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Corps"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr "Instructions pour contribuer et utiliser le centre de documentation"
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "Les lecteurs seront informés quand le contenu concerne une version non présente dans cette liste, sans doute du contenu obsolète."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Importance fixée par défaut pour un nouveau contenu."
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Glossaire"
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Cette Définition s'applique à:"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr "Entrez une brève description"
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Explication de l'erreur."
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "Le texte du corps."
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Une explication du terme."
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Description du dossier FAQ."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Description du Glossaire."
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Description du centre de documentation."
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "Le texte de ce How-to"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Description du dossier How-to."
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr "Adresse web"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr "Entrez une brève description"
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Description de la section Vidéo."
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "Rechercher de la documentation"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr "Cette Référence d'erreur concerne:"
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Références d'erreur"
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Cette Référence erreur s'applique à:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Un répertoire d'erreurs susceptibles d'être rencontrées... et une explication"
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Références erreurs"
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "FAQs"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "Cette FAQ s'applique à:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Questions fréquentes"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "FAQs"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "Espace de documentation entier"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Question complète"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Les définitions de certains termes."
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Glossaires de définitions"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Brève explication de ce ow-to."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Brève description du contenu Vidéo."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Un résumé du manuel de référence -- sujet et scope. Il sera affiché sur chaque page de ce manuel."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Un résumé du tutoriel -- but et scope. Il sera affiché sur chaque page du tutoriel."
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr "Durée (en minutes) de la Vidéo"
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr "Hauteur de la vidéo"
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr "Ajouter une copie d'écran en cliquant sur le bouton 'Parcourir'. Ajouter une copie d'écran qui met en valeur le contenu de la Vidéo."
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr "Largeur de la vidéo"
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Cliquer sur 'Parcourir' pour uploader un fichier Flash .swf."
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "How-tos"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Ce how-to s'applique à:"
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr "Ce how-to concerne:"
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Instructions pas à pas."
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "How-tos"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "Importance de cet élément."
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Les valeurs d'importance que ce contenu peut avoir."
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr "Audiences"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr "Sections"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Description"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Le corps."
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Le corps."
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Versions courantes"
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Importance par défaut"
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Définition"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Description"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Résumé"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Résumé"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Description"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Description"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Description"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Description"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Importance"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Importance"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Eléments référencés"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Description du Manuel de Référence"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "Mots clés liés"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Sections"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Sections"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Description du Tutoriel"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Description"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Versions"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Versions"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Durée"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Description"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Hauteur"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Copie d'écran"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Largeur"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "Fichier Flash (.swf)"
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Lien:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr "Ce Lien s'applique à:"
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Liens"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Des liens utiles..."
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Liens"
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Suivant:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "Il n'y a aucun objet du centre de documentation."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "de"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Page"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Précédent:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Assigner une ou plusieurs références aux éléments du centre de documentation."
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Manuels de référence"
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Ce Manuel de référence s'applique à:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr "Ce Manuel de référence concerne:"
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Des documents structurés complets concernant un sujet"
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Manuels de référence"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "Une liste de mots clés qui doivent être indexé avec cet élément (par exemple pour un how-to sur VerboseSecurity, vous devriez inclure Verbose Security, Insufficient Privileges, Debugging security problems)"
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr "Flux RSS pour toute la documentation."
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Section(s) où cet élément doit apparaître."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Définition des sections disponibles pour classer ces éléments."
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "Tutoriels"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Ce Tutoriel s'applique à:"
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr "Ce Tutoriel concerne:"
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Tutoriels détaillés."
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Tutoriels"
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Remonter au Glossaire"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr "Remonter à la table des matières"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Versions auxquelles les éléments du centre de documentation peuvent se référencer."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "Versions du produit qui s'appliquent à cet élément. (Laisser vide si aucune version n'est spécifiquement concernée)"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr "Cette Vidéo s'applique à:"
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Vidéos pédagogiques."
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Vidéos"
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Voir la FAQ en entier"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Voir la section en entier"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr "Attention: cet élément est détecté comme obsolète."
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Documentation récente"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr "dans"
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr "voir aussi:"
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr "Il n'y a aucune page ou section dans ce Manuel de référence."
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr "Utiliser le menu 'ajout d'un élément' pour ajouter des sections, pages, fichiers ou images. Les sections peuvent s'imbriquer sous plusieurs niveaux, mais nous recommandons de ne pas utiliser une arborescence de plus de 3 ou 4 niveaux."
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr "Note: Ceci est une impression contenant toutes les pages du Tutoriel sur une seule page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> La version paginée est disponible ici</a>."
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr "Note: Ceci est une impression contenant toutes les pages du Manuel de référence sur une seule page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> La version paginée est disponible ici</a>."
+
+#. Default: "Any audience"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "Any audience" 
+msgstr "Toute audience"
+
+#. Default: "Description for the Error Reference section."
+#: ../content/ErrorReferenceFolder.py
+msgid "description_edit_ErrorReferenceFolder"
+msgstr "Description de la section Références d'erreur."
+
+#. Default: "An Error Reference Section can contain references to and explanations of common errors."
+#: ../content/ErrorReferenceFolder.py
+msgid "description_edit_errorreferencefolder"
+msgstr "Une section Références d'erreur peut contenir des références et des explications sur des erreurs possibles."
+
+#. Default: "Description"
+#: ../content/ErrorReferenceFolder.py
+msgid "description_label_ErrorReferenceFolder"
+msgstr "Description"
+
+#. Default: "An Error Reference can be used to explain a particular error which may arise."
+#: ../content/ErrorReference.py
+msgid "description_edit_errorreference"
+msgstr "Une référence d'erreur peut être utilisée pour expliquer une erreur particulière qui peut survenir."
+
+#. Default: "A Tutorial can contain Tutorial Pages, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/Tutorial.py
+msgid "description_edit_tutorial"
+msgstr "Un tutoriel peut contenir des documents, images et fichiers. La numérotation se fait en fonction de l'ordre dans le dossier. Utilisez les flèches monter/descendre dans le dossier pour ordonner le contenu."
+
+#. Default: "One type of audience on each line. If you leave this blank, audience information will not be used. Audience is typically 'End user', 'Developer' and similar."
+#: ../content/HelpCenter.py
+msgid "phc_audience_helpcenter"
+msgstr "Un type d'audience par ligne. Si vous laissez cette zone vide, aucune audience ne sera utilisée. Une audience est typiquement 'Utilisateur final', 'Développeur', etc."
+
+#. Default: "Documentation Audiences"
+#: ../content/HelpCenter.py
+msgid "phc_label_audience_helpcenter"
+msgstr "Audiences utilisées dans la documentation"
+
+#. Default: "Copyright"
+#: ../content/HelpCenter.py
+msgid "phc_label_copyrights_helpcenter"
+msgstr "Droits d'auteur"
+
+#. Default: "Copyright info for all content in the helpcenter."
+#: ../content/HelpCenter.py
+msgid "phc_copyrights_helpcenter"
+msgstr "Informations concernant les droits d'auteur relatifs à la documentation."
+
+#. Default: "A How-to is a document describing how to address a single, common use-case or issue. You may add images and files as attachments."
+#: ../content/HowTo.py
+msgid "description_edit_howto"
+msgstr "Un how-to est un document décrivant la façon de réaliser une tâche ou de résoudre un problème. Il est possible d'ajouter des images et fichiers comme pièces jointes."
+
+#. Default: "A How-to Section can contain how-to documents."
+#: ../content/HowToFolder.py
+msgid "description_edit_howtofolder"
+msgstr "Une section how-to peut contenir des documents traitant de questions courtes."
+
+#. Default: "Description for the Link section."
+#: ../content/LinkFolder.py
+msgid "description_description_LinkFolder"
+msgstr "Description de la section Liens"
+
+#. Default: "Description"
+#: ../content/LinkFolder.py
+msgid "label_description_LinkFolder"
+msgstr "Description"
+
+#. Default: "A Link Section can contain links to other documentation."
+#: ../content/LinkFolder.py
+msgid "description_edit_linkfolder"
+msgstr "Une section Liens peut contenir des liens vers de la documentation située à d'autres endroits."
+
+#. Default: "Links are links to other documentation and resources."
+#: ../content/Link.py
+msgid "description_edit_link"
+msgstr "Les liens pointent vers de la documentation ou des ressources externes."
+
+#. Default: "A Reference Manual can contain Reference Manual Pages and Sections, Images and Files. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/ReferenceManual.py
+msgid "description_edit_referencemanual"
+msgstr "Un manuel de référence peut contenir des documents et sections, des images et fichiers. La numérotation se fait en fonction de l'ordre dans le dossier. Utilisez les flèches monter/descendre dans le dossier pour ordonner le contenu."
+
+#. Default: "Description for the reference manual section."
+#: ../content/ReferenceManualFolder.py
+msgid "phc_desc_folder_referencemanual"
+msgstr "Description de la section Manuels de référence."
+
+#. Default: "Description"
+#: ../content/ReferenceManualFolder.py
+msgid "phc_label_folder_referencemanual"
+msgstr "Description"
+
+#. Default: "A Reference Manual Section can contain reference manuals for individual projects and larger documentation efforts."
+#: ../content/ReferenceManualFolder.py
+msgid "description_edit_referencemanualfolder"
+msgstr "Une section Manuels de référence peut contenir des manuels de référence pour des projets particuliers ou des sujets plus généraux."
+
+#. Default: "Enter a brief description."
+#: ../content/ReferenceManualPage.py
+msgid "phc_desc_referencemanual_page"
+msgstr "Entrez une brève description"
+
+#. Default: "Description"
+#: ../content/ReferenceManualPage.py
+msgid "phc_label_referencemanual_page"
+msgstr "Description"
+
+#. Default: "The body text."
+#: ../content/ReferenceManualPage.py
+msgid "phc_desc_body_referencemanual"
+msgstr "Le texte du document."
+
+#. Default: "Body text"
+#: ../content/ReferenceManualPage.py
+msgid "phc_label_body_referencemanual"
+msgstr "Texte du document"
+
+#. Default: "A Reference Manual Page contains the text of one of the pages of the the reference manual, usually confined to a single topic."
+#: ../content/ReferenceManualPage.py
+msgid "description_edit_referencemanualpage"
+msgstr "Un document d'un manuel de référence contient le texte d'une des pages du manuel de référence et traite habituellement d'un sujet unique."
+
+#. Default: "Enter a brief description for this section of the manual."
+#: ../content/ReferenceManualSection.py
+msgid "phc_desc_referencemanual_section"
+msgstr "Entrez une brève description pour cette section du manuel."
+
+#. Default: "Description"
+#: ../content/ReferenceManualSection.py
+msgid "phc_label_referencemanual_section"
+msgstr "Description"
+
+#. Default: "A Reference Manual Section can contain Reference Manual Pages, and other Reference Manual (Sub-)Sections. Index order is decided by the folder order, use the normal up/down arrow in the folder content view to rearrange content."
+#: ../content/ReferenceManualSection.py
+msgid "description_edit_referencemanualsection"
+msgstr "Une section peut contenir des documents et d'autres sous-sections. La numérotation se fait en fonction de l'ordre dans le dossier. Utilisez les flèches monter/descendre dans le dossier pour ordonner le contenu."
+
+#. Default: "Audience(s) this item is targetted at."
+#: ../content/schemata.py
+msgid "phc_audiences"
+msgstr "Audience(s) de cet élément."
+
+#. Default: "Audiences"
+#: ../content/schemata.py
+msgid "phc_label_audiences"
+msgstr "Audiences"
+
+#. Default: "Enter additional names (no need to include the current owner) for those who have contributed to this entry, one per line."
+#: ../content/schemata.py
+msgid "help_contributors"
+msgstr "Entrez les noms des autres personnes qui ont contribué à cette documentation (un par ligne)."
+
+#. Default: "Contributors"
+#: ../content/schemata.py
+msgid "label_contributors"
+msgstr "Contributeurs"
+
+#. Default: "Description for the tutorials section."
+#: ../content/TutorialFolder.py
+msgid "phc_desc_folder_tutorial"
+msgstr "Description de la section Tutoriels"
+
+#. Default: "A Tutorial Section can contain tutorial-length, multi-page documentation."
+#: ../content/TutorialFolder.py
+msgid "description_edit_tutorialfolder"
+msgstr "Une section Tutoriel peut contenir de la documentation multi-pages sur un sujet."
+
+#. Default: "A Tutorial Page contains the text of a single page of the tutorial."
+#: ../content/Tutorial.py
+msgid "description_edit_tutorialpage"
+msgstr "Un document contient le texte d'une page du tutoriel."
+
+#. Default: "A Video Section can contain instructional Flash videos."
+#: ../content/InstructionalVideoFolder.py
+msgid "description_edit_instructionalvideofolder"
+msgstr "Une section Vidéo contient des fichiers pédagogiques d'animation Flash."
+
+#. Default: "An Instructional Video can be used to upload Flash instructional videos."
+#: ../content/InstructionalVideo.py
+msgid "description_edit_instructionalvideo"
+msgstr "Une vidéo pédagogique peut être utilisée pour charger un fichier flash."
+
+#. Default: "A Definition defines a special term, and will be listed in the glossary."
+#: ../content/Definition.py
+msgid "description_edit_definition"
+msgstr "Une définition explique un terme spécial et est listée dans le glossaire."
+
+#. Default: "A Glossary can be used to hold definitions of common terms, listing them in a dictionary-like manner."
+#: ../content/Glossary.py
+msgid "description_edit_glossary"
+msgstr "Un Glossaire peut être utilisé pour rassembler des définitions de terme, et les lister."
+
+#. Default: "A Frequently Asked Question defines a common question with an answer - this is a place to document answers to common questions, not ask them."
+#: ../content/FAQ.py
+msgid "description_edit_faq"
+msgstr "Une FAQ est une question fréquemment posée avec une réponse - ce n'est pas l'endroit pour poser des questions mais pour trouver des réponses."
+
+#. Default: "An FAQ Section can hold frequently asked questions with answers."
+#: ../content/FAQFolder.py
+msgid "description_edit_faqfolder"
+msgstr "Une section FAQ présente les questions fréquemment posées avec leur réponse."


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/fr/LC_MESSAGES/plonehelpcenter.po
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,863 @@
+# translation of plonehelpcenter-it.po to Italiano
+# Mirto Busico <m.busico at ieee.org>, 2006.
+# Lallo Gaifas <lallo at artiemestieri.tn.it>, 14-10-2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: plonehelpcenter-it\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2006-11-16 20:21+0100\n"
+"Last-Translator: Mirto Busico <m.busico at ieee.org>\n"
+"Language-Team: Italiano <it at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: it\n"
+"Language-Name: Italiano\n"
+"Preferred-Encodings: utf-8 latin1\n"
+"Domain: plonehelpcenter\n"
+"X-Generator: KBabel 1.10.2\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr "Durata:"
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr "Trova e modifica"
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Vai"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr "Statistiche e manutenzione del centro di documentazione"
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr "Flusso RSS"
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr "Flusso RSS dei risultati della ricerca"
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Cerca"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr "Cerca nei contenuti"
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr "Dimensione:"
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "Questa FAQ si applica ad una versione precedente"
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr "Questo modulo aiuta a mantenere i contenuti del centro di documentazione."
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr "Questo elemento si riferisce ad una versione precedente"
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Questo video si riferisce ad una versione precedente"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr "Utilizzando i criteri qui sotto, puoi trovare dei contenuti e modificarli direttamente dalla pagina dei risultati."
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "s"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr "Tutti i contenuti in una pagina (utile per la stampa, presentazioni ecc.)"
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr "Elenco ${title} (${number})"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr "Altra <tal:center replace=\"center/Title\">Documentazione</tal:center> …"
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr "Nessun elemento trovato nel centro di documentazione."
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr "Elementi non più aggiornati"
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Frasi significative che spiegano la risposta."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr "Corrispondono tutte le categorie di destinatari"
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr "Ha più di una categoria di destinatari selezionata"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr "Corrisponde a qualsiasi categoria"
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Descrizione della cartella del breviario errori."
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Descrizione del collegamento."
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Descrizione della cartella dei collegamenti."
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Descrizione"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Descrizione"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr "Corrisponde a tutte le sezioni"
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr "Ha più di una sezione selezionata"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr "Corrisponde a qualsiasi sezione"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr "Corrisponde a tutte le versioni"
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr "Ha più di una versione selezionata"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr "Corrisponde a qualsiasi versione"
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+"Qualcuno ha aggiunto un commento su ${type}: ${title}.\n"
+"Se sei l'autore di questo elemento, ti raccomandiamo di leggere il commento e di aggiornare di conseguenza la documentazione, se necessario, quindi di rimuovere il commento.\n"
+"Se è necessario un ulteriore chiarimento, rispondi al commento e la persona riceverà una notifica come questa e potrà quindi fornire ulteriori dettagli.\n"
+"Per vedere il nuovo commento, visita:\n"
+"${url}"
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr "Nuovo commento su:"
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+"Qualcuno ha risposto al tuo commento, ${title}.\n"
+"Per vedere la risposta, visita:\n"
+"${url}"
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr "Nuova replica al tuo commento su:"
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Ulteriori dettagli relativi alla domanda, se non sono evidenti dal titolo."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr "Restituisce gli elementi destinati ad alcuni o a tutte queste categorie di destinatari. Sono possibili selezioni multiple premendo il tasto <strong>Ctrl</strong> (o il tasto <strong>Apple</strong> su un Mac) mentre si fa click sulle parole. Si può anche limitare la ricerca a quegli elementi che hanno più di una categoria di destinatari selezionata."
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr "Restituisce gli elementi che hanno dei commenti."
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr "Restituisce gli elementi in alcune o tutte queste sezioni. Sono possibili selezioni multiple premendo il tasto <strong>Ctrl</strong> (o il tasto <strong>Apple</strong> su un Mac) mentre si fa click sulle parole. Si può anche limitare la ricerca a quegli elementi che hanno più di una sezione selezionata."
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr "Restituisce gli elementi che appartengono ad alcune o a tutte queste versioni. Sono possibili selezioni multiple premendo il tasto <strong>Ctrl</strong> (o il tasto <strong>Apple</strong> su un Mac) mentre si fa click sulle parole. Si può anche limitare la ricerca a quegli elementi che hanno più di una versione selezionata."
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Risposta"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr "Destinatari"
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Premi per ingrandire"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Domanda dettagliata"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr "Ha dei commenti"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr "Sezioni"
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr "Versioni"
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "${title} (ultimi arrivi)"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr "minuti"
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr "Questa pagina deve essere pubblicata prima di essere visibile a tutti."
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr "Nessuna pubblicazione in ${title}"
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr "Qualsiasi destinatario."
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "Qualsiasi versione."
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Corpo del testo"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr "Istruzioni su come contribuire ed utilizzare questa risorsa"
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "I lettori saranno informati quando il contenuto si riferisce a versioni non comprese in questa lista, in quanto potrebbe essere obsoleto."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Livello di importanza predefinito assegnato ai nuovi contenuti."
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Definizioni del glossario"
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Questa definizione si applica a:"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr "Inserire una breve descrizione dell'errore"
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Spiegazione dell'errore."
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "Il testo della guida."
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Una spiegazione del termine."
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Descrizione del contenitore delle FAQ."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Descrizione del glossario."
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Descrizione del centro di documentazione."
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "Il testo dell'aiuto"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Descrizione dello scopo di questo aiuto."
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr "Indirizzo web"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr "Inserire una breve descrizione per la pagina della guida"
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Descrizione per la sezione filmati."
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "Ricerca nella documentazione"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr "Questo breviario degli errori è destinato a:"
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Breviario errori"
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Questo breviario degli errori si applica a:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Sezione del breviario degli errori."
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Breviario degli errori"
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "Domande frequenti"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "Questa domanda frequente si applica a:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Domande frequenti"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "Domande frequenti"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "Intera area della documentazione"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Domanda completa"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Glossario dei termini."
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Glossario"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Breve spiegazione dell'aiuto."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Breve spiegazione del contenuto del filmato."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Un riassunto del manuale -- lo scopo e l'argomento. Verrà mostrato in ogni pagina del manuale."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Un riassunto della guida -- lo scopo e le finalità. Verrà mostrato in ogni pagina della guida."
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr "Durata (in minuti) del filmato"
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr "Dimensione verticale del filmato"
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr "Aggiungere una miniatura del video premendo il pulsante 'Sfoglia'. Aggiungere una foto del video che illustri il contenuto del filmato didattico."
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr "Dimensione orizzontale del filmato"
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Premere il pulsante 'Sfoglia' per caricare un filmato in formato flash (estensione .swf)."
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "Aiuti"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Questo aiuto si applica a:"
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr "Questo aiuto è destinato per:"
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Istruzioni passo passo."
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "Aiuti"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "L'importanza di questo elemento."
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Livelli di importanza che può assumere il contenuto."
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr "Destinatari"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr "Sezioni"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Descrizione"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Corpo del testo"
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Corpo del testo"
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Versioni correnti"
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Livello d'importanza predefinito"
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Definizione"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Descrizione"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Sommario"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Sommario"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Descrizione"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Descrizione"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Descrizione"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Descrizione"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Importanza"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Importanza"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Elementi correlati"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Descrizione del manuale"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "Parole chiave correlate"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Sezioni"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Sezioni"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Descrizione della guida"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Descrizione"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Versioni"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Versioni"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Durata"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Descrizione"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Dimensione verticale"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Miniatura del video"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Dimensione orizzontale"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "File in formato flash (estensione .swf)"
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Collegamento:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr "Questo collegamento si applica a:"
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Collegamenti"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Sezione collegamenti"
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Collegamenti"
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Successivo:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "Qui non ci sono oggetti del centro di documentazione."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "di"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Pagina"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Precedente:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Impostare uno o più riferimenti ad elementi del centro di documentazione."
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Manuali"
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Questo manuale si applica a:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr "Questo manuale è destinato per:"
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Descrizione del manuale"
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Manuali"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "Un elenco di parole chiave che saranno indicizzate assieme al contenuto (ad esempio per una aiuto relativo al prodotto VerboseSecurity, potresti inserire Verbose Security, Privilegi insufficienti, Debugging di problemi di sicurezza)."
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr "Flusso RSS per tutti i tipi di documentazione."
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Sezione(i) in cui deve apparire l'elemento."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Definire le sezioni che saranno disponibili per classificare questi elementi."
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "Guide"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Questa guida si applica a:"
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr "Questa guida è destinata a:"
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Guide dettagliate."
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Guide"
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Torna al glossario"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr "Torna all'indice"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Versioni a cui si possono riferire gli elementi di aiuto."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "Versioni che si applicano a questo elemento (lasciare vuoto se non ci si riferisce ad alcuna specifica versione)"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr "Questo filmato si applica a:"
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Filmati didattici."
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Filmati"
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Visualizza tutte le domande frequenti"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Visualizza tutte le sezioni"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr "Attenzione: questo elemento è marcato come obsoleto."
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Documentazione recente"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr "in"
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr "vedi anche:"
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr "In questo manuale non ci sono pagine o sezioni."
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr "Utilizzare la voce del menu 'aggiungi un nuovo elemento' per inserire sezioni, pagine, immagini e file. Le sezioni possono essere annidate con una profondità arbitraria, ma raccomandiamo di non utilizzare più di tre o quattro livelli per avere una buona leggibilità."
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr "Nota: questa è la vista stampabile contenente tutte le pagine della guida in una sola pagina. Se si preferisce c'è disponibile <a href=\"\" tal:attributes=\"href here/absolute_url\"> la versione suddivisa in più pagine</a>."
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr "Nota: questa è la vista stampabile contenente tutte le pagine del manuale in una sola pagina. Se si preferisce c'è disponibile <a href=\"\" tal:attributes=\"href here/absolute_url\"> la versione suddivisa in più pagine</a>."
+


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/it/LC_MESSAGES/plonehelpcenter.po
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/nl/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,855 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Plone Help Center 0.0.1\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2004-11-26 19:23+0100\n"
+"Last-Translator: Tim Hoebeek <tim.hoebeek at vub.ac.be>\n"
+"Language-Team: Belgian Language Team <gotcha at bubblenet.be>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: nl\n"
+"Language-Name: Nederlands\n"
+"Preferred-Encodings: latin1 utf-8\n"
+"Domain: plonehelpcenter\n"
+"X-Is-Fallback-For: nl-be\n"
+"X-Poedit-Language: Dutch\n"
+"X-Poedit-Country: BELGIUM\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr ""
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Zoeken"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr ""
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr ""
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr ""
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "z"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr ""
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr ""
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr ""
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr ""
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr ""
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr ""
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr ""
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr ""
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr ""
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr ""
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr ""
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr ""
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr ""
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr ""
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr ""
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr ""
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr ""
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr ""
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr ""
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr ""
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr ""
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr ""
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr ""
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr ""
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr ""
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr ""
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr ""
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr ""
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr ""
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr ""
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr ""
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr ""
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr ""
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr ""
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr ""
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr ""
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr ""
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr ""
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr ""
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr ""
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr ""
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr ""
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr ""
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr ""
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr ""
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr ""
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr ""
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr ""
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr ""
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr ""
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr ""
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr ""
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr ""
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr ""
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr ""
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr ""
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr ""
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr ""
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr ""
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr ""
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr ""
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr ""
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr ""
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr ""
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr ""
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr ""
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr ""
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr ""
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr ""
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr ""
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr ""
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr ""
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr ""
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr ""
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr ""
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr ""
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr ""
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr ""
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr ""
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr ""
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr ""
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr ""
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr ""
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr ""
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr ""
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr ""
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr ""
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr ""
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr ""
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr ""
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr ""
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr ""
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr ""
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr ""
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/no/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,852 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2006-07-06 20:29-0800\n"
+"Last-Translator: Alexander Limi <limi at plone.org>\n"
+"Language-Team: Plone i18n <plone-i18n at lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: no\n"
+"Language-Name: Norsk\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr ""
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr ""
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr ""
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr ""
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr ""
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr ""
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr ""
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr ""
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr ""
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Utdypning av spørsmålet, hvis det trengs."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Svar"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr ""
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Utdypning av spørsmålet"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr "Emner"
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr "Versjoner"
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Sist oppdaterte ${title}"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr ""
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr ""
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr ""
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr ""
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr ""
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr ""
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr ""
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr ""
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Beskrivelse av seksjonen."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr ""
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr ""
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr ""
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr ""
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr ""
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr ""
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr ""
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr ""
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr ""
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr ""
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr ""
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr ""
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr ""
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Her er en oversikt over noen av de vanligste spørsmålene vi får."
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "Spørsmål og svar"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr ""
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr ""
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr ""
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr ""
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr ""
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr ""
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr ""
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr ""
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr ""
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr ""
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr ""
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr ""
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr ""
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr ""
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr ""
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr ""
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr ""
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr ""
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr "Emner"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr ""
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr ""
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr ""
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr ""
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr ""
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr ""
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Emner"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr ""
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr ""
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr ""
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr ""
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr ""
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr ""
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr ""
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr ""
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr ""
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr ""
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr ""
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr ""
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr ""
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr ""
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr ""
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr ""
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr ""
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr ""
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr ""
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr ""
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr ""
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr ""
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr ""
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr ""
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Hvilke emner spørsmålet skal vises i."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr ""
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr ""
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr ""
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr ""
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr ""
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr ""
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+#, fuzzy
+msgid "phc_up_to_toc"
+msgstr "Opp til innholdsoversikt"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr ""
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr ""
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr ""
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Vis alle spørsmål og svar"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Vis hele denne seksjonen"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr ""
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/pt-br/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,871 @@
+# PloneHelpCenter
+# Dorneles Treméa <deo at plonesolutions.com.br>, 2006
+# Jean Rodrigo Ferri <jeanrodrigoferri at yahoo.com.br>, 2006
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2006-11-15 00:33-0200\n"
+"Last-Translator: Dorneles Treméa <deo at plonesolutions.com>\n"
+"Language-Team: TcheZope.org <tchezope at yahoogroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: pt-br\n"
+"Language-Name: Português do Brasil\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr "Duração:"
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr "Procurar e modificar conteúdo"
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "Ir"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr "Manutenção e Estatísticas do Centro de Ajuda"
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr "Alimentação RSS"
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr "Alimentação RSS para este resultado da busca"
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "Buscar"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr "Busca por conteúdo"
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr "Tamanho:"
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr "Esta FAQ aplica-se a uma versão anterior"
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr "Este formulário auxilia na manutenção do conteúdo do centro de ajuda."
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr "Este item aplica-se a uma versão anterior"
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr "Este vídeo aplica-se a uma versão anterior"
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr "Usando os critérios abaixo você pode procurar conteúdos e modificá-los a partir da página de resultados da busca."
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "b"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr "Todo o conteúdo em uma página (útil para impressão, modo de apresentação, etc.)"
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr "Todos os ${number} ${title}"
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr "Mais <tal:center replace=\"center/Title\">Documentação</tal:center> …"
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr "Nenhum item antigo foi encontrado no Centro de Ajuda"
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr "Ítens Antigos do Centro de Ajuda"
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "Sentenças significativas que definem a resposta."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr "Combinar todas"
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr "Existe mais de uma audiência selecionada"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr "Combinar algumas"
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr "Descrição da Pasta de Referência de Erros."
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr "Descrição para o Link."
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr "Descrição da Pasta de Link."
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr "Descrição"
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr "Descrição"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr "Combinar todas"
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr "Existe mais de uma seção selecionada"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr "Combinar algumas"
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr "Combinar todas"
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr "Existe mais de uma versão selecionada"
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr "Combinar algumas"
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+"Alguém fez um comentário em ${type}: ${title}\n"
+"\n"
+"Se você for o autor deste item, nós recomendamos que você leia\n"
+"o comentário e atualize a documentação apropriadamente caso\n"
+"necessário - então remova o comentário.\n"
+"\n"
+"Caso for necessário algum esclarescimento adicional, responda\n"
+"ao comentário. A pessoa que fez o cometário irá receber uma\n"
+"notificação semelhante a esta e provavelmente fornecerá maiores\n"
+"detalhes.\n"
+"\n"
+"Para visualizar o novo comentário visite:\n"
+"${url}"
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr "Novo comentário em:"
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+"Alguém respondeu o seu comentário, ${title}.\n"
+"\n"
+"Para visualizar a resposta visite:\n"
+"${url}"
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr "Nova resposta ao seu comentário em:"
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "Mais sobre a questão, se o titulo não estiver evidente."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr "Retorna ítens marcados por alguma ou todas essas audiências. Múltiplas palavras podem ser selecionadas pressionando <strong>Ctrl</strong> (ou a tecla <strong>Maçã</strong> no Mac) enquanto você clica nas palavras-chave. Você também pode limitar a sua busca somente para aqueles ítens que tenham mais de uma audiência selecionada."
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr "Retorna ítens que tenham comentários."
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr "Retorna ítens marcados por alguma ou todas essas seções. Múltiplas palavras podem ser selecionadas pressionando <strong>Ctrl</strong> (ou a tecla <strong>Maçã</strong> no Mac) enquanto você clica nas palavras-chave. Você também pode limitar a sua busca somente para aqueles ítens que tenham mais de uma seção selecionada."
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr "Retorna ítens marcados por alguma ou todas essas versões. Múltiplas palavras podem ser selecionadas pressionando <strong>Ctrl</strong> (ou a tecla <strong>Maçã</strong> no Mac) enquanto você clica nas palavras-chave. Você também pode limitar a sua busca somente para aqueles ítens que tenham mais de uma versão selecionada."
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "Resposta"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr "Audiências"
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr "Clique para expandir"
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "Questão Detalhada"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr "Tem comentários"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr "Seções"
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr "Versões"
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr "Últimos ${title}"
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr "minutos"
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr "Você precisa publicar esta página antes dela se tornar visível ao público."
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr "Nada publicado em ${title}"
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr "Qualquer audiência."
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "Qualquer versão"
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr "Corpo"
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_contrib_use"
+msgstr "Instruções sobre como contribuir e como usar este recurso."
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr "Os leitores serão informados, em conteúdos relacionados a versões que não estão nesta lista, que poderá estar desatualizado."
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr "Taxa de importância padrão para o novo conteúdo."
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr "Definições do glossário"
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr "Essas Definições se aplicam a:"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr "Insira uma breve descrição."
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr "Explicação sobre o erro."
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr "O corpo do texto."
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr "Uma explicação sobre o termo."
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr "Descrição da Pasta de FAQ."
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr "Descrição do Glossário."
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr "Descrição para o Centro de Ajuda."
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr "O texto do How-To"
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr "Descrição da Pasta de How-To."
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr "Endereço web"
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr "Insira uma breve descrição"
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr "Descrição da seção de Vídeo."
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "Busca na documentação"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr "Esta Referência de Erro é pretendida para:"
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr "Referências de erro"
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr "Esta Referência de Erro se aplica a:"
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr "Seção de referência de erros."
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr "Referências de erro"
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "FAQs"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "Esta FAQ se aplica a:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr "Questões Perguntadas com Freqüência"
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr "FAQs"
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "Toda a área de documentação"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "Questão Completa"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr "Glossário de termos."
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr "Definições do glossário"
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr "Uma breve explicação do How-To."
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr "Uma breve explicação do conteúdo do vídeo."
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr "Um sumário do manual de referência -- assunto e escopo. Será mostrado em todas as páginas do manual."
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr "Um sumário do tutorial -- alvos e escopo. Será mostrado em todas as páginas do tutorial."
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr "Tamanho (em minutos) do vídeo"
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr "Altura do vídeo"
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr "Adicione uma imagem capturada clicando no botão 'Arquivo...'. Adicione uma imagem capturada que destaque o conteúdo do vídeo instrutivo."
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr "Largura do vídeo"
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr "Clique 'Arquivo...' para carregar um arquivo Flash .swf."
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "How-Tos"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr "Este How-To se aplica a:"
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr "Este How-To é pretendido para:"
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr "Instruções passo-a-passo."
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr "How-Tos"
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "Importância deste item."
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr "Conteúdo de avaliação importante pode ter."
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr "Audiências"
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr "Seções"
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr "Descrição"
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr "Corpo do texto"
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr "Corpo do texto"
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr "Versões atuais"
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr "Importância padrão"
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr "Definição"
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr "Descrição"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr "Sumário"
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr "Sumário"
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr "Descrição"
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr "Descrição"
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr "Descrição"
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr "Descrição"
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "Importância"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr "Importância"
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr "URL"
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr "Ítens Referenciados"
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr "Descrição do Manual de Referência"
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "Palavras-chave relacionadas"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "Seções"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr "Seções"
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr "Descrição do Tutorial"
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr "Descrição"
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr "Versões"
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "Versões"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr "Duração"
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr "Descrição"
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr "Altura"
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr "Imagem Capturada"
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr "Largura"
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr "Arquivo Flash (.swf)"
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "Link:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr "Este Link se aplica a:"
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr "Links"
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr "Seção de Links."
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr "Links"
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "Próximo:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "Não existe contido nenhum tipo de objeto do centro de ajuda."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "de"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "Página"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "Anterior:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr "Configure uma ou mais referências aos ítens do Centro de Ajuda."
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr "Manuais de referência"
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr "Este Manual de Referência é aplicado a:"
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr "Este Manual de Referência é pretendido para:"
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr "Descrição do Manual de Referência"
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr "Manual de Referência"
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "Uma lista de palavras-chave que devem ser indexadas com o conteúdo (e.g. para um how-to sobre VerboseSecurity, você deve incluir Verbose Security, Privilégios insuficientes, Depurando problemas de segurança)."
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_rss_all"
+msgstr "Alimentação RSS para todos os tipos de documentação."
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "Seção(ões) em que esse item deve aparecer."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr "Define as seções disponíveis para classificação desses ítens."
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "Tutoriais"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr "Este Tutorial é aplicado a:"
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr "Este Tutorial é pretendido para:"
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr "Tutoriais detalhados."
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr "Tutoriais"
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "Ir para o Glossário"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_up_to_toc"
+msgstr "Ir para o índice"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr "Versões que os ítens na ajuda podem referenciar."
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "Versões do produto que se aplicam a este item (deixe em branco se não for para uma versão específica)"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr "Este vídeo aplica-se a:"
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr "Vídeos instrutivos."
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr "Vídeos"
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "Visualizar toda a FAQ em uma página"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "Visualizar toda a seção em uma página"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr "Aviso: Este item está marcado como desatualizado."
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "Documentação recente"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr "em"
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr "veja também:"
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr "Não exitem páginas ou seções neste Manual de Referência."
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr "Utilize o menu 'Adicionar novo item' para adicionar Seções, Páginas, Arquivos ou Imagens. Seções podem ser aninhadas em uma profundidade arbitrária, mas nós recomendamos não usar mais de três ou quatro níveis para melhor legibilidade."
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr "Aviso: Esta é a visão de impressão com todas as páginas do tutorial em uma página. <a href=\".\">A versão paginada está disponível aqui</a>, se você preferir esta."
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr "Aviso: Esta é a visão de impressão com todas as páginas do Manual de Referência em uma página. <a href=\".\">A versão paginada está disponível aqui</a>, se você preferir esta."
+

Added: gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.mo
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.mo
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.po
===================================================================
--- gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.po	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/locales/zh-cn/LC_MESSAGES/plonehelpcenter.po	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,854 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PloneHelpCenter 0.3\n"
+"POT-Creation-Date: 2006-09-20 09:11+0000\n"
+"PO-Revision-Date: 2004-12-05 10:18 +8\n"
+"Last-Translator: 杨红 <yanghong at ccoss.com.cn>\n"
+"Language-Team: 简体中文 <LL at li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"Language-Code: zh-cn\n"
+"Language-Name: 简体中文\n"
+"Preferred-Encodings: utf-8\n"
+"Domain: plonehelpcenter\n"
+
+#. Default: "Duration:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Duration:"
+msgstr ""
+
+#. Default: "Find and modify content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Find and modify content"
+msgstr ""
+
+#. Default: "Go"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "Go"
+msgstr "前往"
+
+#. Default: "Help Center Statistics and Maintenance"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Help Center Statistics and Maintenance"
+msgstr ""
+
+#. Default: "RSS Feed"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS Feed"
+msgstr ""
+
+#. Default: "RSS feed of these search results"
+#: ../skins/plone_help_center/phc_search.pt
+msgid "RSS feed of these search results"
+msgstr ""
+
+#. Default: "Search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "Search"
+msgstr "搜索"
+
+#. Default: "Search for content"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Search for content"
+msgstr ""
+
+#. Default: "Size:"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "Size:"
+msgstr ""
+
+#. Default: "This FAQ applies to a previous version"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "This FAQ applies to a previous version"
+msgstr ""
+
+#. Default: "This form aids maintenance of help center content."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "This form aids maintenance of help center content."
+msgstr ""
+
+#. Default: "This item applies to a previous version"
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "This item applies to a previous version"
+msgstr ""
+
+#. Default: "This video applies to a previous version"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "This video applies to a previous version"
+msgstr ""
+
+#. Default: "Using the criteria below, you can find content and then modify it from the search results page."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "Using the criteria below, you can find content and then modify it from the search results page."
+msgstr ""
+
+#. Default: "accesskeys-search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "accesskeys-search"
+msgstr "搜索快捷键"
+
+#. Default: "All content on one page (useful for printing, presentation mode etc.)"
+#: ../skins/plone_help_center/tutorial_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "all_content_on_one_page"
+msgstr ""
+
+#. Default: "All ${number} ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "all_helptype"
+msgstr ""
+
+#. Default: "More <tal:center replace=\"center/Title\">Documentation</tal:center> …"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "box_more_documentation"
+msgstr ""
+
+#. Default: "No stale items found in the Help Center."
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_no_stale_items"
+msgstr ""
+
+#. Default: "Stale Help Center Items"
+#: ../skins/plone_help_center/portlet_stale_items.pt
+msgid "box_staleitems"
+msgstr ""
+
+#. Default: "Meaningful sentences that explains the answer."
+msgid "desc_answer"
+msgstr "回答此问题的详细描述."
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_and"
+msgstr ""
+
+#. Default: "Has more than one audience selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_audiences_or"
+msgstr ""
+
+#. Default: "Description for the Error Reference Container."
+msgid "description_edit_ErrorReference"
+msgstr ""
+
+#. Default: "Description for the Link."
+msgid "description_edit_Link"
+msgstr ""
+
+#. Default: "Description for the Link Container."
+msgid "description_edit_Link_Container"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_ErrorReference"
+msgstr ""
+
+#. Default: "Description"
+msgid "description_label_Link"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_and"
+msgstr ""
+
+#. Default: "Has more than one section selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_sections_or"
+msgstr ""
+
+#. Default: "Match all"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_and"
+msgstr ""
+
+#. Default: "Has more than one version selected"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_multiple"
+msgstr ""
+
+#. Default: "Match any"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "description_versions_or"
+msgstr ""
+
+#. Default: "Someone added a comment on your ${type}: ${title}. \nIf you are the author of this item, we recommend that you read the comment, and update the documentation accordingly if required - then remove the comment. \nIf further clarification is needed, reply to the comment, and the person who made the comment will get a notification like this, and will likely give you more details. \nTo view the new comment, visit: ${url}"
+#: ../skins/plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_body"
+msgstr ""
+
+#. Default: "New comment on:"
+#: ./plone_help_center/discussion_notify_template.pt
+msgid "discussion_notify_template_subject"
+msgstr ""
+
+#. Default: "Someone has replied to your comment, ${title}. \nTo view the reply, visit: \n${url}"
+#: ../skins/plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_body"
+msgstr ""
+
+#. Default: "New reply to your comment on:"
+#: ./plone_help_center/discussion_reply_notify_template.pt
+msgid "discussion_reply_notify_template_subject"
+msgstr ""
+
+#. Default: "More details on the question, if not evident from the title."
+msgid "help_detailed_question"
+msgstr "关于这个问题的详细描述,补充标题里描述得不清楚的内容."
+
+#. Default: "Return items marked for some or all of these audiences. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one audience selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_audiences"
+msgstr ""
+
+#. Default: "Return items that have comments."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_has_comments"
+msgstr ""
+
+#. Default: "Return items in some or all of these sections. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one section selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_sections"
+msgstr ""
+
+#. Default: "Return items in some or all of these versions. Multiple words may be found by pressing <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac) while clicking the keywords. You can also limit your search to only those items with more than one version selected."
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "help_search_versions"
+msgstr ""
+
+#. Default: "Answer"
+msgid "label_answer"
+msgstr "选择"
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_audiences"
+msgstr ""
+
+#. Default: "Click to enlarge"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "label_click_to_enlarge"
+msgstr ""
+
+#. Default: "Detailed Question"
+msgid "label_detailed_question"
+msgstr "详细问题"
+
+#. Default: "Has comments"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_has_comments"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_sections"
+msgstr ""
+
+#. Default: "Versions"
+#: ../skins/plone_help_center/phc_stats.cpt
+msgid "label_versions"
+msgstr ""
+
+#. Default: "Latest ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "latest_helptype"
+msgstr ""
+
+#. Default: "minutes"
+#: ../skins/plone_help_center/ivideofolder_view.pt
+msgid "minutes"
+msgstr ""
+
+#. Default: "You must publish this page before it becomes visible to the public."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanualpage_view.pt
+msgid "must_publish_before_visible_to_public"
+msgstr ""
+
+#. Default: "Nothing published in ${title}"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "nopublished_helptype"
+msgstr ""
+
+#. Default: "Any audience."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_any_audience"
+msgstr ""
+
+#. Default: "Any version."
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_any_version"
+msgstr "所有版本."
+
+#. Default: "Body"
+msgid "phc_body"
+msgstr ""
+
+#. Default: "Instructions on how to contribute to and use this resource."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_contrib_use"
+msgstr "如何使用和发布文档"
+
+#. Default: "Readers will be informed when content relates to versions not in this list, as it may be outdated."
+msgid "phc_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance rating for new content."
+msgid "phc_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Glossary definitions"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_definition"
+msgstr ""
+
+#. Default: "This Definition applies to:"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_definition_applies_to"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_ErrorReference"
+msgstr ""
+
+#. Default: "Explanation of the error."
+msgid "phc_desc_body_ErrorReference"
+msgstr ""
+
+#. Default: "The body text."
+msgid "phc_desc_body_tutorial"
+msgstr ""
+
+#. Default: "An explanation of the term."
+msgid "phc_desc_definition"
+msgstr ""
+
+#. Default: "Description of the FAQ Container."
+msgid "phc_desc_folder"
+msgstr ""
+
+#. Default: "Description of the Glossary."
+msgid "phc_desc_folder_glossary"
+msgstr ""
+
+#. Default: "Description for the Help Center."
+msgid "phc_desc_helpcenter"
+msgstr ""
+
+#. Default: "The text of the Howto"
+msgid "phc_desc_howto_body"
+msgstr ""
+
+#. Default: "Description for the How-to Container."
+msgid "phc_desc_howto_folder"
+msgstr ""
+
+#. Default: "Web address"
+msgid "phc_desc_link_url"
+msgstr ""
+
+#. Default: "Enter a brief description"
+msgid "phc_desc_tutorial_page"
+msgstr ""
+
+#. Default: "Description for the Video section."
+msgid "phc_desc_video_folder"
+msgstr ""
+
+#. Default: "Documentation search"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_doc_search"
+msgstr "文档搜索"
+
+#. Default: "This Error Reference is intended for:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_error_audiences"
+msgstr ""
+
+#. Default: "Error references"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_errorreference"
+msgstr ""
+
+#. Default: "This Error Reference applies to:"
+#: ../skins/plone_help_center/errorreference_view.pt
+msgid "phc_errorreference_applies_to"
+msgstr ""
+
+#. Default: "Error reference section."
+msgid "phc_errorreference_description"
+msgstr ""
+
+#. Default: "Error References"
+msgid "phc_errorreference_title"
+msgstr ""
+
+#. Default: "FAQs"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_faq"
+msgstr "FAQs"
+
+#. Default: "This FAQ applies to:"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_faq_applies_to"
+msgstr "这个 FAQ 应用于:"
+
+#. Default: "Frequently Asked Questions"
+msgid "phc_faq_description"
+msgstr ""
+
+#. Default: "FAQs"
+msgid "phc_faq_title"
+msgstr ""
+
+#. Default: "Entire documentation area"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_full_area"
+msgstr "整个文档区域"
+
+#. Default: "Full Question"
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+msgid "phc_full_question"
+msgstr "完整的问题"
+
+#. Default: "Glossary of terms."
+msgid "phc_glossary_description"
+msgstr ""
+
+#. Default: "Glossary Definitions"
+msgid "phc_glossary_title"
+msgstr ""
+
+#. Default: "Brief explanation of the How To."
+msgid "phc_help_detailed_howto"
+msgstr ""
+
+#. Default: "Brief explanation of the video's content."
+msgid "phc_help_detailed_video"
+msgstr ""
+
+#. Default: "A summary of the reference manual -- subject and scope. Will be displayed on every page of the manual."
+msgid "phc_help_referencemanual_summary"
+msgstr ""
+
+#. Default: "A summary of the tutorial--aims and scope. Will be displayed on every page of the tutorial."
+msgid "phc_help_tutorial_summary"
+msgstr ""
+
+#. Default: "Length (in minutes) of the video"
+msgid "phc_help_video_duration"
+msgstr ""
+
+#. Default: "Height of the video"
+msgid "phc_help_video_height"
+msgstr ""
+
+#. Default: "Add a screenshot by clicking the \'Browse\' button. Add a screenshot that highlights the content of the instructional video.""
+msgid "phc_help_video_screenshot"
+msgstr ""
+
+#. Default: "Width of the video"
+msgid "phc_help_video_width"
+msgstr ""
+
+#. Default: "Click 'Browse' to upload a Flash .swf file."
+msgid "phc_help_videofile_description"
+msgstr ""
+
+#. Default: "How-tos"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_howto"
+msgstr "How-tos"
+
+#. Default: "This How-to applies to:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_applies_to"
+msgstr ""
+
+#. Default: "This How-to is intended for:"
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_howto_audiences"
+msgstr ""
+
+#. Default: "Step-by-step instructions."
+msgid "phc_howto_description"
+msgstr ""
+
+#. Default: "How-tos"
+msgid "phc_howto_title"
+msgstr ""
+
+#. Default: "Importance of this item."
+msgid "phc_importance"
+msgstr "这个项目的重要性."
+
+#. Default: "Importance ratings content may have."
+msgid "phc_importance_helpcenter"
+msgstr ""
+
+#. Default: "Audiences"
+#: ../skins/plone_help_center/phcfolder_view.pt
+msgid "phc_index_audiences"
+msgstr ""
+
+#. Default: "Sections"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/phc_genericfolder_view.pt
+#: ../skins/plone_help_center/glossary_view.pt
+msgid "phc_index_sections"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_ErrorReference"
+msgstr ""
+
+#. Default: "Body text"
+msgid "phc_label_body_tutorial"
+msgstr ""
+
+#. Default: "Current versions"
+msgid "phc_label_current_versions_helpcenter"
+msgstr ""
+
+#. Default: "Default importance"
+msgid "phc_label_default_importance_helpcenter"
+msgstr ""
+
+#. Default: "Definition"
+msgid "phc_label_definition"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_desc_helpcenter"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_howto"
+msgstr ""
+
+#. Default: "Summary"
+msgid "phc_label_detailed_video"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_glossary"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_folder_tutorial"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_howto_folder"
+msgstr ""
+
+#. Default: "Importance"
+msgid "phc_label_importance"
+msgstr "重要性"
+
+#. Default: "Importance"
+msgid "phc_label_importance_helpcenter"
+msgstr ""
+
+#. Default: "URL"
+msgid "phc_label_link_url"
+msgstr ""
+
+#. Default: "Referenced Items"
+msgid "phc_label_reference"
+msgstr ""
+
+#. Default: "Reference Manual Description"
+msgid "phc_label_referencemanual_description"
+msgstr ""
+
+#. Default: "Related keywords"
+msgid "phc_label_related"
+msgstr "选择"
+
+#. Default: "Sections"
+msgid "phc_label_sections"
+msgstr "选择"
+
+#. Default: "Sections"
+msgid "phc_label_sections-vocab"
+msgstr ""
+
+#. Default: "Tutorial Description"
+msgid "phc_label_tutorial_description"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_tutorial_page"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions"
+msgid "phc_label_versions"
+msgstr "版本"
+
+#. Default: "Duration"
+msgid "phc_label_video_duration"
+msgstr ""
+
+#. Default: "Description"
+msgid "phc_label_video_folder"
+msgstr ""
+
+#. Default: "Height"
+msgid "phc_label_video_height"
+msgstr ""
+
+#. Default: "Screenshot"
+msgid "phc_label_video_screenshot"
+msgstr ""
+
+#. Default: "Width"
+msgid "phc_label_video_width"
+msgstr ""
+
+#. Default: "Flash File (.swf)"
+msgid "phc_label_videofile_description"
+msgstr ""
+
+#. Default: "Link:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link"
+msgstr "链接:"
+
+#. Default: "This Link applies to:"
+#: ../skins/plone_help_center/helplink_view.pt
+msgid "phc_link_applies_to"
+msgstr ""
+
+#. Default: "Links"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_links"
+msgstr ""
+
+#. Default: "Links section."
+msgid "phc_links_description"
+msgstr ""
+
+#. Default: "Links"
+msgid "phc_links_title"
+msgstr ""
+
+#. Default: "Next:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_next"
+msgstr "下一页:"
+
+#. Default: "There are no contained help center object types."
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_nolist"
+msgstr "没有任何可见的文档类型."
+
+#. Default: "of"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_of"
+msgstr "/"
+
+#. Default: "Page"
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_page"
+msgstr "页"
+
+#. Default: "Previous:"
+#: ../skins/plone_help_center/referencemanual_macros.pt
+#: ../skins/plone_help_center/tutorialpage_view.pt
+msgid "phc_previous"
+msgstr "上一页:"
+
+#. Default: "Set one or more references to HelpCenter items."
+msgid "phc_reference"
+msgstr ""
+
+#. Default: "Reference manuals"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_referencemanual"
+msgstr ""
+
+#. Default: "This Reference Manual applies to:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_applies_to"
+msgstr ""
+
+#. Default: "This Reference Manual is intended for:"
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "phc_referencemanual_audiences"
+msgstr ""
+
+#. Default: "Reference Manual description"
+msgid "phc_referencemanual_description"
+msgstr ""
+
+#. Default: "Reference Manual"
+msgid "phc_referencemanual_title"
+msgstr ""
+
+#. Default: "A list of keywords that should be indexed along with the content (e.g. for a how-to on VerboseSecurity, you might include Verbose Security, Insufficient Privileges, Debugging security problems)"
+msgid "phc_related"
+msgstr "和本文档相关的关键字,(如一篇关于安全问题的详细 How-to, 你可以设置:安装,权限,调试等关键字),设置合适的关键字有助于更加精确的搜索文档."
+
+#. Default: "Feed for all documentation."
+#: ../skins/plone_help_center/helpcenter_view.pt
+#, fuzzy
+msgid "phc_rss_all"
+msgstr "所有文档的 RSS 输出"
+
+#. Default: "Section(s) that this item should appear in."
+msgid "phc_sections"
+msgstr "项目显示所属章节."
+
+#. Default: "Define the available sections for classifying these items."
+msgid "phc_sections_vocab"
+msgstr ""
+
+#. Default: "Tutorials"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "phc_tutorial"
+msgstr "教程"
+
+#. Default: "This Tutorial applies to:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_applies_to"
+msgstr ""
+
+#. Default: "This Tutorial is intended for:"
+#: ../skins/plone_help_center/tutorial_view.pt
+msgid "phc_tutorial_audiences"
+msgstr ""
+
+#. Default: "Detailed tutorials."
+msgid "phc_tutorial_description"
+msgstr ""
+
+#. Default: "Tutorials"
+msgid "phc_tutorial_title"
+msgstr ""
+
+#. Default: "Up to Glossary"
+#: ../skins/plone_help_center/definition_view.pt
+msgid "phc_up_to_glossary"
+msgstr "回到术语定义"
+
+#. Default: "Up to Table of Contents"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+#: ../skins/plone_help_center/faq_view.pt
+#, fuzzy
+msgid "phc_up_to_toc"
+msgstr "回到 FAQ 列表"
+
+#. Default: "Versions that items in help can refer to."
+msgid "phc_version_helpcenter"
+msgstr ""
+
+#. Default: "Versions of product that apply to this item (leave blank if not version-specific)"
+msgid "phc_versions"
+msgstr "这个产品的版本号(如果未定义任何版本号,请保持空)"
+
+#. Default: "This Video applies to:"
+#: ../skins/plone_help_center/ivideo_view.pt
+msgid "phc_video_applies_to"
+msgstr ""
+
+#. Default: "Instructional videos."
+msgid "phc_video_description"
+msgstr ""
+
+#. Default: "Videos"
+msgid "phc_video_title"
+msgstr ""
+
+#. Default: "View entire FAQ in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+#: ../skins/plone_help_center/faqsection_view.pt
+msgid "phc_view_entire_faq"
+msgstr "完整模式浏览所有 FAQ"
+
+#. Default: "View section in full"
+#: ../skins/plone_help_center/faqfolder_view.pt
+msgid "phc_view_entire_section"
+msgstr "完整模式浏览本节"
+
+#. Default: "Warning: This item is marked as outdated."
+#: ../skins/plone_help_center/errorreference_view.pt
+#: ../skins/plone_help_center/definition_view.pt
+#: ../skins/plone_help_center/howto_view.pt
+msgid "phc_warning_outdated"
+msgstr ""
+
+#. Default: "Recent documentation"
+#: ../skins/plone_help_center/portlet_helpcenter.pt
+msgid "portlet_header_recent_docs"
+msgstr "最新文档"
+
+#. Default: "in"
+#: ../skins/plone_help_center/helpcenter_view.pt
+msgid "searchform_in"
+msgstr ""
+
+#. Default: "see also:"
+#: ../skins/plone_help_center/helpcenter_references.pt
+msgid "see_also"
+msgstr ""
+
+#. Default: "There are no pages or sections in this Reference Manual."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual1"
+msgstr ""
+
+#. Default: "Use the 'add new item' menu to add Sections, Pages, Files, or Images. Sections can be nested in an arbitrary depth, but we recommend not using more than three or four levels for good legibility."
+#: ../skins/plone_help_center/referencemanualsection_view.pt
+#: ../skins/plone_help_center/referencemanual_view.pt
+msgid "view_no_reference_manual2"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the tutorial pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/tutorial-all-pages.pt
+msgid "view_paginated_pages"
+msgstr ""
+
+#. Default: "Note: This is the print view with all the Reference Manual pages on one page. <a href=\"\" tal:attributes=\"href here/absolute_url\"> The paginated version is available here</a>, if you prefer that."
+#: ../skins/plone_help_center/referencemanual-all-pages.pt
+msgid "view_paginated_reference_manual"
+msgstr ""
+

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/catalog.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/catalog.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/catalog.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<object name="portal_catalog">
+ <index name="getAudiences" meta_type="KeywordIndex">
+  <indexed_attr value="getAudiences"/>
+ </index>
+ <index name="getSections" meta_type="KeywordIndex">
+  <indexed_attr value="getSections"/>
+ </index>
+ <index name="getStartHere" meta_type="FieldIndex">
+  <indexed_attr value="getStartHere"/>
+ </index>
+ <index name="getVersions" meta_type="KeywordIndex">
+  <indexed_attr value="getVersions"/>
+ </index>
+ <index name="isOutdated" meta_type="FieldIndex">
+  <indexed_attr value="isOutdated"/>
+ </index>
+
+ <column value="getAudiences"/>
+ <column value="getSections"/>
+ <column value="getStartHere"/>
+ <column value="getVersions"/>
+ <column value="isOutdated"/>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/cssregistry.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/cssregistry.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/cssregistry.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="portal_css" meta_type="Stylesheets Registry">
+  <stylesheet id="helpcenter.css" 
+	      media="all"
+	      />
+  <stylesheet id="helpcenter_print.css" 
+	      media="print"
+	      />
+</object>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/factorytool.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/factorytool.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/factorytool.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<object name="portal_factory">
+ <factorytypes>
+  <type portal_type="HelpCenterReferenceManualFolder"/>
+  <type portal_type="HelpCenterInstructionalVideoFolder"/>
+  <type portal_type="HelpCenterErrorReference"/>
+  <type portal_type="HelpCenterTutorialPage"/>
+  <type portal_type="HelpCenterFAQFolder"/>
+  <type portal_type="HelpCenterLink"/>
+  <type portal_type="HelpCenterHowTo"/>
+  <type portal_type="HelpCenterErrorReferenceFolder"/>
+  <type portal_type="HelpCenterFAQ"/>
+  <type portal_type="HelpCenterDefinition"/>
+  <type portal_type="HelpCenterReferenceManual"/>
+  <type portal_type="HelpCenterTutorialFolder"/>
+  <type portal_type="HelpCenterGlossary"/>
+  <type portal_type="HelpCenterHowToFolder"/>
+  <type portal_type="HelpCenterTutorial"/>
+  <type portal_type="HelpCenterReferenceManualSection"/>
+  <type portal_type="HelpCenterReferenceManualPage"/>
+  <type portal_type="HelpCenterInstructionalVideo"/>
+  <type portal_type="HelpCenterLinkFolder"/>
+ </factorytypes>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/propertiestool.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/propertiestool.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/propertiestool.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<object name="portal_properties">
+ <object name="navtree_properties">
+  <property name="parentMetaTypesNotToQuery" type="lines">
+   <element value="HelpCenterHowTo"/>
+   <element value="HelpCenterTutorial"/>
+   <element value="HelpCenterErrorReference"/>
+   <element value="HelpCenterFAQ"/>
+   <element value="HelpCenterDefinition"/>
+   <element value="HelpCenterLink"/>
+   <element value="HelpCenterInstructionalVideo"/>
+   <element value="HelpCenterReferenceManual"/>
+   <element value="HelpCenterTutorialPage"/>
+   <element value="HelpCenterReferenceManualPage"/>
+  </property>
+  <property name="metaTypesNotToList" type="lines">
+   <element value="HelpCenterHowTo"/>
+   <element value="HelpCenterTutorial"/>
+   <element value="HelpCenterErrorReference"/>
+   <element value="HelpCenterFAQ"/>
+   <element value="HelpCenterDefinition"/>
+   <element value="HelpCenterLink"/>
+   <element value="HelpCenterInstructionalVideo"/>
+   <element value="HelpCenterReferenceManual"/>
+   <element value="HelpCenterTutorialPage"/>
+   <element value="HelpCenterReferenceManualPage"/>
+  </property>
+ </object>
+ <object name="site_properties" meta_type="Plone Property Sheet">
+  <property name="use_folder_tabs" type="lines">
+   <element value="HelpCenterReferenceManualFolder"/>
+   <element value="HelpCenterHowTo"/>
+   <element value="HelpCenterInstructionalVideoFolder"/>
+   <element value="HelpCenterErrorReference"/>
+   <element value="HelpCenterErrorReferenceFolder"/>
+   <element value="HelpCenterGlossary"/>
+   <element value="HelpCenterTutorialFolder"/>
+   <element value="HelpCenterHowToFolder"/>
+   <element value="HelpCenterFAQFolder"/>
+   <element value="HelpCenterTutorial"/>
+   <element value="HelpCenterReferenceManualSection"/>
+   <element value="HelpCenterLinkFolder"/>
+   <element value="HelpCenter"/>
+   <element value="HelpCenterReferenceManual"/>
+  </property>
+  <property name="typesLinkToFolderContentsInFC" type="lines">
+   <element value="HelpCenterReferenceManualFolder"/>
+   <element value="HelpCenterHowTo"/>
+   <element value="HelpCenterInstructionalVideoFolder"/>
+   <element value="HelpCenterErrorReference"/>
+   <element value="HelpCenterErrorReferenceFolder"/>
+   <element value="HelpCenterGlossary"/>
+   <element value="HelpCenterTutorialFolder"/>
+   <element value="HelpCenterHowToFolder"/>
+   <element value="HelpCenterFAQFolder"/>
+   <element value="HelpCenterTutorial"/>
+   <element value="HelpCenterReferenceManualSection"/>
+   <element value="HelpCenterLinkFolder"/>
+   <element value="HelpCenter"/>
+   <element value="HelpCenterReferenceManual"/>
+  </property>
+ </object>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/skins.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/skins.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/skins.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<object name="portal_skins">
+ <object name="plone_help_center" meta_type="Filesystem Directory View"
+    directory="PloneHelpCenter/skins/plone_help_center"/>
+ <object name="plone_help_center_images" meta_type="Filesystem Directory View"
+    directory="PloneHelpCenter/skins/plone_help_center_images"/>
+ <skin-path name="*">
+  <layer name="plone_help_center_images" insert-after="custom"/>
+  <layer name="plone_help_center" insert-after="plone_help_center_images"/>
+ </skin-path>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenter.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenter.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenter.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<object name="HelpCenter"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Help Center</property>
+ <property name="description">A simple folderish archetype</property>
+ <property name="content_icon">helpcenter_icon.gif</property>
+ <property name="content_meta_type">HelpCenter</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenter</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">True</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterFAQFolder"/>
+  <element value="HelpCenterHowToFolder"/>
+  <element value="HelpCenterTutorialFolder"/>
+  <element value="HelpCenterReferenceManualFolder"/>
+  <element value="HelpCenterLinkFolder"/>
+  <element value="HelpCenterErrorReferenceFolder"/>
+  <element value="HelpCenterGlossary"/>
+  <element value="HelpCenterInstructionalVideoFolder"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">helpcenter_view</property>
+ <property name="view_methods">
+  <element value="helpcenter_topicview"/>
+  <element value="helpcenter_topicview_main"/>
+  <element value="helpcenter_view"/>
+ </property>
+ <property name="default_view_fallback">False</property>
+ <alias from="(Default)" to="(dynamic view)"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="stats" to="phc_stats"/>
+ <alias from="view" to="(selected layout)"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="False">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+ <action title="Statistics" action_id="stats" category="object"
+    condition_expr="" url_expr="string:${object_url}/stats" visible="True">
+  <permission value="Manage properties"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterDefinition.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterDefinition.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterDefinition.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<object name="HelpCenterDefinition" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Definition</property>
+ <property
+    name="description">A Definition defines a special term, and will be listed in the glossary.
+      </property>
+ <property name="content_icon">glossary_icon.gif</property>
+ <property name="content_meta_type">HelpCenterDefinition</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterDefinition</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">definition_view</property>
+ <alias from="(Default)" to="definition_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="definition_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReference.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReference.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReference.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<object name="HelpCenterErrorReference"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Error Reference</property>
+ <property
+    name="description">An Error Reference can be used to explain a particular error which may 
+      arise.
+      </property>
+ <property name="content_icon">errorref_icon.gif</property>
+ <property name="content_meta_type">HelpCenterErrorReference</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterErrorReference</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Image"/>
+  <element value="File"/>
+ </property>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">errorreference_view</property>
+ <alias from="(Default)" to="errorreference_view"/>
+ <alias from="attachments" to="phc_attachments"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="errorreference_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+ <action title="Attachments" action_id="attachments" category="object"
+    condition_expr="" url_expr="string:${object_url}/attachments"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReferenceFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReferenceFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterErrorReferenceFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<object name="HelpCenterErrorReferenceFolder"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Error Reference Section</property>
+ <property
+    name="description">An Error Reference Section can contain references to and explanations of 
+      common errors.
+      </property>
+ <property name="content_icon">errorref_icon.gif</property>
+ <property name="content_meta_type">HelpCenterErrorReferenceFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterErrorReferenceFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterErrorReference"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">errorreferencefolder_view</property>
+ <alias from="(Default)" to="errorreferencefolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="errorreferencefolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQ.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQ.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQ.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<object name="HelpCenterFAQ" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">FAQ</property>
+ <property
+    name="description">A Frequently Asked Question defines a common question with an answer - 
+      this is a place to document answers to common questions, not ask them.
+      </property>
+ <property name="content_icon">faq_icon.gif</property>
+ <property name="content_meta_type">HelpCenterFAQ</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterFAQ</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">faq_view</property>
+ <alias from="(Default)" to="faq_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="faq_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterFAQFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<object name="HelpCenterFAQFolder" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">FAQ Section</property>
+ <property
+    name="description">An FAQ Section can hold frequently asked questions with answers.</property>
+ <property name="content_icon">faq_icon.gif</property>
+ <property name="content_meta_type">HelpCenterFAQFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterFAQFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterFAQ"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">faqfolder_view</property>
+ <alias from="(Default)" to="faqfolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="faqfolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterGlossary.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterGlossary.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterGlossary.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<object name="HelpCenterGlossary" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Glossary</property>
+ <property
+    name="description">A Glossary can be used to hold definitions of common terms, listing them 
+      in a dictionary-like manner.
+      </property>
+ <property name="content_icon">glossary_icon.gif</property>
+ <property name="content_meta_type">HelpCenterGlossary</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterGlossary</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterDefinition"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">glossary_view</property>
+ <alias from="(Default)" to="glossary_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="glossary_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowTo.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowTo.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowTo.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<object name="HelpCenterHowTo" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">How-to</property>
+ <property
+    name="description">A How-to is a document describing how to address a single, common 
+      use-case or issue. You may add images and files as attachments.
+      </property>
+ <property name="content_icon">howto_icon.gif</property>
+ <property name="content_meta_type">HelpCenterHowTo</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterHowTo</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="Image"/>
+  <element value="File"/>
+ </property>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">howto_view</property>
+ <alias from="(Default)" to="howto_view"/>
+ <alias from="attachments" to="phc_attachments"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="howto_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+ <action title="Attachments" action_id="attachments" category="object"
+    condition_expr="" url_expr="string:${object_url}/attachments"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowToFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowToFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterHowToFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<object name="HelpCenterHowToFolder"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">How-to Section</property>
+ <property
+    name="description">A How-to Section can contain how-to documents.</property>
+ <property name="content_icon">topic_icon.gif</property>
+ <property name="content_meta_type">HelpCenterHowToFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterHowToFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterHowTo"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">howtofolder_view</property>
+ <alias from="(Default)" to="howtofolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="howtofolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideo.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideo.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideo.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<object name="HelpCenterInstructionalVideo"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Video</property>
+ <property
+    name="description">This is an Instructional Video content type, to which you can attach 
+      movies and other relevant files.
+      </property>
+ <property name="content_icon">movie_icon.gif</property>
+ <property name="content_meta_type">HelpCenterInstructionalVideo</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterInstructionalVideo</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">ivideo_view</property>
+ <alias from="(Default)" to="ivideo_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="ivideo_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="False">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="False">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideoFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideoFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterInstructionalVideoFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<object name="HelpCenterInstructionalVideoFolder"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Video Section</property>
+ <property name="description">A simple folderish archetype</property>
+ <property name="content_icon">movie_icon.gif</property>
+ <property
+    name="content_meta_type">HelpCenterInstructionalVideoFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterInstructionalVideoFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterInstructionalVideo"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">ivideofolder_view</property>
+ <alias from="(Default)" to="ivideofolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="ivideofolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLink.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLink.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLink.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<object name="HelpCenterLink" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Link</property>
+ <property name="description">A simple archetype</property>
+ <property name="content_icon">helplink_icon.gif</property>
+ <property name="content_meta_type">HelpCenterLink</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterLink</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">helplink_view</property>
+ <alias from="(Default)" to="helplink_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="helplink_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLinkFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLinkFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterLinkFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<object name="HelpCenterLinkFolder" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Link Section</property>
+ <property name="description">A simple folderish archetype</property>
+ <property name="content_icon">link_icon.gif</property>
+ <property name="content_meta_type">HelpCenterLinkFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterLinkFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterLink"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">helplinkfolder_view</property>
+ <alias from="(Default)" to="helplinkfolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="helplinkfolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManual.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManual.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManual.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<object name="HelpCenterReferenceManual"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Reference Manual</property>
+ <property
+    name="description">A reference manual containing ReferenceManualPages,
+      ReferenceManualSections, Files and Images.
+      </property>
+ <property name="content_icon">referencemanual_icon.gif</property>
+ <property name="content_meta_type">HelpCenterReferenceManual</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterReferenceManual</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterReferenceManualPage"/>
+  <element value="HelpCenterReferenceManualSection"/>
+  <element value="Image"/>
+  <element value="File"/>
+ </property>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">referencemanual_view</property>
+ <alias from="(Default)" to="referencemanual_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="referencemanual_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<object name="HelpCenterReferenceManualFolder"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Reference Manual Section</property>
+ <property name="description">A simple folderish archetype</property>
+ <property name="content_icon">referencemanual_icon.gif</property>
+ <property name="content_meta_type">HelpCenterReferenceManualFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterReferenceManualFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterReferenceManual"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">referencemanualfolder_view</property>
+ <alias from="(Default)" to="referencemanualfolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="referencemanualfolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualPage.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualPage.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualPage.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<object name="HelpCenterReferenceManualPage"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Page</property>
+ <property name="description">Part of a reference manual.</property>
+ <property name="content_icon">document_icon.gif</property>
+ <property name="content_meta_type">HelpCenterReferenceManualPage</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterReferenceManualPage</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">referencemanualpage_view</property>
+ <alias from="(Default)" to="referencemanualpage_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="referencemanualpage_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualSection.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualSection.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterReferenceManualSection.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<object name="HelpCenterReferenceManualSection"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Section</property>
+ <property
+    name="description">A section of a reference manual containing ReferenceManualPages and
+      other ReferenceManualSections.
+      </property>
+ <property name="content_icon">chapter_icon.gif</property>
+ <property
+    name="content_meta_type">HelpCenterReferenceManualSection</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterReferenceManualSection</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterReferenceManualPage"/>
+  <element value="Image"/>
+  <element value="HelpCenterReferenceManualSection"/>
+ </property>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">referencemanualsection_view</property>
+ <alias from="(Default)" to="referencemanualsection_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="referencemanualsection_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorial.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorial.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorial.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<object name="HelpCenterTutorial" meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Tutorial</property>
+ <property
+    name="description">A tutorial containing TutorialPages, Files and Images.</property>
+ <property name="content_icon">tutorial_icon.gif</property>
+ <property name="content_meta_type">HelpCenterTutorial</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterTutorial</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterTutorialPage"/>
+  <element value="Image"/>
+  <element value="File"/>
+ </property>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">tutorial_view</property>
+ <alias from="(Default)" to="tutorial_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="tutorial_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialFolder.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialFolder.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialFolder.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<object name="HelpCenterTutorialFolder"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Tutorial Section</property>
+ <property name="description">A simple folderish archetype</property>
+ <property name="content_icon">tutorial_icon.gif</property>
+ <property name="content_meta_type">HelpCenterTutorialFolder</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterTutorialFolder</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">True</property>
+ <property name="allowed_content_types">
+  <element value="HelpCenterTutorial"/>
+ </property>
+ <property name="allow_discussion">False</property>
+ <property name="default_view">tutorialfolder_view</property>
+ <alias from="(Default)" to="tutorialfolder_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="tutorialfolder_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+ <action title="Folder Listing" action_id="folderlisting" category="folder"
+    condition_expr="object/isPrincipiaFolderish"
+    url_expr="string:${folder_url}/view" visible="False">
+  <permission value="View"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialPage.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialPage.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types/HelpCenterTutorialPage.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<object name="HelpCenterTutorialPage"
+   meta_type="Factory-based Type Information with dynamic views"
+   xmlns:i18n="http://xml.zope.org/namespaces/i18n">
+ <property name="title">Page</property>
+ <property name="description">Part of a tutorial.</property>
+ <property name="content_icon">document_icon.gif</property>
+ <property name="content_meta_type">HelpCenterTutorialPage</property>
+ <property name="product">PloneHelpCenter</property>
+ <property name="factory">addHelpCenterTutorialPage</property>
+ <property name="immediate_view">base_edit</property>
+ <property name="global_allow">False</property>
+ <property name="filter_content_types">False</property>
+ <property name="allowed_content_types"/>
+ <property name="allow_discussion">True</property>
+ <property name="default_view">tutorialpage_view</property>
+ <alias from="(Default)" to="tutorialpage_view"/>
+ <alias from="edit" to="base_edit"/>
+ <alias from="properties" to="base_metadata"/>
+ <alias from="sharing" to="folder_localrole_form"/>
+ <alias from="view" to="tutorialpage_view"/>
+ <action title="View" action_id="view" category="object" condition_expr=""
+    url_expr="string:${object_url}/view" visible="True">
+  <permission value="View"/>
+ </action>
+ <action title="Edit" action_id="edit" category="object" condition_expr=""
+    url_expr="string:${object_url}/edit" visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="Properties" action_id="metadata" category="object"
+    condition_expr="" url_expr="string:${object_url}/properties"
+    visible="True">
+  <permission value="Modify portal content"/>
+ </action>
+ <action title="References" action_id="references" category="object"
+    condition_expr="object/archetype_tool/has_graphviz"
+    url_expr="string:${object_url}/reference_graph" visible="True">
+  <permission value="Modify portal content"/>
+  <permission value="Review portal content"/>
+ </action>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/types.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/types.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/types.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<object name="portal_types" meta_type="Plone Types Tool">
+ <object name="HelpCenter"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterDefinition"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterErrorReference"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterErrorReferenceFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterFAQ" meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterFAQFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterGlossary"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterHowTo" meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterHowToFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterInstructionalVideo"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterInstructionalVideoFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterLink" meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterLinkFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterReferenceManual"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterReferenceManualFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterReferenceManualPage"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterReferenceManualSection"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterTutorial"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterTutorialFolder"
+    meta_type="Factory-based Type Information with dynamic views"/>
+ <object name="HelpCenterTutorialPage"
+    meta_type="Factory-based Type Information with dynamic views"/>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenter_workflow/definition.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenter_workflow/definition.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenter_workflow/definition.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,270 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="helpcenter_workflow"
+             title="Default Workflow [PloneHelpCenter]"
+             state_variable="review_state"
+             initial_state="in-progress">
+ <permission>Access contents information</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+ <permission>Change portal events</permission>
+ <permission>List folder contents</permission>
+ <permission>Add portal content</permission>
+ <state state_id="in-progress" title="In progress">
+  <exit-transition transition_id="mark_obsolete"/>
+  <exit-transition transition_id="publish"/>
+  <exit-transition transition_id="submit"/>
+  <permission-map name="Access contents information"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="obsolete" title="Obsolete">
+  <exit-transition transition_id="re-activate"/>
+  <permission-map name="Access contents information"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="pending" title="Waiting for reviewer">
+  <exit-transition transition_id="mark_obsolete"/>
+  <exit-transition transition_id="publish"/>
+  <exit-transition transition_id="reject"/>
+  <exit-transition transition_id="retract"/>
+  <permission-map name="Access contents information"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="published" title="Published">
+  <exit-transition transition_id="mark_obsolete"/>
+  <exit-transition transition_id="reject"/>
+  <exit-transition transition_id="retract"/>
+  <permission-map name="Access contents information"
+                  acquired="True">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="True">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="True">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="mark_obsolete"
+             title="Mark Obsolete" new_state="obsolete"
+             trigger="USER" before_script="" after_script="">
+  <action url="%(content_url)s/content_hide_form"
+          category="workflow">Mark obsolete</action>
+  <guard>
+   <guard-expression>python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)</guard-expression>
+  </guard>
+ </transition>
+ <transition transition_id="publish"
+             title="Reviewer publishes content"
+             new_state="published" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_publish_form"
+          category="workflow">Publish</action>
+  <guard>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+ </transition>
+ <transition transition_id="re-activate"
+             title="Re-activates obsolete item"
+             new_state="in-progress" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_retract_form"
+          category="workflow">Re-activate</action>
+  <guard>
+   <guard-expression>python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)</guard-expression>
+  </guard>
+ </transition>
+ <transition transition_id="reject"
+             title="Reviewer rejects submission"
+             new_state="in-progress" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_reject_form"
+          category="workflow">Reject</action>
+  <guard>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+ </transition>
+ <transition transition_id="retract"
+             title="Member retracts submission"
+             new_state="in-progress" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_retract_form"
+          category="workflow">Retract</action>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+  </guard>
+ </transition>
+ <transition transition_id="submit"
+             title="Member requests publishing"
+             new_state="pending" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_submit_form"
+          category="workflow">Submit</action>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+  </guard>
+ </transition>
+ <worklist worklist_id="reviewer_queue" title="">
+  <description>Reviewer tasks</description>
+  <action url="%(portal_url)s/search?review_state=pending"
+          category="global">Pending (%(count)d)</action>
+  <guard>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+  <match name="review_state" values="pending"/>
+ </worklist>
+ <variable variable_id="action" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The last transition</description>
+  <default>
+   
+   <expression>transition/getId|nothing</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="actor" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The ID of the user who performed the last transition</description>
+  <default>
+   
+   <expression>user/getId</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="comments" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Comments about the last transition</description>
+  <default>
+   
+   <expression>python:state_change.kwargs.get('comment', '')</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="review_history" for_catalog="False"
+           for_status="False" update_always="False">
+  <description>Provides access to workflow history</description>
+  <default>
+   
+   <expression>state_change/getHistory</expression>
+  </default>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+ </variable>
+ <variable variable_id="time" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Time of the last transition</description>
+  <default>
+   
+   <expression>state_change/getDateTime</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+</dc-workflow>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenterfolder_workflow/definition.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenterfolder_workflow/definition.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcenterfolder_workflow/definition.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,214 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="helpcenterfolder_workflow"
+             title="Folder Workflow [Plone]"
+             state_variable="review_state"
+             initial_state="published">
+ <permission>Add portal content</permission>
+ <permission>Access contents information</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+ <permission>List folder contents</permission>
+ <permission>PloneHelpCenter: Add Documentation</permission>
+ <state state_id="private" title="Private">
+  <exit-transition transition_id="publish"/>
+  <exit-transition transition_id="show"/>
+  <permission-map name="Access contents information"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="PloneHelpCenter: Add Documentation"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="published" title="Open for submissions">
+  <exit-transition transition_id="hide"/>
+  <exit-transition transition_id="retract"/>
+  <permission-map name="Access contents information"
+                  acquired="True">
+   <permission-role>Anonymous</permission-role>
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Member</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="True">
+   <permission-role>Anonymous</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="PloneHelpCenter: Add Documentation"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Member</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="True">
+   <permission-role>Anonymous</permission-role>
+   <permission-role>Manager</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="visible" title="Visible">
+  <exit-transition transition_id="hide"/>
+  <exit-transition transition_id="publish"/>
+  <permission-map name="Access contents information"
+                  acquired="True">
+   <permission-role>Anonymous</permission-role>
+   <permission-role>Manager</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Add portal content" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="List folder contents"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Member</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="PloneHelpCenter: Add Documentation"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="True">
+   <permission-role>Anonymous</permission-role>
+   <permission-role>Manager</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="hide" title="Hide"
+             new_state="private" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_hide_form"
+          category="workflow">Hide</action>
+  <guard>
+   <guard-role>Owner</guard-role>
+  </guard>
+ </transition>
+ <transition transition_id="publish"
+             title="Open for submissions"
+             new_state="published" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_publish_form"
+          category="workflow">Open for submissions</action>
+  <guard>
+   <guard-permission>Modify portal content</guard-permission>
+   <guard-role>Owner</guard-role>
+   <guard-role>Manager</guard-role>
+  </guard>
+ </transition>
+ <transition transition_id="retract"
+             title="Close for submissions"
+             new_state="visible" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_retract_form"
+          category="workflow">Close for submissions</action>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+  </guard>
+ </transition>
+ <transition transition_id="show"
+             title="Member makes content visible"
+             new_state="visible" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_show_form"
+          category="workflow">Make visible</action>
+  <guard>
+   <guard-role>Owner</guard-role>
+  </guard>
+ </transition>
+ <worklist worklist_id="reviewer_queue" title="">
+  <description>Reviewer tasks</description>
+  <action url="%(portal_url)s/search?review_state=pending"
+          category="global">Pending (%(count)d)</action>
+  <guard>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+  <match name="review_state" values="pending"/>
+ </worklist>
+ <variable variable_id="action" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The last transition</description>
+  <default>
+   
+   <expression>transition/getId|nothing</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="actor" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The ID of the user who performed the last transition</description>
+  <default>
+   
+   <expression>user/getId</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="comments" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Comments about the last transition</description>
+  <default>
+   
+   <expression>python:state_change.kwargs.get('comment', '')</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="review_history" for_catalog="False"
+           for_status="False" update_always="False">
+  <description>Provides access to workflow history</description>
+  <default>
+   
+   <expression>state_change/getHistory</expression>
+  </default>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+ </variable>
+ <variable variable_id="time" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Time of the last transition</description>
+  <default>
+   
+   <expression>state_change/getDateTime</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+</dc-workflow>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcentersubitem_workflow/definition.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcentersubitem_workflow/definition.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/workflows/helpcentersubitem_workflow/definition.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="helpcentersubitem_workflow"
+             title="Sub-item workflow [PloneHelpCenter]"
+             state_variable="review_state"
+             initial_state="hidden">
+ <permission>Access contents information</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+ <permission>Change portal events</permission>
+ <state state_id="hidden" title="Draft">
+  <exit-transition transition_id="publish"/>
+  <permission-map name="Access contents information"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+   <permission-role>Reviewer</permission-role>
+  </permission-map>
+ </state>
+ <state state_id="published" title="Public">
+  <exit-transition transition_id="hide"/>
+  <permission-map name="Access contents information"
+                  acquired="True">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="Change portal events"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+  <permission-map name="Modify portal content"
+                  acquired="False">
+   <permission-role>Manager</permission-role>
+   <permission-role>Owner</permission-role>
+  </permission-map>
+  <permission-map name="View" acquired="True">
+   <permission-role>Manager</permission-role>
+  </permission-map>
+ </state>
+ <transition transition_id="hide"
+             title="Owner hides item from the public"
+             new_state="hidden" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_hide_form"
+          category="workflow">Hide</action>
+  <guard>
+   <guard-expression>python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)</guard-expression>
+  </guard>
+ </transition>
+ <transition transition_id="publish"
+             title="Reviewer publishes content"
+             new_state="published" trigger="USER"
+             before_script="" after_script="">
+  <action url="%(content_url)s/content_publish_form"
+          category="workflow">Publish</action>
+  <guard>
+   <guard-expression>python: user.has_permission("Review portal content", here) or user.has_role("Owner", here)</guard-expression>
+  </guard>
+ </transition>
+ <worklist worklist_id="reviewer_queue" title="">
+  <description>Reviewer tasks</description>
+  <action url="%(portal_url)s/search?review_state=pending"
+          category="global">Pending (%(count)d)</action>
+  <guard>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+  <match name="review_state" values="pending"/>
+ </worklist>
+ <variable variable_id="action" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The last transition</description>
+  <default>
+   
+   <expression>transition/getId|nothing</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="actor" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>The ID of the user who performed the last transition</description>
+  <default>
+   
+   <expression>user/getId</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="comments" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Comments about the last transition</description>
+  <default>
+   
+   <expression>python:state_change.kwargs.get('comment', '')</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+ <variable variable_id="review_history" for_catalog="False"
+           for_status="False" update_always="False">
+  <description>Provides access to workflow history</description>
+  <default>
+   
+   <expression>state_change/getHistory</expression>
+  </default>
+  <guard>
+   <guard-permission>Request review</guard-permission>
+   <guard-permission>Review portal content</guard-permission>
+  </guard>
+ </variable>
+ <variable variable_id="time" for_catalog="False"
+           for_status="True" update_always="True">
+  <description>Time of the last transition</description>
+  <default>
+   
+   <expression>state_change/getDateTime</expression>
+  </default>
+  <guard>
+  </guard>
+ </variable>
+</dc-workflow>

Added: gzo/trunk/products/PloneHelpCenter/profiles/default/workflows.xml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/profiles/default/workflows.xml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/profiles/default/workflows.xml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<object name="portal_workflow">
+ <object name="helpcenter_workflow" meta_type="Workflow"/>
+ <object name="helpcenterfolder_workflow" meta_type="Workflow"/>
+ <object name="helpcentersubitem_workflow" meta_type="Workflow"/>
+ <bindings>
+  <type type_id="HelpCenterDefinition">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterErrorReference">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterErrorReferenceFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterFAQ">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterFAQFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterGlossary">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterHowTo">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterHowToFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterInstructionalVideo">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterInstructionalVideoFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterLink">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterLinkFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterReferenceManual">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterReferenceManualFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterReferenceManualPage">
+   <bound-workflow workflow_id="helpcentersubitem_workflow"/>
+  </type>
+  <type type_id="HelpCenterReferenceManualSection">
+   <bound-workflow workflow_id="helpcentersubitem_workflow"/>
+  </type>
+  <type type_id="HelpCenterTutorial">
+   <bound-workflow workflow_id="helpcenter_workflow"/>
+  </type>
+  <type type_id="HelpCenterTutorialFolder">
+   <bound-workflow workflow_id="helpcenterfolder_workflow"/>
+  </type>
+  <type type_id="HelpCenterTutorialPage">
+   <bound-workflow workflow_id="helpcentersubitem_workflow"/>
+  </type>
+ </bindings>
+</object>

Added: gzo/trunk/products/PloneHelpCenter/refresh.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/refresh.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/refresh.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1 @@
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/HowToTemplate.dtml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/HowToTemplate.dtml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/HowToTemplate.dtml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,8 @@
+<h2>Purpose</h2>
+<p>Explain the purpose of your how-to here. Why does someone want to read it?</p>
+<h2>Prerequisities</h2>
+<p>Explain what is needed to follow the how-to. Try to be specific about versions you are referring to.</p>
+<h2>Step by step</h2>
+<p>Explain how to complete the task here. Make sure people can understand what steps are involved. If you can, include examples and screenshots.</p>
+<h2>Further information</h2>
+<p>If there is anywhere else the reader can go for more information on this topic, include some links or pointers here.</p>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/checkVersionOutdated.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/checkVersionOutdated.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/checkVersionOutdated.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,21 @@
+## Script (Python) "checkVersionOutdated"
+##title=Return 1 if the version is outdated, 0 otherwise
+##parameters=versions, currentVersions=None
+
+if not versions:
+    return 0
+    
+if not currentVersions:        
+    # Acquire current versions if not given
+    currentVersions = context.getCurrentVersions()
+        
+if not currentVersions:
+    return 0
+
+for v in versions:
+    if v in currentVersions:
+        # Not outdated - we match one of the current versions
+        return 0
+        
+# Outdated - we didn't match anything
+return 1
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/definition_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/definition_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/definition_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,56 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+    
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Title
+    </h1>
+    <a href=""
+      class="link-parent visualNoPrint"
+      tal:condition="not: request/full|nothing"
+      tal:define="parent_url python:here.navigationParent(here, template.getId())"
+      tal:attributes="href parent_url">
+      <span i18n:translate="phc_up_to_glossary">Up to Glossary</span>      
+    </a>
+    
+    <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+    <p class="discreet">
+       <span  tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+	<span i18n:translate="phc_definition_applies_to">This Definition applies to:</span>         
+    <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+    <span tal:condition="not: versions">
+	  <span i18n:translate="phc_any_version">
+	  Any version.
+	  </span>
+    </span>
+ </span>
+    </p>
+
+    
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+      Definition
+    </div>
+
+    
+    
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,11 @@
+## Script (Python) "notify_content_author"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##title=Notify the author of a piece of content that a comment has been added
+##parameters=
+from Products.PloneHelpCenter.utils import discussion_notify
+discussion_notify(context)
+return state

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify.cpy.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,2 @@
+[actions]
+action.success=redirect_to_action:string:view

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify_template.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify_template.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_notify_template.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,25 @@
+<div i18n:domain="plonehelpcenter" 
+     tal:omit-tag=""
+     tal:define="charset site_properties/default_charset | string:utf-8;
+                 dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;;charset=%s' % charset);
+                 comment_on_object nocall:options/comment_on_object;
+                 comment_on_type comment_on_object/portal_type;
+                 comment_on_title comment_on_object/title_or_id;">
+<tal:body i18n:translate="discussion_notify_template_body">
+Someone added a comment on your <span i18n:name="type" tal:replace="comment_on_type">type</span>:
+<span i18n:name="title" tal:replace="comment_on_title" />.
+
+If you are the author of this item, we recommend that you read the comment,
+and update the documentation accordingly if required - then remove the comment.
+
+If further clarification is needed, reply to the comment, and the person who
+made the comment will get a notification like this, and will likely give you
+more details.
+
+To view the new comment, visit:
+<span i18n:name="url" tal:replace="comment_on_object/absolute_url" />
+</tal:body>
+
+-- 
+<span tal:replace="here/email_from_name" />
+</div>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,60 @@
+## Script (Python) "discussion_reply"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=subject,body_text,text_format='plain',username=None,password=None
+##title=Reply to content
+
+from Products.PythonScripts.standard import url_quote_plus
+req = context.REQUEST
+
+if username or password:
+    # The user username/password inputs on on the comment form were used,
+    # which might happen when anonymous commenting is enabled. If they typed
+    # something in to either of the inputs, we send them to 'logged_in'.
+    # 'logged_in' will redirect them back to this script if authentication
+    # succeeds with a query string which will post the message appropriately
+    # and show them the result.  if 'logged_in' fails, the user will be
+    # presented with the stock login failure page.  This all depends
+    # heavily on cookiecrumbler, but I believe that is a Plone requirement.
+    came_from = '%s?subject=%s&amp;body_text=%s' % (req['URL'], subject, body_text)
+    came_from = url_quote_plus(came_from)
+    portal_url = context.portal_url()
+
+    return req.RESPONSE.redirect(
+        '%s/logged_in?__ac_name=%s'
+        '&amp;__ac_password=%s'
+        '&amp;came_from=%s' % (portal_url,
+                               url_quote_plus(username),
+                               url_quote_plus(password),
+                               came_from,
+                               )
+        )
+
+# if (the user is already logged in) or (if anonymous commenting is enabled and
+# they posted without typing a username or password into the form), we do
+# the following
+
+creator = context.portal_membership.getAuthenticatedMember().getUserName()
+tb = context.talkback
+id = tb.createReply(title=subject, text=body_text, Creator=creator)
+reply = tb.getReply(id)
+
+#XXX THIS NEEDS TO GO AWAY!
+portal_discussion=context.portal_discussion
+if hasattr(portal_discussion.aq_explicit, 'cookReply'):
+    portal_discussion.cookReply(reply, text_format='plain')
+
+parent = tb.aq_parent
+
+from Products.CMFPlone.utils import transaction_note
+
+transaction_note('Added comment to %s at %s' % (parent.title_or_id(), reply.absolute_url()))
+
+#target = '%s/%s' % (parent.absolute_url(), parent.getTypeInfo().getActionById('view'))
+#return req.RESPONSE.redirect(target)
+state.setContext(parent)
+return state

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply.cpy.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,6 @@
+[validators]
+validators = validate_talkback
+
+[actions]
+action.failure=redirect_to_action:string:discussion_reply_form
+action.success=traverse_to:string:discussion_notify

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply_notify_template.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply_notify_template.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/discussion_reply_notify_template.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,23 @@
+<div i18n:domain="plonehelpcenter"
+     tal:omit-tag=""
+     tal:define="charset site_properties/default_charset | string:utf-8;
+                 dummy python:request.RESPONSE.setHeader('Content-Type', 'text/html;;charset=%s' % charset);
+		 comment_on_object nocall:options/comment_on_object;
+		 comment_on_type comment_on_object/portal_type;
+		 comment_on_title comment_on_object/title_or_id;"
+>Date: <span tal:define="now python:modules['DateTime'].DateTime()" tal:replace="now/rfc822" />
+To: <span tal:replace="options/send_to_address" />
+From: <span tal:replace="options/send_from_address" />
+Subject: <tal:subject i18n:translate="discussion_reply_notify_template_subject">New reply to your comment on:</tal:subject> <span tal:replace="comment_on_title" />
+Content-Type: text/plain; charset=<span tal:replace="charset" />
+
+<tal:body i18n:translate="discussion_reply_notify_template_body">
+Someone has replied to your comment, <span i18n:name="title" tal:replace="comment_on_title" />.
+
+To view the reply, visit:
+<span i18n:name="url" tal:replace="comment_on_object/absolute_url" />
+</tal:body>
+
+--
+<span tal:replace="here/email_from_name" />
+</div>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/edit_reminder.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/edit_reminder.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/edit_reminder.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,12 @@
+## Script (Python) "edit_reminder"
+##title=Check edited object and print state-aware message.
+##parameters=
+
+wtool = context.portal_workflow
+
+if wtool.getInfoFor(context, 'review_state') == 'in-progress':
+    msg = 'Content+saved.%20+It+must+be+published+before+it+will+be+visible+to+others.%20+Please+submit+it+for+review+when+completed.'
+else:
+    msg='Your+changes+have+been+saved.'   
+
+return context.REQUEST.RESPONSE.redirect('%s?portal_status_message=%s' % (context.absolute_url(),msg) )

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreference_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreference_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreference_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,101 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+<body>
+
+<div metal:fill-slot="main">
+
+    <div metal:define-macro="main"
+         tal:define="len_text python:len(here.body);">
+      
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+        
+        <h1 class="documentFirstHeading">
+            <img tal:replace="structure here/errorref_icon.gif" />
+            <span tal:replace="here/title_or_id">Title or id</span>
+        </h1>
+        
+        <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+        <p class="discreet">
+           <span tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+      	<span i18n:translate="phc_errorreference_applies_to">This Error Reference applies to:</span>         
+          <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+          <span tal:condition="not: versions">
+      	  <span i18n:translate="phc_any_version">
+      	  Any version.
+      	  </span>
+          </span>
+         </span>
+          <span tal:condition="here/getAudiencesVocab" tal:define="audiences here/Audiences">
+          <br/>
+         <span i18n:translate="phc_error_audiences">This Error Reference is intended for:</span>         
+          <span tal:condition="audiences" tal:replace="audiences">1.0, 2.0</span>
+          <span tal:condition="not: audiences">
+           <span i18n:translate="phc_any_audience">
+           Any audience.
+           </span>
+          </span>
+         </span>
+          </p>
+        
+        <div class="documentDescription"
+             tal:content="here/Description">
+            description
+        </div>
+  
+        <p tal:condition="not: len_text"
+           i18n:domain="plone"
+           i18n:translate="no_body_text">
+            This item does not have any body text, click the edit tab to change it.
+        </p>
+    
+        <div id="bodyContent">
+            <div tal:replace="structure python:here.getBody()" />
+        </div>
+    
+        <tal:block define="items python:here.getFolderContents(contentFilter={'portal_type' : ('File', 'ATFile')})">
+           <fieldset tal:condition="nocall:items">
+               <legend>Attached files</legend>
+               <ul class="visualNoMarker">
+               <tal:related tal:repeat="item items">
+                   <li tal:define="
+                           desc      item/Description;
+                           item_type item/portal_type;
+                           item_type_class python: 'contenttype-' + putils.normalizeString(item_type);
+                           item_wf_state       item/review_state|python: getInfoFor(item, 'review_state', '');
+                           item_wf_state_class python: 'state-' + putils.normalizeString(item_wf_state);
+                           item_url           item/getURL;">
+                       <span tal:attributes="class item_type_class">
+                       <a href="" class="visualIconPadding"
+                           tal:attributes="href  item_url;
+                                           title desc;"
+                           tal:content="item/pretty_title_or_id">
+                           Related Item
+                       </a>
+                       </span>
+                   </li>
+               </tal:related>
+               </ul>
+           </fieldset>
+      </tal:block>
+    
+    
+    
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>    
+
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreferencefolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreferencefolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/errorreferencefolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+<metal:folderView use-macro="here/phc_genericfolder_view/macros/master">
+    <img metal:fill-slot="item_icon" 
+        tal:replace="structure here/errorref_icon.gif"/>
+</metal:folderView>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faq_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faq_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faq_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,57 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+    
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Folder Title
+    </h1>
+    
+    <a href=""
+      class="link-parent visualNoPrint"
+      tal:condition="not: request/full|nothing"
+      tal:define="parent_url python:here.navigationParent(here, template.getId())"
+      tal:attributes="href parent_url">
+	  <span i18n:translate="phc_up_to_toc">Up to Table of Contents</span>
+    </a>
+    
+    <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+    <p class="discreet">
+       <span tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+	<span i18n:translate="phc_faq_applies_to">This FAQ applies to:</span>         
+    <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+    <span tal:condition="not: versions">
+	  <span i18n:translate="phc_any_version">
+	  Any version.
+	  </span>
+    </span>
+ </span>
+    </p>
+    
+    
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+	<span i18n:translate="phc_full_question">Full Question</span>
+    </div>
+
+    <div tal:content="structure here/getAnswer"/>
+
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,140 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main">
+    <div metal:define-macro="body" 
+      tal:define="pss python:modules['Products.PythonScripts.standard']; 
+                  sections here/@@hcf_view/getItemsBySections;
+                  noSections python:len(sections) == 1;
+                  full request/full|nothing">
+
+      <div metal:use-macro="here/document_actions/macros/document_actions">
+        Document actions (print, sendto etc)
+      </div>
+      
+      <h1 tal:content="here/Title" class="documentFirstHeading">
+        Folder Title
+      </h1>
+
+      <tal:entirefaq condition="full">
+        <a class="link-expand"
+          tal:attributes="href python:'%s' % here.absolute_url()">
+          <span i18n:translate="phc_up_to_toc">Up to Table of Contents</span>
+        </a>
+      </tal:entirefaq>
+
+      <tal:entirefaq condition="not: full">
+        <a class="link-expand"
+          tal:attributes="href python:'%s?full=1' % here.absolute_url()">
+          <span i18n:translate="phc_view_entire_faq">View entire FAQ in full</span>
+        </a>
+      </tal:entirefaq>
+
+
+      <div class="documentDescription"
+        tal:content="here/Description">
+        Description.
+      </div>
+
+      <dl class="portlet visualNoPrint"
+          style="float:right; margin: 0 0 1em 1em;"
+          tal:condition="not:noSections">
+        <dt class="portletHeader"
+            i18n:translate="phc_index_sections">Sections</dt>
+        <dd class="portletItem">
+          <ol>
+            <li tal:repeat="section sections">
+                <a tal:attributes="href python:'%s#%s'% (here.absolute_url(), section['id'],)"
+                   tal:content="section/section">Section</a>
+             </li>
+          </ol>
+        </dd>
+      </dl>
+
+      <div tal:repeat="section sections">
+
+        
+        <h2 tal:condition="not:noSections">
+          <a class="link-anchor"
+             tal:content="section/section"
+             tal:attributes="name section/id">
+            Section Heading
+          </a>
+        </h2>
+
+        <tal:section condition="not:full">
+          <a class="link-expand"
+            tal:attributes="href python:'%s/faqsection_view?section=%s' % (here.absolute_url(), pss.url_quote(section['section']) )">
+            <span i18n:translate="phc_view_entire_section">
+            View section in full
+            </span>
+          </a> 
+
+          <ol>
+            <li tal:repeat="faq python:section['items']">
+                <a href="" tal:content="faq/Title" 
+                   tal:attributes="href faq/getURL;
+                                   class string:state-${faq/review_state}">FAQ</a>
+                <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                     tal:condition="faq/isOutdated|nothing"
+                     title="This FAQ applies to a previous version" 
+                     i18n:attributes="title"/>
+            </li>
+
+          </ol>
+
+        </tal:section>
+
+        <div tal:condition="full" 
+          tal:repeat="faq python:section['items']">
+         <tal:faq define="faq faq/getObject">
+          
+          <h3>
+            <img tal:replace="structure here/faq_icon.gif" />
+            <span tal:replace="faq/Title">Question</span>
+            <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                 tal:condition="faq/isOutdated|nothing"
+                 title="This FAQ applies to a previous version" 
+                 i18n:attributes="title"/>
+          </h3>
+
+          <p tal:condition="faq/Description"
+             tal:content="structure faq/Description"
+             class="portletContent even">
+            Full Question
+          </p>
+
+          <div tal:content="structure faq/getAnswer"
+               class="portletContent odd">
+            Answer
+          </div>
+
+          <p tal:condition="faq/Versions" 
+          class="discreet">
+          This FAQ applies to: 
+          <span tal:condition="faq/Versions"
+            metal:use-macro="python:faq.widget('versions')">
+            Versions
+          </span>
+
+          <span tal:condition="not: faq/Versions">
+              <span i18n:translate="phc_any_version">
+              Any version.
+              </span>
+          </span>
+          </p>
+        
+        </tal:faq>
+        </div>
+      </div>
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqsection_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqsection_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/faqsection_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,87 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main">
+    <div metal:define-macro="body" 
+                 tal:define="view here/@@hcf_view; section request/section;">
+      
+      <div metal:use-macro="here/document_actions/macros/document_actions">
+        Document actions (print, sendto etc)
+      </div>
+
+      <h1 tal:content="here/Title" class="documentFirstHeading">
+        Folder Title
+      </h1>
+
+      <tal:entirefaq>
+        <a class="link-expand"
+          tal:attributes="href python:'%s?full=1' % here_url">
+	  <span i18n:translate="phc_view_entire_faq">View entire FAQ in full</span>
+	  </a>
+      </tal:entirefaq>
+
+      <tal:toc>
+        <a class="link-parent"
+          tal:attributes="href here_url">
+	  <span i18n:translate="phc_up_to_toc">Up to Table of Contents</span>
+	  </a>
+      </tal:toc>
+
+      <div class="documentDescription"
+        tal:content="here/Description">
+        Description.
+      </div>
+
+      <h2 tal:content="section">Section Heading</h2>
+
+      <div class="faqMarker" tal:repeat="faq python: view.getItemsBySection(section=section)">
+
+      <tal:faq define="faq faq/getObject">
+
+        <h3>
+          <img tal:replace="structure here/faq_icon.gif" />
+          <span tal:replace="faq/Title">Question</span>
+          <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                     tal:condition="faq/isOutdated"
+                     title="This FAQ applies to a previous version" 
+                     i18n:attributes="title"/>
+        </h3>
+
+        <p tal:condition="faq/Description"
+        tal:content="structure faq/Description"
+	class="portletContent even">
+	<span i18n:translate="phc_full_question">Full Question</span>
+        </p>
+
+        <div tal:content="structure faq/getAnswer"
+	class="portletContent odd">
+          Answer
+        </div>
+
+        <p tal:condition="faq/versions" 
+        class="discreet">
+	<span i18n:translate="phc_faq_applies_to">This FAQ applies to:</span>         
+        <span tal:condition="faq/versions"
+          metal:use-macro="python:faq.widget('versions')">
+          Versions
+        </span>
+
+        <span tal:condition="not: faq/versions">
+	  <span i18n:translate="phc_any_version">
+          Any version.
+	  </span>
+        </span>
+        </p>
+        </tal:faq>
+      </div>
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/fetchStaleItems.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/fetchStaleItems.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/fetchStaleItems.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,34 @@
+## Script (Python) "fetchStaleItems"
+##title=Query for "stale" HelpCenter items, i.e. unchanged for a specified interval
+##parameters=stale_interval
+
+# Construct a catalog query using the specified interval (count back from
+# the current date-time) and return the list of matching result objects.
+# This will populate the stale-HelpCenter-items portlet.
+thresholdValues = {
+    '1_day': 1,
+    '1_week': 7,
+    '2_weeks': 14,
+    '1_month': 30,
+    '3_months': 90,
+    '6_months': 180,
+    '1_year': 365,
+}
+
+stale_threshold_time = DateTime() - thresholdValues[ stale_interval ]
+
+results = context.portal_catalog.searchResults(
+    modified = { 'query': stale_threshold_time, 'range': 'max' },
+    review_state=['published'], 
+    portal_type=[
+        'HelpCenterDefinition',
+        'HelpCenterErrorReference',
+        'HelpCenterFAQ',
+        'HelpCenterHowTo',
+        'HelpCenterLink',
+        'HelpCenterTutorial',
+    ],
+    sort_on='portal_type',
+)
+
+return results

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/glossary_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/glossary_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/glossary_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,73 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+  <body>
+    <div metal:fill-slot="main"
+         tal:define="view here/@@hcf_view;
+                     sections python:view.getItemsBySections(sort_on = 'sortable_title');
+                     noSections python:len(sections) == 1">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Folder Title
+    </h1>
+    
+    <table class="sectionIndex" tal:condition="not:noSections">
+        <thead>
+            <tr><th i18n:translate="phc_index_sections">Sections</th></tr>
+        </thead>
+        <tbody>
+            <tr tal:repeat="section sections">
+                <td><a tal:attributes="href python:'%s#%s'% (here.absolute_url(), section['id'],)"
+                       tal:content="section/section">Section</a>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+
+    <div class="documentDescription"
+         tal:content="here/Description">
+      Description.
+    </div>
+
+    <div tal:repeat="section sections">
+
+        <h2 tal:condition="not:noSections">
+          <a class="link-anchor" 
+              tal:content="section/section"
+              tal:attributes="name section/id">
+              Section heading
+          </a>
+        </h2>
+
+        <dl>
+            <tal:howto tal:repeat="item python:section['items']">
+            <dt>
+                <img tal:replace="structure here/glossary_icon.gif" />
+                <a href="" tal:content="item/Title"
+                   tal:attributes="href item/getURL;
+                                   class string:state-${item/review_state}">Item</a>
+                <a class="link-anchor" 
+                    tal:attributes="name item/getId;
+                                    href string:${here/absolute_url}#${item/getId};">#</a>
+                <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                     tal:condition="item/isOutdated"
+                     title="This item applies to a previous version" 
+                     i18n:attributes="title"/>
+            </dt>
+            
+            <dd tal:content="structure item/Description">Description</dd>
+          </tal:howto>
+        </dl>
+
+    </div>
+
+    </div>
+  </body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter.css.dtml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter.css.dtml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter.css.dtml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,163 @@
+/* 
+** Plone Help Center style sheet for CSS2-capable browsers.
+**
+** Copyright Alexander Limi - http://www.plonesolutions.com
+**
+** Feel free to use whole or parts of this for your own designs, but give credit
+** where credit is due.
+**
+*/
+
+/* <dtml-with base_properties> */
+
+.link-expand {
+    background: transparent url(&dtml-portal_url;/arrowDown.gif) 4px 5px no-repeat;
+    padding: 1px 0px 1px 16px;
+    display: block;
+    font-size: &dtml-fontSmallSize;;
+    float: right;
+}
+
+.faqMarker {
+    list-style-type: square;
+    list-style-image: url(&dtml-portal_url;/faq_icon.gif);
+}
+
+.portletHalfWidth {
+    width: 45%; 
+    float: left; 
+    margin: 0 1em 1em 0 !important;
+}
+
+.portletThirdWidth {
+    width: 30%; 
+    float: left; 
+    margin: 0 1em 1em 0 !important;
+}
+
+/* Section index */
+table.sectionIndex {
+    float: right;
+    background: &dtml-backgroundColor;;
+    border-collapse: collapse;
+    border-left: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    font-size: &dtml-fontSmallSize;;
+    margin: 0.5em 0em 1em 1em;
+}
+.sectionIndex th {
+    background: &dtml-globalBackgroundColor;;
+    border-top: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    border-right: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    font-weight: normal;
+    padding: 0.25em 1em;
+    text-transform: &dtml-textTransform;;
+}
+.sectionIndex td {
+    border-right: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+    padding: 0.25em 1em;
+}
+
+.sectionIndex a {
+    text-decoration: none;
+}
+
+.sectionIndex a:hover {
+    text-decoration: underline;
+}
+
+
+/* Box with info about a tutorial, displayed on a tutorial page */
+.tutorialAbout {
+    display: inline;
+    float: right;
+    background-color: &dtml-globalBackgroundColor;;
+    border-color: &dtml-globalBorderColor;;
+    border-width: &dtml-borderWidth;;
+    border-style: &dtml-borderStyle;;
+    font-size: &dtml-fontSmallSize;;
+    margin: 0.5em 0 0.5em 0.5em;
+    padding: 1em;
+    width: 10em;
+    clear: right;
+    text-align: center;
+}
+
+/* Jump box for reference manual indexes */
+.jumpBox {
+    float: right;
+    text-align: right;
+}
+
+/* Image flagging outdated items in listings */
+.outdatedMarker {
+    
+}
+
+/* States for things */
+.state-hidden {
+    color: red;
+}
+
+.state-in-progress {
+    color: #74AE0B;
+}
+
+.state-obsolete {
+    color: #cccccc;
+}
+
+ul.quickLinks {
+    margin: 0 0 1em 0;
+    background-color: #dee7ec;
+    border: solid 1px #8cacbb;
+    padding: 1em;
+    text-align: center;
+}
+ul.quickLinks li {
+    display: inline;
+    margin-right: 1em;
+}
+
+dl.topicList {
+    width: 32%;
+    display: block;
+    float: left;
+    margin: 0 0.5em 1em 0;
+/*    min-height: 7em; */
+}
+dl.topicList dt {
+    font-size: 120%;
+}
+dl.topicList dt a {
+    color: black;
+}
+dl.topicList dd {
+    margin: 0;
+    display: inline;
+}
+
+.flatlist li {
+    display: inline;
+    margin-right: 2em;
+}
+.flatlist ul {
+    margin-left: 0;
+    margin-bottom: 1em;
+}
+
+.doclist dd {
+  margin-left: 20px;
+}
+
+.template-helpcenter_topicview_main .readmore {
+  text-align: right;
+}
+
+h2.section-subheading {
+  margin-top: 0.5em;
+}
+
+
+/* </dtml-with> */
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,220 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+    <head>
+        <metal:block fill-slot="top_slot"
+                     tal:define="dummy python:request.set('disable_border',1)" />
+    </head>
+
+<body>
+    <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+    Document actions (print, sendto etc)
+    </div>
+    
+    <h1 class="documentFirstHeading">
+    Using the Help Center
+    </h1>
+
+    <a class="link-parent visualNoPrint"
+      href=".">
+      Back to the Help Center
+    </a>
+    
+
+    <div class="documentDescription">
+    A brief description of how you use and contribute to the Help Center.
+    </div>
+
+    <p>
+    Welcome to the Help Center! This way of doing documentation is a bit
+    different from what you may be used to, so please read this document
+    to understand how to contribute.
+    </p>
+    
+    <h2>Quick Start</h2>
+    
+    <p>For the impatient, here's the bare minimum you should know:</p>
+    
+    <ol>
+        <li>You normally need to be logged in.</li>
+
+        <li>There are several different documentation types, most are 
+            self-explanatory, but pay attention to the difference between a
+            <strong>How-to</strong> and a <strong>Tutorial</strong> (explained
+            below).
+        </li>
+
+        <li>To add a piece of documentation/help, go into the relevant section,
+            <strong>make sure there isn't already an existing entry about what
+            you want to add</strong>,
+            and use the button at the top right to add (normally says <code>Add 
+            FAQ</code> or similar).
+        </li>
+
+        <li>Add your content, and save it. This edit/view cycle can be
+            performed as many times as you like, until you are happy with the
+            result.
+        </li>
+
+        <li>Make sure you <code>Submit</code> your document for publication
+            when you are done &mdash; top right pulldown in the content area.
+        </li>
+        
+        <li>A reviewer will then pick up the document, and publish it unless
+            the content needs to be improved.
+        </li>
+            
+        <li>If somebody adds comments to your entry later, you will be notified
+            by e-mail.
+        </li>
+    </ol>    
+
+    <h2>What type of item is my documentation?</h2>
+
+    <p>Below is a description, usage and example for each type.</p>
+
+    <dl>
+        <dt>Frequently Asked Question (FAQ)</dt>
+
+        <dd>
+            <p>
+            An FAQ is a short question with a 1-2 paragraph answer. You can add several
+            questions to a FAQ area and group the questions into sections.
+            </p>
+
+            <fieldset>
+                <legend>FAQ Example</legend>
+                <strong>Question:</strong> What is Plone?
+
+                <p>
+                <strong>Answer:</strong>
+                Plone is an open source Enterprise Content Management
+                System (ECM/CMS) that runs on top of Zope and CMF.
+                </p>
+            </fieldset>
+
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>HowTo</dt>
+
+        <dd>
+            <p>
+            A HowTo is a one-page description on how to accomplish something, but is
+    folderish, so Files/Images can be attached. It's usually very brief and to-the-point.
+            </p>
+
+            <fieldset>
+                <legend>Typical How-Tos</legend>
+
+                <ul>
+                    <li>How to set up Plone with the Apache Web Server</li>
+                    <li>How to change the tabs that appear at the top of the portal</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>Tutorial</dt>
+
+        <dd>
+            <p>
+            A tutorial is a multi-paged article with lots of detail. The tutorial
+            is more in-depth than a How-to, and may cover the conceptual aspects
+            of the task, in addition to the practical steps to get the job done.
+            </p>
+            <p>
+            If you are unsure of the difference of a How-to and a Tutorial, think
+            about it as the difference between a recipe that only teaches you 
+            what ingredients are needed, and how to bake the cake (How-to),
+            and an article telling you about the history behind cakes in general,
+            that may or may not teach you how to actually bake one (Tutorial).
+            </p>
+
+            <fieldset>
+                <legend>Typical Tutorials</legend>
+
+                <ul>
+                    <li>How to utilize workflows in your projects</li>
+                    <li>Why separate content, logic and presentation?</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+
+
+
+    <dl>
+        <dt>Help Link</dt>
+
+        <dd>
+            <p>
+                A help link is a link (either external or internal). It is
+    different from a standard Plone link in that it can have section
+    and version information.
+
+            </p>
+
+            <fieldset>
+                <legend>Typical Help Links</legend>
+
+                <ul>
+                    <li>The Zope Book at zope.org</li>
+                    <li>CSS reference manual at W3C</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>Error Reference</dt>
+
+        <dd>
+            <p>
+                An error reference is meant to be the explanation of a particular error, with details on how to fix it, if relevant.
+            </p>
+
+            <fieldset>
+                <legend>Typical Error References</legend>
+
+                <ul>
+                    <li>Expected sequence, got integer</li>
+                    <li>FS Page Template has errors: Compilation failed</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+    
+    <dl>
+        <dt>Glossary Definition</dt>
+
+        <dd>
+            <p>
+                A glossary definition describes a particular term used as 
+                concisely as possible.
+            </p>
+
+            <fieldset>
+                <legend>Typical Glossary Definitions</legend>
+
+                <ul>
+                    <li><strong>CMF</strong>: The Content Management Framework</li>
+                    <li><strong>Workflow</strong>: A state machine structure used to model business processes</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    
+
+  </div>
+</body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help.pt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,2 @@
+[default]
+title= Using the Help Center

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help_it.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help_it.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help_it.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,237 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+    <head>
+        <metal:block fill-slot="top_slot"
+                     tal:define="dummy python:request.set('disable_border',1)" />
+    </head>
+
+<body>
+    <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+    Document actions (print, sendto etc)
+    </div>
+
+    <h1 class="documentFirstHeading">
+    Usare il Centro di Supporto
+    </h1>
+
+    <a class="link-parent visualNoPrint"
+      href=".">
+      Ritorna al Centro di Supporto
+    </a>
+    
+
+    <div class="documentDescription">
+    Una breve descrizione di come potete contribuire ed utilizzare il Centro di Supporto.
+    </div>
+
+    <p>
+    Benvenuti al centro di Supporto! Questo modo di documentare e' leggermente
+    diverso da quello a cui siete abituati, quindi, per cortesia, leggete questo documento
+    per comprendere come contribuire.
+    </p>
+    
+    <h2>Partenza rapida</h2>
+    
+    <p>Per l'impaziente: c'e' un minimo di cose da sapere:</p>
+    
+    <ol>
+        <li>Normalmente dovete essere "loggati" cioe' aver fornito un identificativo d'utente ed una password.</li>
+
+        <li>Ci sono differenti tipi di documentazione, la maggior parte sono
+	    autoesplicativi, ma prestate attenzione alla differenza tra
+	    <strong>Manuali di istruzione</strong> e <strong>Vademecum</strong>
+	    (la differenza e' spiegata qui sotto).
+        </li>
+
+        <li>
+	    Per aggiungere un elemento di documentazione/aiuto, andare alla sezione corrispondente
+	    <strong>controllate che non ci sia gia' un documento relativo allo
+	    stesso argomento che volete aggiungere</strong>
+	    ed utilizzate il bottone in alto a destra (normalmente contiene la
+	    scritta <code>Aggiungi Domanda Frequente</code> o qualcosa di simile).
+        </li>
+
+        <li>
+	    Aggiungere il contenuto e salvarlo. Questo ciclo modifica/riguarda
+	    puo' essere eseguito tante volte quante si vuole, finche' sarete
+	    soddisfatti del risultato.
+        </li>
+
+        <li>
+	    Assicuratevi di cambiare lo stato del documento in <code>Conferma</code>
+	    per pubblicarlo quando avrete finito la redazione
+	    &mdash; utilizzate il menu a tendina sulla destra nell'area
+	    del documento.
+        </li>
+        
+        <li>
+	    Un revisore si prendera' in carico il documento, e provvedrera'
+	    a pubblicarlo, a meno che il contenuto non necessiti di miglioramenti.
+        </li>
+            
+        <li>
+	    Se qualcuno in seguito aggiungera' dei commenti, sarete informati via e-mail.
+        </li>
+    </ol>    
+
+    <h2>Quali tipi di elementi sono compresi nella documentazione?</h2>
+
+    <p>Qui di seguito trovate una descrizione, utilizzo ed esempio per ogni tipo.</p>
+
+    <dl>
+        <dt>Domande frequenti (FAQ)</dt>
+
+        <dd>
+            <p>
+	    Una "Domanda frequente" e' una breve domanda che richiede una risposta
+	    di 1-2 paragrafi.
+	    Potete aggiungere molte domande alla sezione delle "Domande frequenti"
+	    e raggrupparle in sezioni.
+            </p>
+
+            <fieldset>
+                <legend>Esempio di Domanda frequente</legend>
+                <strong>Domanda:</strong> Che cosa e' Plone?
+
+                <p>
+                <strong>Risposta:</strong>
+		Plone e' sistema open source per la gestione di contenuti di
+		livello azienda (Enterprise Content Management
+                System - ECM/CMS) basato su Zope e CMF.
+                </p>
+            </fieldset>
+
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>Ricette</dt>
+
+        <dd>
+            <p>
+	    Una ricetta e' una descrizione di una pagina su come fare qualcosa,
+	    ma ha il formato di una cartella, quindi puo' avere come allegati file/immagini.
+	    In genere e' breve e focalizzata.
+            </p>
+
+            <fieldset>
+                <legend>Tipiche ricette</legend>
+
+                <ul>
+                    <li>Come impostare Plone per lavorare con un server web Apache</li>
+                    <li>Come cambiare le linguette che appaiono in cima alla pagina del portale</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>Guide</dt>
+
+        <dd>
+            <p>
+	    Una guida e' un articolo su piu' pagine che contiene molti dettagli.
+	    La guida e' molto piu' approfondita del Manuale d'istruzione,
+	    e copre aspetti concettuali dell'attivita', oltre ai passi effettivi
+	    per completare il lavoro.
+            </p>
+            <p>
+	    Se non sei sicuro di aver compreso la differenza tra Ricette 
+	    e Guide, pensa alla differenza tra una ricetta che ti indica soltanto
+	    gli ingredienti richiesti, e come fare (ricetta) una torta,
+	    ed un articolo che parla della storia delle torte in generale,
+	    che puo', o meno, insegnare come farne effettivamente una (guida).
+            </p>
+
+            <fieldset>
+                <legend>Tipiche guide</legend>
+
+                <ul>
+                    <li>Come utilizzare il "workflow" nei vostri progetti</li>
+                    <li>Perche' separare contenuto, logica e presentazione?</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+
+
+
+    <dl>
+        <dt>Collegamenti di aiuto</dt>
+
+        <dd>
+            <p>
+	       Un Collegamento di aiuto e' un collegamento (interno od esterno).
+	       E' differente da un normale collegamento di Plone in quanto
+	       possiede informazioni relative alla sezione ed alla versione.
+
+            </p>
+
+            <fieldset>
+                <legend>Tipici collegamenti di aiuto</legend>
+
+                <ul>
+                    <li>Il Libro di Zope sul sito zope.org</li>
+                    <li>Il manuale di riferimento del CSS sul sito del W3C</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    <dl>
+        <dt>Decodifica degli errori</dt>
+
+        <dd>
+            <p>
+	       Una Decodifica di errore rappresenta la spiegazione di un 
+	       particolare errore, con dettagli su come risolverlo,
+	       se rilevante.
+            </p>
+
+            <fieldset>
+                <legend>Tipiche decodifiche di errori</legend>
+
+                <ul>
+                    <li>Ci si aspetta una sequenza, e' stato ricevuto un intero</li>
+                    <li>FS Page Template contiene degli errori: Compilazione fallita</li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+    
+    <dl>
+        <dt>Definizioni del Glossario</dt>
+
+        <dd>
+            <p>
+	       Una definizione del glossario descrive 
+	       il significato di un termine
+	       particolare nel modo piu' conciso possibile.
+            </p>
+
+            <fieldset>
+                <legend>Tipiche definizioni del glossario</legend>
+
+                <ul>
+                    <li><strong>CMF</strong>: L'ambiente di gestione dei contenuti
+		    (Content Management Framework)</li>
+                    <li><strong>Workflow</strong>: Una macchina a stati finiti
+		    utilizzata per modellare il processo elaborativo
+		    </li>
+                </ul>
+            </fieldset>
+        </dd>
+    </dl>
+
+    
+
+  </div>
+</body>
+
+</html>


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_help_it.pt
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_ploneorg.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_ploneorg.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_ploneorg.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,176 @@
+<html metal:use-macro="context/main_template/macros/master">
+<head>
+<style type="text/css" media="all" metal:fill-slot="css_slot">
+.supportlink {
+    font-size:1.1em;
+}
+ul.quickLinks {
+    margin: 0 0 1em 0;
+    background-color: #dee7ec;
+    border: solid 1px #8cacbb;
+    padding: 1em;
+    text-align: center;
+}
+ul.quickLinks li {
+    display: inline;
+    margin-right: 1em;
+}
+
+dl.topicList {
+    width: 45%;
+    display: block;
+    float: left;
+    margin: 0 2em 2em 0;
+/*    min-height: 7em; */
+}
+dl.topicList dt {
+    font-size: 120%;
+    border-bottom: 1px solid #000;
+}
+dl.topicList dt a {
+    color: black;
+    text-decoration: none;
+}
+dl.topicList dd {
+    margin: 0;
+    display: inline;
+}
+#books {
+    display: block;
+    float: left;
+    width: 240px;
+    margin-bottom: 1em;
+}
+#searchform {
+    clear: both;
+    float: left;
+    width: 240px;
+    margin-top: 0;
+}
+#searchform fieldset {
+    margin-top: -0.5em;
+}
+#reading .rc {
+    margin-left: 270px;
+}
+</style>
+</head>
+<body>
+   
+  <div metal:fill-slot="main" tal:define="view context/@@hc_view; sections view/getSectionMap">
+
+    <dl id="reading" class="portlet">
+      <dt class="portletHeader">Recommended Reading</dt>
+      <dd class="portletItem">
+
+        <a href="books" id="books"><img tal:replace="structure here/books.jpg" /></a>
+        
+        <div class="rc">
+            <h3>Books</h3>
+            <ul>
+              <li tal:repeat="book python:context.books.getFolderContents()[:5]">
+                <a href="[book-url]"
+                    tal:attributes="href book/getURL"
+                    tal:content="book/Title">[Book Title]
+                </a>
+              </li>
+            </ul>
+        </div>
+        
+        <br style="clear:both" />
+        
+        <form name="searchform"
+              id="searchform"
+              action="phc_search"
+              tal:attributes="action string:${here/absolute_url}/phc_search">
+               
+            <fieldset>
+                
+                <legend i18n:translate="phc_doc_search">Documentation search</legend>
+                
+                <label for="searchGadget"
+                       class="hiddenStructure"
+                       i18n:domain="plone"
+                       i18n:translate="text_search">
+                    Search Documentation
+                </label>
+                <input name="SearchableText"
+                       type="text"
+                       size="14"
+                       value=""
+                       alt="Search Documentation"
+                       title="Search Documentation"
+                       accesskey="accesskeys-search"
+                       i18n:attributes="alt; accesskey; title"
+                       tal:attributes="value request/SearchableText|nothing;
+                                       tabindex tabindex/next" 
+                />
+        
+                <input class="searchButton"
+                       name="Search"
+                       type="submit"
+                       value="Search"
+                       accesskey="accesskeys-search"
+                       tal:attributes="tabindex tabindex/next"
+                       i18n:attributes="value; accesskey" />
+                       
+                
+                <div id="phc_asearch_link" style="margin-top: 6px;">
+                    <a href="phc_asearch_form" tal:attributes="href string:${here/getPHCUrl}/phc_asearch_form" i18n:translate="phc_asearch_link">
+                        Search by topic, version, audience&hellip;
+                    </a>
+                </div>
+                
+            </fieldset>
+        </form>
+    
+        <div class="rc">    
+            <h3>Additional Resources</h3>
+            <ul>
+                <li><a href="manual">Manuals</a></li>
+                <li><a href="faq">Frequently Asked Questions</a></li>
+                <li><a href="error">Error Reference</a></li>
+                <li><a href="glossary">Glossary</a></li>
+            </ul>
+        </div>
+
+      </dd>
+    </dl>
+
+    <br style="clear:both" />
+        
+    <dl class="topicList"
+        tal:repeat="section sections">
+      <dt><a href="[section-url]" tal:attributes="href section/url">
+            <span tal:content="section/title" />
+            (<span tal:content="section/count" />)</a></dt>
+      <dd tal:repeat="item section/subtopics" class="discreet">
+          <a href="[item url]" 
+              tal:attributes="href item/url;" 
+              tal:content="python:item['title'].split(':')[-1]" 
+              >[Title of start-here item]
+          </a><tal:separator condition="not:repeat/item/end"> |</tal:separator>
+      </dd>
+      <dd tal:condition="not:section/subtopics" class="discreet">
+          <a href="[section-url]" tal:attributes="href section/url">General</a>
+      </dd>
+    </dl>
+
+    <div class="visualClear"></div>
+
+    <dl class="portlet" tal:condition="nothing">
+      <dt class="portletHeader">Getting Started</dt>
+      <dd class="portletItem">
+        <ul>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+        </ul>
+      </dd>
+      <dd class="portletFooter">All End User Documentation</dd>
+    </dl>
+
+    <div class="visualClear"></div>
+
+</div>
+</body>
+</html>    

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_print.css.dtml
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_print.css.dtml	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_print.css.dtml	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,10 @@
+/* <dtml-with base_properties> */
+
+/* Hide screen navigation artifacts */
+
+.link-parent, .link-expand, .jumpBox, .listingBar,
+.sectionIndex, .link-anchor {
+    display: none;
+}
+
+/* </dtml-with> */
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_references.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_references.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_references.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,26 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  i18n:domain="plonehelpcenter">
+
+<body>    
+    <metal:define define-macro="view_referenced_items">
+        <tal:define define="objs here/getRelatedItems;"
+                    condition="objs">    
+            <h3 i18n:translate="see_also">see also:</h3>
+            <dl>
+              <tal:repeat tal:repeat="obj objs">
+                    <dt>
+                      <img tal:attributes="src obj/getIcon" />
+                      <a href="#"
+                         tal:attributes="href obj/absolute_url;"
+                         tal:content="python:obj.Title() or obj.absolute_url(relative=1)">
+                        Target Title
+                      </a>
+                    </dt>
+                    <dd tal:content="obj/Description"></dd>
+              </tal:repeat>
+            </dl>
+        </tal:define>
+    </metal:define>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,47 @@
+<html metal:use-macro="context/main_template/macros/master">
+<head>
+  <metal:block fill-slot="column_one_slot" />
+</head>
+<body>
+   
+  <div metal:fill-slot="main" tal:define="view context/@@hc_view; sections view/getTopics">
+
+    <ul class="quickLinks">
+        <li><img tal:replace="structure here/faq_icon.gif" /><a href="faq">FAQ</a></li>
+        <li><img tal:replace="structure here/link_icon.gif" /><a href="link">Links</a></li>
+        <li><img tal:replace="structure here/error_icon.gif" /><a href="error">Error Reference</a></li>
+        <li><img tal:replace="structure here/glossary_icon.gif" /><a href="glossary">Glossary</a></li>
+        <li><img tal:replace="structure here/book_icon.gif" /><a href="manual">Manuals</a></li>
+    </ul>
+
+
+    <dl class="topicList"
+        tal:repeat="section sections">
+      <dt ><a href="[section-url]" tal:attributes="href section/url" tal:content="section/title">[Section Name]</a></dt>
+      <dd tal:repeat="item section/subtopics">
+          <a href="[item url]" 
+              tal:attributes="href item/url;" 
+              tal:content="python:item['title'].split(':')[-1]" 
+              >[Title of start-here item]
+          </a><tal:separator condition="not:repeat/item/end">,</tal:separator>
+      </dd>
+    </dl>
+
+    <div class="visualClear"></div>
+
+    <dl class="portlet" tal:condition="nothing">
+      <dt class="portletHeader">Getting Started</dt>
+      <dd class="portletItem">
+        <ul>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+        </ul>
+      </dd>
+      <dd class="portletFooter">All End User Documentation</dd>
+    </dl>
+
+    <div class="visualClear"></div>
+
+</div>
+</body>
+</html>    

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview.pt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,2 @@
+[default]
+title= View by topic (compact))

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,64 @@
+<html metal:use-macro="context/main_template/macros/master">
+<head>
+</head>
+<body>
+
+  <div metal:fill-slot="main" tal:define="view context/@@hc_view; sections view/getTopics">
+
+    <h1 tal:content="context/Title">Documentation</h1>
+
+    <p class="documentDescription" tal:content="context/Description">Our descrip area...</p>
+
+    <div class="flatlist">
+        <ul>
+            <li><a href="faq">Frequently Asked Questions</a></li>
+            <li><a href="error">Error Reference</a></li>
+            <li><a href="glossary">Glossary</a></li>
+            <li><a href="link">Links</a></li>
+            <li><a href="manual">Manuals</a></li>
+        </ul>
+    </div>
+
+    <dl class="portlet" tal:condition="nothing">
+      <dt class="portletHeader">Getting Started</dt>
+      <dd class="portletItem">
+        <ul>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+          <li><a href="/hardcoded">Stuff in "End User" doc section</a></li>
+        </ul>
+      </dd>
+      <dd class="portletFooter">All End User Documentation</dd>
+    </dl>
+
+    <h2>Quick Links: Find documentation by topic</h2>
+
+    <div class="quicklinks" tal:define="length python: len(sections); splitat python: int(modules['math'].ceil(length/2.0)); left python: sections[:splitat]; right python: sections[splitat:]">
+      <ul style="float: left; width: 45%">
+          <li tal:repeat="section left"><a tal:attributes="href section/url" tal:content="section/title">[Section Name]</a></li>
+      </ul>
+      <ul>
+         <li tal:repeat="section right"><a tal:attributes="href section/url" tal:content="section/title">[Section Name]</a></li>
+      </ul>
+      <div style="clear: both"></div>
+    </div>
+
+    <div tal:repeat="section sections">
+      <h2 class="section-subheading"><a href="[section-url]" tal:attributes="href section/url" tal:content="section/title">[Section Name]</a></h2>
+      <ul tal:condition="section/subtopics">
+        <li tal:repeat="item section/subtopics">
+          <a href="[item url]" 
+              tal:attributes="href item/url;" 
+              tal:content="item/title" 
+              >[Title of start-here item]
+          </a>
+        </li>
+      </ul> 
+      <div class="readmore">
+        <a href="[section-url]" tal:attributes="href section/url"> Read More&hellip;</a>
+      </div>
+    </div>
+  </div>
+        
+</body>
+
+</html>    

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_topicview_main.pt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,2 @@
+[default]
+title= View by topic

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,174 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+      
+<head>
+    <metal:css fill-slot="css_slot">
+    <style type="text/css" media="all"
+           tal:content="string: @import url(${portal_url}/helpcenter.css);"></style>
+    </metal:css>
+
+</head>
+<body>
+
+<metal:main fill-slot="main">
+    <tal:main-macro metal:define-macro="main" tal:define="view context/@@hc_view;">
+                    
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+        
+        <h1 tal:content="here/title_or_id" class="documentFirstHeading">
+          Title or id
+        </h1>
+
+        <form name="searchform"
+              action="phc_search"
+              tal:attributes="action string:${here/absolute_url}/phc_search">
+               
+            <fieldset style="float: right;">
+                
+                <legend i18n:translate="phc_doc_search">Documentation search</legend>
+                
+                <label for="searchGadget"
+                       class="hiddenStructure"
+                       i18n:domain="plone"
+                       i18n:translate="text_search">
+                    Search Documentation
+                </label>
+                <input name="SearchableText"
+                       type="text"
+                       size="20"
+                       value=""
+                       alt="Search Documentation"
+                       title="Search Documentation"
+                       style="margin-bottom: 0.5em;"
+                       accesskey="accesskeys-search"
+                       i18n:attributes="alt; accesskey; title"
+                       tal:attributes="value request/SearchableText|nothing;
+                                       tabindex tabindex/next" 
+                />
+
+                <input class="searchButton"
+                       name="Search"
+                       type="submit"
+                       value="Search"
+                       accesskey="accesskeys-search"
+                       tal:attributes="tabindex tabindex/next"
+                       i18n:attributes="value; accesskey" />
+                       
+                <br />
+                
+                <span i18n:translate="searchform_in" tal:omit-tag="">in</span>
+                
+                  <select name="phc_selection">
+                    <option value="all" i18n:translate="phc_full_area" tal:condition="here/constrainSearches | nothing">Entire documentation area</option>
+                    <option value="all" i18n:translate="phc_all_docs" tal:condition="not:here/constrainSearches | nothing">All documentation</option>
+                    <option value="faq" i18n:translate="phc_faq">FAQs</option>
+                    <option value="howto" i18n:translate="phc_howto">How-tos</option>
+                    <option value="tutorial" i18n:translate="phc_tutorial">Tutorials</option>
+                    <option value="link" i18n:translate="phc_links">Links</option>
+                    <option value="error" i18n:translate="phc_errorreference">Error references</option>
+                    <option value="glossary" i18n:translate="phc_definition">Glossary definitions</option>
+                    <option value="manual" i18n:translate="phc_referencemanual">Reference manuals</option>
+                </select>
+            </fieldset>
+        </form>
+
+        <div class="documentDescription"
+             tal:content="here/Description">
+            description
+        </div>
+    
+        <p>
+          <img tal:replace="structure here/rss.gif" />
+          <a tal:attributes="href view/getSyndicationURL" 
+             i18n:translate="phc_rss_all">
+            Feed for all documentation.
+          </a>
+        </p>
+
+        <p tal:condition="exists:here/how-to/use-help-center">
+          <img tal:replace="structure here/helpcenter_icon.gif" />
+          <a tal:attributes="href string:${here_url}/how-to/use-help-center"
+             i18n:translate="phc_contrib_use">
+            Instructions on how to contribute to and use this resource.
+          </a>
+        </p>
+
+        <div class="visualClear"><!----></div>
+        
+        <tal:defs define="sections view/sections">
+
+          <tal:listings repeat="section sections">
+            <div tal:define="objs python:view.sectionContents(section, limit=5);">
+
+              <dl class="portlet portletThirdWidth">
+                <dt class="portletHeader">
+                  <a tal:attributes="href section/getURL;
+                                     title section/Description|nothing;">
+                  <span i18n:translate="latest_helptype">
+                    Latest <span i18n:name="title" tal:content="section/Title">Section title</span>
+                  </span>
+                </a>
+                </dt>
+
+                <tal:list repeat="obj python:objs[:5]">
+                  <dd class="portletItem"
+                      tal:define="oddrow repeat/obj/odd"
+                      tal:attributes="class python:test(oddrow, 'portletItem even', 'portletItem odd')">
+                    <a href="#" 
+                       tal:attributes="href obj/getURL" >
+                        <img src="" alt="" tal:attributes="src obj/getIcon" />
+                        <span tal:replace="obj/Title">Title</span>
+                        <span class="portletItemDetails"
+                              tal:content="python:toLocalizedTime(obj.modified)">May 5</span>
+                    </a>
+                  </dd>
+                </tal:list>
+
+                <dd class="portletFooter">
+                    <a tal:attributes="href section/getURL">
+                      <span i18n:translate="all_helptype" tal:condition="python:len(objs) > 0">
+                        All <span tal:content="python:len(objs)"
+                                  i18n:name="number" /> 
+                        <span i18n:name="title" tal:content="string:${section/Title}">
+                            Title of section
+                        </span>&hellip;
+                      </span>
+                      <span i18n:translate="nopublished_helptype" tal:condition="python:len(objs) == 0">
+                        Nothing published in
+                        <span i18n:name="title" tal:content="string:${section/Title}">
+                            Title of section
+                        </span>&hellip;
+                      </span>
+                    </a>
+                </dd>
+              </dl>
+            </div>
+
+            <div class="visualClear" tal:condition="python: repeat['section'].number() % 3 == 0"><!----></div>
+          </tal:listings>
+        
+            <tal:nolist tal:condition="python: not sections">
+              <p class="discreet" i18n:translate="phc_nolist">
+                There are no contained help center object types.
+              </p>
+            </tal:nolist>
+        
+        </tal:defs>
+
+        <div class="visualClear"><!----></div>
+        
+        <tal:otherItems tal:define="folderContents view/getNonPHCContents | nothing"
+                        tal:condition="folderContents">
+          <metal:include use-macro="here/folder_listing/macros/listing"/>
+        </tal:otherItems>    
+      
+        </tal:main-macro>
+
+    </metal:main>
+
+  </body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helpcenter_view.pt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,2 @@
+[default]
+title= View by doc type

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplink_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplink_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplink_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,59 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+<body>
+
+<div metal:fill-slot="main">
+
+  <div metal:define-macro="main">
+      
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+    
+        <h1 class="documentFirstHeading">
+            <img tal:replace="structure here/helplink_icon.gif" />
+            <span tal:replace="here/title_or_id">Title or id</span>
+        </h1>
+    
+        <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+        <p class="discreet">
+           <span tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+           <span i18n:translate="phc_link_applies_to">This Link applies to:</span>         
+           <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+           <span tal:condition="not: versions" i18n:translate="phc_any_version">Any version.</span>
+        </span>
+        </p>   
+    
+        <div class="documentDescription"
+             tal:content="here/Description">
+            description
+        </div>
+  
+        <p>
+	<b>
+	<span i18n:translate="phc_link">
+	Link:
+	</span>
+	</b>
+        <a href="" tal:attributes="href here/url" tal:content="here/url">url</a>
+        </p>
+    
+    
+    
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>    
+
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplinkfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplinkfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/helplinkfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+<metal:folderView use-macro="here/phc_genericfolder_view/macros/master">
+    <img metal:fill-slot="item_icon" 
+        tal:replace="structure here/helplink_icon.gif"/>
+</metal:folderView>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howto_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howto_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howto_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,102 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+<body>
+
+<div metal:fill-slot="main">
+
+    <div metal:define-macro="main"
+         tal:define="len_text python:len(here.body);">
+      
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+    
+        <h1 class="documentFirstHeading">
+            <img tal:replace="structure here/howto_icon.gif" />
+            <span tal:replace="here/title_or_id">Title or id</span>
+        </h1>
+        
+        <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+        <p class="discreet">
+           <span tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+         <span i18n:translate="phc_howto_applies_to">This How-to applies to:</span>         
+          <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+          <span tal:condition="not: versions">
+           <span i18n:translate="phc_any_version">
+           Any version.
+           </span>
+          </span>
+       </span>
+       
+       <span tal:condition="here/getAudiencesVocab" tal:define="audiences here/Audiences">
+          <br/>
+         <span i18n:translate="phc_howto_audiences">This How-to is intended for:</span>         
+          <span tal:condition="audiences" tal:replace="audiences">1.0, 2.0</span>
+          <span tal:condition="not: audiences">
+           <span i18n:translate="phc_any_audience">
+           Any audience.
+           </span>
+          </span>
+         </span>
+       </p>
+    
+        <div class="documentDescription"
+             tal:content="here/Description">
+            description
+        </div>
+  
+        <p tal:condition="not: len_text"
+           i18n:domain="plone"
+           i18n:translate="no_body_text">
+            This item does not have any body text, click the edit tab to change it.
+        </p>
+    
+        <div id="bodyContent">
+            <div tal:replace="structure python:here.getBody()" />
+        </div>
+        
+        <tal:block define="items python:here.getFolderContents(contentFilter={'portal_type' : ('File', 'ATFile')})">
+           <fieldset tal:condition="nocall:items">
+               <legend>Attached files</legend>
+               <ul class="visualNoMarker">
+               <tal:related tal:repeat="item items">
+                   <li tal:define="
+                           desc      item/Description;
+                           item_type item/portal_type;
+                           item_type_class python: 'contenttype-' + putils.normalizeString(item_type);
+                           item_wf_state       item/review_state|python: getInfoFor(item, 'review_state', '');
+                           item_wf_state_class python: 'state-' + putils.normalizeString(item_wf_state);
+   		                item_url           item/getURL;">
+                       <span tal:attributes="class item_type_class">
+                       <a href="" class="visualIconPadding"
+                           tal:attributes="href  item_url;
+                                           title desc;"
+                           tal:content="item/pretty_title_or_id">
+                           Related Item
+                       </a>
+                       </span>
+                   </li>
+               </tal:related>
+               </ul>
+           </fieldset>
+      </tal:block>
+                    
+    
+    
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>    
+
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howtofolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howtofolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/howtofolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+<metal:folderView use-macro="here/phcfolder_view/macros/master">
+    <img metal:fill-slot="item_icon" 
+        tal:replace="structure here/howto_icon.gif"/>
+</metal:folderView>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideo_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideo_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideo_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,96 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+  <head>
+    <metal:override fill-slot="column_one_slot" />
+  </head>
+
+  <body>
+
+    <div metal:fill-slot="main">
+
+      <div metal:define-macro="main">
+	
+	<div metal:use-macro="here/document_actions/macros/document_actions">
+	  Document actions (print, sendto etc)
+	</div>
+	
+	<h1 class="documentFirstHeading">
+	  <img tal:replace="structure here/howto_icon.gif" />
+	  <span tal:replace="here/title_or_id">Title or id</span>
+	</h1>
+	
+	<div class="documentDescription"
+	     tal:content="here/Description">
+	  description
+	</div>
+	
+	<object id="flashMovie" 
+		style="margin: auto; display:block;"
+		codeBase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" 
+		height="600" 
+		width="800"
+		classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" 
+		VIEWASTEXT=""
+		tal:define="physical_path python:'/'.join(here.getPhysicalPath())"
+		tal:attributes="width here/width; height here/height">
+
+	  <param name="_cx"                value="26" />
+	  <param name="_cy"                value="26" />
+	  <param name="FlashVars"          value="" />
+	  <param name="Movie"              value=""
+		 tal:attributes="value here/Title" />   
+	  <param name="Src"                value=""
+		 tal:attributes="value string:${physical_path}/video_file" />
+	  <param name="WMode"              value="Window" />
+	  <param name="Loop"               value="false" />
+	  <param name="Quality"            value="high" />
+	  <param name="SAlign"             value="" />
+	  <param name="Menu"               value="-1" />
+	  <param name="Base"               value="" />
+	  <param name="AllowScriptAccess"  value="always" />
+	  <param name="Scale"              value="ShowAll" />
+	  <param name="DeviceFont"         value="0" />
+	  <param name="EmbedMovie"         value="0" />
+	  <param name="BGColor"            value="#FFFFFF" />
+	  <param name="SWRemote"           value="" />
+	  <param name="MovieData"          value="" />
+	  <param name="SeamlessTabbing"    value="1" />
+	  
+	  <embed src         ="" 
+		 quality     ="high" 
+		 bgcolor     ="#FFFFFF" 
+		 width       ="800" 
+		 height      ="600" 
+		 type        ="application/x-shockwave-flash" 
+		 pluginspace ="http://www.macromedia.com/go/getflashplayer"
+		 tal:attributes="src string:${physical_path}/video_file; width here/width; height here/height">
+	  </embed>
+	</object>
+
+	<p tal:condition="here/getVersionsVocab" tal:define="versions here/Versions" class="discreet" style="text-align: center">
+	  <span i18n:translate="phc_video_applies_to">This Video applies to:</span>         
+	  <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+	  <span tal:condition="not: versions">
+	    <span i18n:translate="phc_any_version">
+	      Any version.
+	    </span>
+	  </span>
+	</p>
+
+
+	<div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+	  see also - shows the references if this feature is switched on
+	</div>
+	<div metal:use-macro="here/document_byline/macros/byline">
+	  Get the byline - contains details about author and modification date.
+	</div>    
+
+      </div>
+
+    </div>
+
+  </body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideofolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideofolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/ivideofolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,76 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+  <body>
+    <div metal:fill-slot="main"
+         tal:define="view here/@@hcf_view;
+                     global getInfoFor nocall:here/portal_workflow/getInfoFor">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Folder Title
+    </h1>
+
+    <div class="documentDescription"
+         tal:content="here/Description">
+      Description.
+    </div>
+
+    <div tal:repeat="section view/getSectionsToList">
+
+        <h2 tal:content="section">Section Heading</h2>
+
+        <dl>
+            <tal:video tal:repeat="video python:view.getItemsBySection(section=section)">
+            <dt>
+                <div style="float:right; text-align: center; margin: 1em 0 1em 1em;"
+                     tal:condition="video/screenshot_thumb | nothing">
+                    <a class="discreet"
+                       tal:attributes="href string:${video/absolute_url}/screenshot/image_view_fullscreen">
+                        <img tal:replace="structure video/screenshot_thumb" />
+                        <br />
+                        <img tal:replace="structure here/search_icon.gif" />
+                        <span i18n:translate="label_click_to_enlarge">
+                            Click to enlarge
+                        </span>
+                    </a>
+                </div>
+                <img tal:replace="structure here/movie_icon.gif" />
+                <a href="" tal:content="video/Title"
+                   tal:attributes="href video/getURL;
+                                   class string:state-${video/review_state}">Video</a>
+                <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                     tal:condition="video/isOutdated"
+                     title="This video applies to a previous version" 
+                     i18n:attributes="title"/>
+            </dt>
+            
+            <dd tal:content="video/Description">Description</dd>
+            <div class="discreet" tal:define="getObjSize nocall:portal/getObjSize">
+                <strong i18n:translate="">Duration:</strong>
+                <span tal:content="video/duration" tal:condition="video/duration | nothing">
+                      Duration
+                </span> <span i18n:translate="" tal:omit-tag="">minutes</span>
+                <br />
+                <strong i18n:translate="">Size:</strong>
+                <span tal:content="python:getObjSize(video)" tal:condition="video/video_file | nothing">
+                      Size
+                </span>
+            </div>
+          </tal:video>
+        </dl>
+
+    </div>
+
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+    </div>
+  </body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,109 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<metal:block metal:fill-slot="head_slot">
+    <link rel="alternate" title="RSS 1.0" type="application/rss+xml"
+          tal:condition="request/SearchableText|nothing"
+          tal:attributes="href string:$here_url/search_rss?${request/QUERY_STRING}"/>
+</metal:block>
+
+<metal:block fill-slot="top_slot"
+             tal:define="dummy python:request.set('disable_border',1)" />
+
+<div metal:fill-slot="main"
+     tal:define="view context/@@hc_view;
+                 use_types_blacklist request/use_types_blacklist | python:True;
+                 dummy python:request.set('portal_type',view.searchTypes());
+                 dummy python:request.set('path', test(getattr(here,'constrainSearches', True), here.getPHCPath(), '/'.join(portal.getPhysicalPath())));
+                 results python:here.queryCatalog(REQUEST=request,use_types_blacklist=use_types_blacklist);
+                 Batch python:modules['Products.CMFPlone'].Batch;
+                 b_size python:30;b_start python:0;b_start request/b_start | b_start;
+                 desc_length site_properties/search_results_description_length;
+                 desc_ellipsis site_properties/ellipsis;
+                 searchterm request/SearchableText|nothing;
+                 use_view_action site_properties/typesUseViewActionInListings|python:();">
+
+    <h1 i18n:translate="heading_search_results">Search results</h1>
+
+    <div tal:condition="not: results">
+        <p><strong i18n:translate="description_no_results_found">No results were found.</strong></p>
+    </div>
+
+    <div tal:condition="results"
+          tal:define="batch python:Batch(results, b_size, int(b_start), orphan=1);">
+
+        <strong i18n:translate="batch_x_items_matching_your_criteria">
+            <span i18n:name="number" tal:omit-tag="" tal:content="python:len(results)">234</span> items matching your criteria.
+        </strong>
+
+        <p i18n:domain="plonehelpcenter"
+           i18n:translate="phc_search_results_advanced">
+            Did you not find what you were looking for? <a href="phc_asearch_form">Try again.</a> Or, use the
+            <span i18n:name="advanced_search">
+            <a href=""
+               i18n:translate="search_results_advanced_link"
+               tal:attributes="href string:$portal_url/search_form">Advanced Search</a>
+            </span>
+            for more precise search options or to search other kinds of documents.
+        </p>
+
+
+        <tal:syndicate condition="syntool/isSiteSyndicationAllowed">
+        <a href="" tal:attributes="href string:$here_url/search_rss?${request/QUERY_STRING}">
+        <img i18n:attributes="title title_rss_feed; alt label_rss_feed;"
+             tal:attributes="src string:$portal_url/rss.gif"
+             src="rss.gif"
+             alt="RSS Feed"
+             title="RSS feed of these search results" />
+        </a>
+        </tal:syndicate>
+
+        <!-- Search results -->
+
+        <dl>
+        <tal:results repeat="result batch">
+        <tal:entry define="result_url result/getURL;
+                           result_type result/portal_type;
+                           url python:'%s?searchterm=%s'%(test(result_type in use_view_action, result_url+'/view', result_url+'/'), searchterm);">
+            <dt tal:define="item_wf_state result/review_state;
+                            item_wf_state_class python:'state-' + normalizeString(item_wf_state);">
+                <a href="#" 
+                 tal:attributes="href url; class string:$item_wf_state_class"
+                 tal:content="result/pretty_title_or_id" />
+               <span class="discreet" 
+                     title="Relevance"
+                     tal:condition="result/data_record_normalized_score_"
+                     i18n:translate="label_relevance_percentage"
+                     i18n:attributes="title title_relevance;">
+                    [<span tal:content="result/data_record_normalized_score_"
+                           tal:omit-tag=""
+                           i18n:name="percentage">23%</span>%]
+               </span>
+
+            </dt>
+            
+            <dd>
+                <div class="discreet">
+                  <span tal:content="result/Type" />
+                  <span tal:condition="result/getAudiences | nothing">for <span tal:replace="python:', '.join(result.getAudiences)" /></span><span tal:condition="result/getVersions | nothing">; Versions: <span tal:replace="python:', '.join(result.getVersions)" /></span>
+                </div>
+                <div tal:content="python:here.cropText(result.Description, desc_length, desc_ellipsis)"> Description </div>
+            </dd>
+
+        </tal:entry>
+        </tal:results>
+        </dl>
+         
+        <!-- Navigation -->
+        <div metal:use-macro="here/batch_macros/macros/navigation" />
+
+    </div>
+</div>
+
+<div metal:fill-slot="column_two_slot" id="portal-column-two" style="display:none" />
+
+
+</html>
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch_form.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch_form.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_asearch_form.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,262 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plone">
+
+<metal:head fill-slot="top_slot"
+            tal:define="dummy python:request.set('disable_border',1)" />
+
+<div metal:fill-slot="main" tal:define="view context/@@hc_view;">
+
+    <h1 i18n:translate="heading_documentation_search">Search for documentation</h1>
+
+    <p i18n:translate="description_documentation_asearch">
+    This search form enables you to find documenation by
+    specifying one or more search terms.
+    </p>
+
+  	<form action="phc_asearch"
+          method="get"
+          name="search"
+          tal:define="DateTime python:modules['DateTime'].DateTime">
+
+        <fieldset>
+
+            <legend i18n:translate="legend_search_terms">Search Terms</legend>
+
+            <div class="field">
+                <label for="SearchableText" i18n:translate="label_search_text">Search Text</label>
+
+                <div class="formHelp" i18n:translate="help_search_text">
+                For a simple text search, enter your search term
+                here. Multiple words may be found by combining
+                them with <strong>AND</strong> and <strong>OR</strong>.
+                The text in this field will be matched with
+                items' contents, title and description.
+                </div>
+
+                <input type="text"
+                       id="SearchableText"
+                       name="SearchableText"
+                       size="25"
+                       tabindex=""
+                       tal:attributes="tabindex tabindex/next;"
+                       />
+            </div>
+
+            <div class="field">
+                <label i18n:translate="label_item_topic">Topic</label>
+
+                <div class="formHelp" i18n:translate="help_search_item_topic">
+                Return only documents matching at least one of the selected topics. Select no topics for widest search.
+                </div>
+
+                <span class="optionsToggle" tal:define="tabindex tabindex/next" tal:condition="nothing">
+                    <input type="checkbox"
+                           onclick="javascript:toggleSelect(this, 'getSections:list', true);"
+                           name="pt_toggle"
+                           value="#"
+                           id="t_toggle"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="tabindex tabindex;"/>
+                    <label for="t_toggle"
+                           i18n:translate="label_toggle"
+                           >Select All/None
+                    </label>
+                </span>
+
+                <div style="float:left; margin-right: 2em;"
+                     tal:define="allTypes view/getMajorTopics;
+                             typeLists python:here.createMultiColumnList(allTypes, numCols=2, sort_on='self');"
+                     tal:repeat="sublist typeLists">
+                    <tal:items repeat="type sublist">
+                    <tal:tabindex define="tabindex tabindex/next">
+                    <input type="checkbox"
+                           name="getSections:list"
+                           value="#"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="value type;
+                                           tabindex tabindex;
+                                           id string:portal_type_${repeat/sublist/number}_${repeat/type/number}"/>
+                    <label for=""
+                           i18n:translate=""
+                           tal:attributes="for string:portal_type_${repeat/sublist/number}_${repeat/type/number}"
+                           tal:content="type"
+                           />
+                    <br />
+                    </tal:tabindex>
+                    </tal:items>
+                </div>
+            </div>
+
+            <div class="visualClear" id="clear-space-before-version"><!-- --></div>
+            <br />
+
+            <div class="field">
+                <label i18n:translate="label_item_version">Version</label>
+
+                <div class="formHelp" i18n:translate="help_search_item_version">
+                Return only documents matching at least one of the selected versions. Select no versions for widest search.
+                </div>
+
+                <span class="optionsToggle" tal:define="tabindex tabindex/next" tal:condition="nothing">
+                    <input type="checkbox"
+                           onclick="javascript:toggleSelect(this, 'getVersions:list', true);"
+                           name="v_toggle"
+                           value="#"
+                           id="v_toggle"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="tabindex tabindex;"/>
+                    <label for="v_toggle"
+                           i18n:translate="label_toggle"
+                           >Select All/None
+                    </label>
+                </span>
+
+                <div style="float:left; margin-right: 2em;"
+                     tal:define="allTypes here/getVersionsVocab;
+                             typeLists python:here.createMultiColumnList(list(allTypes), numCols=2, sort_on='self');"
+                     tal:repeat="sublist typeLists">
+                    <tal:items repeat="type sublist">
+                    <tal:tabindex define="tabindex tabindex/next">
+                    <input type="checkbox"
+                           name="getVersions:list"
+                           value="#"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="value type;
+                                           tabindex tabindex;
+                                           id string:portal_type_${repeat/sublist/number}_${repeat/type/number}"/>
+                    <label for=""
+                           i18n:translate=""
+                           tal:attributes="for string:portal_type_${repeat/sublist/number}_${repeat/type/number}"
+                           tal:content="type"
+                           />
+                    <br />
+                    </tal:tabindex>
+                    </tal:items>
+                </div>
+            </div>
+
+            <div class="visualClear" id="clear-space-before-audience"><!-- --></div>
+            <br />
+
+            <div class="field">
+                <label i18n:translate="label_item_version">Audience</label>
+
+                <div class="formHelp" i18n:translate="help_search_item_version">
+                Return only documents for at least one of the selected audiences. Select no audiences for widest search.
+                </div>
+
+                <span class="optionsToggle" tal:define="tabindex tabindex/next" tal:condition="nothing">
+                    <input type="checkbox"
+                           onclick="javascript:toggleSelect(this, 'getAudiences:list', true);"
+                           name="a_toggle"
+                           value="#"
+                           id="a_toggle"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="tabindex tabindex;"/>
+                    <label for="a_toggle"
+                           i18n:translate="label_toggle"
+                           >Select All/None
+                    </label>
+                </span>
+
+                <div style="float:left; margin-right: 2em;"
+                     tal:define="allTypes here/getAudiencesVocab;
+                             typeLists python:here.createMultiColumnList(list(allTypes), numCols=2, sort_on='self');"
+                     tal:repeat="sublist typeLists">
+                    <tal:items repeat="type sublist">
+                    <tal:tabindex define="tabindex tabindex/next">
+                    <input type="checkbox"
+                           name="getAudiences:list"
+                           value="#"
+                           class="noborder"
+                           tabindex=""
+                           tal:attributes="value type;
+                                           tabindex tabindex;
+                                           id string:portal_type_${repeat/sublist/number}_${repeat/type/number}"/>
+                    <label for=""
+                           i18n:translate=""
+                           tal:attributes="for string:portal_type_${repeat/sublist/number}_${repeat/type/number}"
+                           tal:content="type"
+                           />
+                    <br />
+                    </tal:tabindex>
+                    </tal:items>
+                </div>
+            </div>
+
+<tal:omit tal:condition="nothing">
+            <div class="visualClear" id="clear-space-before-phc_selection"><!-- --></div>
+            <br />
+
+            <div class="field">
+                <label i18n:translate="label_item_type">Item type</label>
+
+                <div class="formHelp" i18n:translate="help_search_item_type">
+                Return items of a specific type.
+                </div>
+    
+                <span class="optionsToggle" tal:define="tabindex tabindex/next" tal:condition="nothing">
+                    <input type="checkbox"
+                           onclick="javascript:toggleSelect(this, 'phc_selection:list', true);"
+                           name="pt_toggle"
+                           value="#"
+                           id="pt_toggle"
+                           class="noborder"
+                           tabindex=""
+                           checked="checked"
+                           tal:attributes="tabindex tabindex;"/>
+                    <label for="pt_toggle"
+                           i18n:translate="label_toggle"
+                           >Select All/None
+                    </label>
+                </span>
+
+                <div style="float:left; margin-right: 2em;">
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="faq" id="pt_faq" i18n:translate="phc_faq" />
+                    <label for="pt_faq">FAQs</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="howto" id="pt_howto" i18n:translate="phc_howto" />
+                    <label for="pt_howto">How-tos</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="tutorial" id="pt_tutorial" i18n:translate="phc_tutorial" />
+                    <label for="pt_tutorial">Tutorials</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="link" id="pt_link" i18n:translate="phc_links" />
+                    <label for="pt_link">Links</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="error" id="pt_error" i18n:translate="phc_errorreference" />
+                    <label for="pt_error">Error references</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="glossary" id="pt_glossary" i18n:translate="phc_definition" />
+                    <label for="pt_glossary">Glossary definitions</label><br />
+                    <input checked="checked" type="checkbox" name="phc_selection:list" value="manual" id="pt_manual" i18n:translate="phc_referencemanual" />
+                    <label for="pt_manual">Reference manuals</label>
+                </div>
+            </div>
+</tal:omit>
+
+            <div class="visualClear" id="clear-space-before-submit"><!-- --></div>
+
+            <div class="formControls">
+                <input class="context"
+                       tabindex=""
+                       type="submit"
+                       name="submit"
+                       value="Search"
+                       i18n:attributes="value label_search;"
+                       tal:attributes="tabindex tabindex/next;"
+                       />
+            </div>
+
+        </fieldset>
+
+    </form>
+
+</div>
+
+<div metal:fill-slot="column_two_slot" id="portal-column-two" style="display:none" />
+
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_attachments.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_attachments.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_attachments.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,320 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      i18n:domain="plonehelpcenter"
+      metal:use-macro="here/main_template/macros/master">
+
+  <head>
+      <metal:block fill-slot="top_slot">
+        <tal:insert tal:replace="nothing"
+              tal:define="dummy python:request.set('enable_border', 1)" />
+      </metal:block>
+  </head>
+
+  <body>
+
+    <div metal:fill-slot="main">
+      <tal:protect tal:condition="python: not checkPermission('List folder contents', here)" tal:replace="here/raiseUnauthorized" />
+    <metal:main-macro define-macro="main">
+    <metal:contentsmacro define-macro="contents"
+         tal:define="standalone python:1;
+                     contentTypes here/getAllowedTypes;
+                     contentFilter contentFilter|request/contentFilter|nothing;
+                     b_size b_size|request/b_size|python:100;
+                     view_title view_title|request/view_title|string:;
+                     contentsMethod python:test(here.portal_type=='Topic', here.queryCatalog, here.getFolderContents);
+                     batch batch|python:contentsMethod(contentFilter,batch=True, b_size=b_size);
+                     full_view full_view|request/full_view|python:True;">
+      
+      <form name="folderContentsForm"
+            method="post"
+            action="folder_object"
+            tal:attributes="action here_url">
+
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+        <h1>
+          <tal:block replace="structure python:getattr(here, here.getIcon(1))"/>
+          <span tal:content="python: view_title and here.utranslate(view_title) or putils.pretty_title_or_id(here)" tal:omit-tag="">Directory Id</span>
+        </h1>
+        <tal:full_view condition="full_view">
+    
+            <a href=""
+               class="link-parent"
+               tal:define="parent_url python:here.navigationParent(here, fallThroughDefaultPage = False, checkPermissions = ['List folder contents'])"
+               tal:condition="parent_url"
+               tal:attributes="href string:${parent_url}/folder_contents"
+               i18n:domain="plone"
+               i18n:translate="go_to_parent_url">
+                Up one level
+            </a>
+    
+            <p tal:content="here/Description">
+                Description
+            </p>
+        </tal:full_view>
+
+        <p class="discreet"
+           tal:condition="not: batch"
+           i18n:domain="plone"
+           i18n:translate="description_no_visible_items_add_paste">
+           This folder has no visible items. To add content, press the
+           add button, or paste content from another location.
+        </p>
+        <metal:override define-slot="override_slot">
+           <tal:comment replace="nothing">
+              Slot for overiding batching mechanism including batch size and
+              other parameters
+           </tal:comment>
+        </metal:override>
+        <metal:listing define-macro="folder_listing"
+                       tal:define="contentFilter contentFilter|python:{'path':'/'};
+                                   use_folder_contents site_properties/typesLinkToFolderContentsInFC|nothing;
+                                   use_view_action site_properties/typesUseViewActionInListings|python:();
+                                   query_path python:path('contentFilter/path|nothing') or request.get('path',None);
+                                   orderable_iface string:OFS.IOrderSupport.IOrderedContainer;
+                                   preSorted python:query_path or ((contentFilter and contentFilter.get('sort_on', 'getObjPositionInParent')!='getObjPositionInParent') or (not contentFilter and request.get('sort_on', 'getObjPositionInParent')!='getObjPositionInParent'));
+                                   isOrderable python:ifacetool.objectImplements(here, orderable_iface);
+                                   nosortclass python:test(isOrderable, 'nosort', '');
+                                   canModifyFolderContent is_editable;">
+          <div tal:condition="standalone|nothing">
+          <metal:add_button define-macro="add_button"
+                            tal:define="num_types python:len(contentTypes);">
+            <!-- Add Item pulldown -->
+            <div>
+                <label for="select_add_item">
+                    <span class="hiddenLabel"
+                          i18n:domain="plone"
+                          i18n:translate="label_add_item">
+                        Select an item to add
+                    </span>
+                </label>
+
+                <select id="select_add_item"
+                        name="type_name"
+                        tabindex=""
+                        tal:condition="python: num_types > 1"
+                        tal:attributes="tabindex tabindex/next|nothing">
+
+                    <option value="Select"
+                            i18n:domain="plone"
+                            i18n:translate="label_select">
+                        Select
+                    </option>
+                    <metal:types tal:repeat="ctype contentTypes">
+                        <option value="Document"
+                                tal:define="Id ctype/getId"
+                                tal:attributes="value ctype/getId"
+                                tal:content="ctype/Title"
+                                i18n:translate="">Document</option>
+                    </metal:types>
+                </select>
+
+                <input type="hidden"
+                       name="type_name"
+                       value="Content Type Id"
+                       tal:condition="python: num_types==1"
+                       tal:attributes="value python:contentTypes[0].getId()" />
+
+                <input class="standalone"
+                       type="submit"
+                       name="folder_factories:method"
+                       value="Add New Item"
+                       tabindex=""
+                       tal:define="ttype python: num_types==1 and here.utranslate(contentTypes[0].Title())"
+                       tal:condition="python: num_types"
+                       tal:attributes="tabindex tabindex/next|nothing;
+                                       value python:ttype and here.utranslate('Add ${type}', {'type': ttype}) or
+                                                              here.utranslate('label_add_new_item', default='Add New Item')" />
+            </div>
+          </metal:add_button>
+          </div>
+
+        <div class="visualClear"><!-- --></div>
+
+        <!-- Navigation -->
+        <div metal:use-macro="here/batch_macros/macros/navigation" />
+
+          <table id="sortable"
+                 class="listing"
+                 summary="Content listing"
+                 i18n:domain="plone"
+                 i18n:attributes="summary summary_content_listing;">
+            <thead>
+              <metal:block tal:condition="batch|not:standalone|nothing">
+                <tr i18n:domain="plone">
+                  <th class="nosort">
+                      <input class="noborder"
+                             type="checkbox"
+                             src="select_all_icon.gif"
+                             name="selectButton"
+                             title="Select all items"
+                             onClick="toggleSelect(this,'paths:list');"
+                             tal:attributes="src string:$portal_url/select_all_icon.gif"
+                             alt="Select all items"
+                             i18n:attributes="title label_select_all_items; alt label_select_all_items;"
+                  />
+                  </th>
+                  <th tal:attributes="class python:nosortclass"
+                      >&nbsp;<tal:title i18n:translate="listingheader_title"
+                      >Title</tal:title>&nbsp;</th>
+                  <metal:header_slot metal:define-slot="listingheader">
+                  <th tal:attributes="class python:nosortclass"
+                      >&nbsp;<tal:size i18n:translate="listingheader_size"
+                      >Size</tal:size>&nbsp;</th>
+                  <th tal:attributes="class python:nosortclass"
+                      >&nbsp;<tal:modified i18n:translate="listingheader_modified"
+                      >Modified</tal:modified>&nbsp;</th>
+                  <th tal:attributes="class python:nosortclass"
+                      >&nbsp;<tal:state i18n:translate="listingheader_status"
+                      >State</tal:state>&nbsp;</th>
+                  <th class="nosort"
+                      tal:condition="python:isOrderable and canModifyFolderContent and not preSorted"
+                      >&nbsp;<tal:order i18n:translate="listingheader_order"
+                      >Order</tal:order>&nbsp;</th>
+                  </metal:header_slot>
+                </tr>
+              </metal:block>
+            </thead>
+
+            <metal:block tal:condition="batch|not:standalone|nothing">
+            <tbody tal:define="arrowUp portal/arrowUp.gif;
+                               arrowDown portal/arrowDown.gif;
+                               getRelativeContentURL nocall:utool/getRelativeContentURL
+                               ">
+                <tal:items tal:repeat="item batch">
+                   <tr tal:define="oddrow               repeat/item/odd;
+                                   item_url             item/getURL|item/absolute_url;
+                                   item_id              item/getId;
+                                   item_path            item/getPath|python:'/'.join(item.getPhysicalPath());
+                                   item_title_or_id   item/pretty_title_or_id;
+                                   item_description     item/Description;
+                                   item_type            item/portal_type;
+                                   item_size            item/getObjSize;
+                                   item_modified        item/ModificationDate;
+                                   item_type_class      python:'contenttype-' + normalizeString(item_type);
+                                   item_wf_state        item/review_state|python: wtool.getInfoFor(item, 'review_state', '');
+                                   item_state_title     python:wtool.getTitleForStateOnType(item_wf_state, item_type);
+                                   item_wf_state_class  python:'state-' + normalizeString(item_wf_state);
+                                   item_use_view        python:item_type in use_view_action;
+                                   hasGetUrl            python:hasattr(item.aq_explicit, 'getURL');
+                                   item_rel_url         python:hasGetUrl and item.getURL(relative=1) or getRelativeContentURL(item);
+                                   browserDefaultResult here/browserDefault;
+                                   isBrowserDefault     python:len(browserDefaultResult[1]) == 1 and item.id == here.browserDefault()[1][0];
+                                   item_folderish item/is_folderish|item/isPrincipiaFolderish|nothing"
+                       tal:attributes="class python:test(oddrow, 'even', 'odd')" >
+
+                       <tal:comment replace="nothing">
+                            * We have to check if the browserDefault stuff is really necessary
+                            * Create title_or_id metadata in the catalog (why not just use item.Title or item.getId? (alecm))
+                       </tal:comment>
+
+                       <td>
+                           <input type="checkbox"
+                                  class="noborder"
+                                  name="paths:list" id="#"
+                                  value="#"
+                                  tal:attributes="value   item_path;
+                                                  id      string:cb_$item_id;
+                                                  checked python:test(request.get('ids_checked', False), 'checked', None);
+                                                  alt     string:Select $item_title_or_id;
+                                                  title   string:Select $item_title_or_id" />
+                      <input type="hidden" name="obj_paths:list" value="#"
+                             tal:attributes="value item_rel_url" />
+
+                    </td>
+                    <td tal:define="url python:test(item_use_view, item_url+'/view',
+                                    test(item_folderish, item_url+'/folder_contents', item_url+'/'));">
+                        <span tal:attributes="class item_type_class">
+                        <a href="#" tal:attributes="href  url;
+                                                  title string: $item_type: $item_description;
+                                                  class string:$item_wf_state_class visualIconPadding;">
+                            <strong tal:omit-tag="python:not isBrowserDefault">
+                            <span tal:content="item_title_or_id">
+                              Item Title
+                            </span>
+                            </strong>
+                        </a>
+                        </span>
+                        
+                        <span class="state-expired"
+                              tal:condition="python:portal.isExpired(item)"
+                              i18n:domain="plone"
+                              i18n:translate="time_expired">expired</span>
+                    </td>
+
+                    <metal:item_slot metal:define-slot="item_display">
+                    <td>
+                      <span tal:condition="not: item_size"> &nbsp; </span>
+                      <span tal:condition="python:item_size>0"
+                            tal:content="item_size"
+                            tal:attributes="class item_wf_state_class"> size </span>
+                    </td>
+                    <td tal:content="python:here.toLocalizedTime(item_modified, long_format=1)"
+                        tal:attributes="class item_wf_state_class">
+                        08/19/2001 03:01 AM
+                    </td>
+                    <td>
+                        <span i18n:translate=""
+                              tal:condition="item_state_title"
+                              tal:content="item_state_title"
+                              tal:attributes="class item_wf_state_class" />
+                        <span tal:condition="not: item_state_title">&nbsp;</span>
+                    </td>
+                    <td tal:define="pps python:modules['Products.PythonScripts.standard'];
+                                    quoted_item_id python:pps.url_quote(item_id)"
+                        tal:condition="python:isOrderable and canModifyFolderContent and not preSorted">
+                      <a href=""
+                         title="Move item up"
+                         i18n:domain="plone"
+                         i18n:attributes="title title_move_item_up;"
+                         tal:attributes="href string:$here_url/folder_position?position=up&amp;id=$quoted_item_id&amp;template_id=${template_id}">
+                         <img tal:replace="structure arrowUp" />
+                      </a>
+                      &nbsp;
+                      <a href=""
+                         title="Move item down"
+                         i18n:domain="plone"
+                         i18n:attributes="title title_move_item_down;"
+                         tal:attributes="href string:$here_url/folder_position?position=down&amp;id=$quoted_item_id&amp;template_id=${template_id}">
+                         <img tal:replace="structure arrowDown" />
+                      </a>
+                    </td>
+                    </metal:item_slot>
+                   </tr>
+                </tal:items>
+            </tbody>
+            </metal:block>
+            </table>
+            <!-- Navigation -->
+            <div metal:use-macro="here/batch_macros/macros/navigation" />
+        </metal:listing>
+
+        <metal:buttons define-macro="folder_buttons">
+        <input type="hidden" name="orig_template"
+               tal:attributes="value template_id"/>
+        <tal:buttons tal:repeat="button actions/folder_buttons|nothing"
+                     tal:define="contentFilter contentFilter|python:{'path':'/'};
+                                 query_path python:path('contentFilter/path|nothing') or request.get('path',None) or context.portal_type == 'Topic';">
+          <input class="context"
+                 type="submit"
+                 name=""
+                 value=""
+                 tabindex=""
+                 tal:condition="python:(batch or here.cb_dataValid and button['id'] == 'paste') and not ( query_path and button['id'] in ['cut','copy','paste'])"
+                 i18n:attributes="value"
+                 tal:attributes="value button/name;
+                                 name button/url;
+                                 tabindex tabindex/next;
+                                 class python:test((button['id'] == 'paste'), 'standalone', 'context')" />
+        </tal:buttons>
+        </metal:buttons>
+      </form>
+
+    </metal:contentsmacro>
+    </metal:main-macro>
+    </div>
+
+
+  </body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_genericfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_genericfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_genericfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,76 @@
+<metal:master define-macro="master">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+  <body>
+    <div metal:fill-slot="main"
+         tal:define="view here/@@hcf_view;
+                     sections view/getItemsBySections;
+                     noSections python:len(sections) == 1">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Folder Title
+    </h1>
+    
+    <table class="sectionIndex" tal:condition="not:noSections">
+        <thead>
+            <tr><th i18n:translate="phc_index_sections">Sections</th></tr>
+        </thead>
+        <tbody>
+            <tr tal:repeat="section sections">
+                <td><a tal:attributes="href python:'%s#%s'% (here.absolute_url(), section['id'],)"
+                       tal:content="section/section" i18n:translate="">Section</a>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+
+    <div class="documentDescription"
+         tal:content="here/Description">
+      Description.
+    </div>
+
+    <div tal:repeat="section sections">
+
+        <h2 tal:condition="not:noSections">
+          <a class="link-anchor" 
+              tal:content="section/section"
+	      i18n:translate=""
+              tal:attributes="name section/id;
+                              href string:${here/absolute_url}#${section/id};">
+              Section Heading
+            </a>
+        </h2>
+
+        <dl>
+            <tal:item tal:repeat="item python:section['items']">
+              
+            <dt>
+                <img metal:define-slot="item_icon"
+                     tal:replace="structure here/howto_icon.gif" />
+                <a href="" tal:content="item/Title"
+                   tal:attributes="href item/getURL;
+                                   class string:state-${item/review_state}">Item</a>
+                <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                     tal:condition="item/isOutdated"
+                     title="This item applies to a previous version" 
+                     i18n:attributes="title"/>
+            </dt>
+            
+            <dd tal:content="item/Description">Description</dd>
+          </tal:item>
+        </dl>
+
+    </div>
+
+    </div>
+  </body>
+
+</html>
+</metal:master>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,11 @@
+## Script (Python) ""
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters= 
+##title=
+
+return [(v.title, k) for k, v in context.portal_workflow['helpcenter_workflow'].states.items()]
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_getWorkflowStates.py.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+proxy=Manager
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_search.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_search.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_search.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,112 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+<metal:block fill-slot="top_slot"
+             tal:define="dummy python:request.set('disable_border',1)" />
+
+<div metal:fill-slot="main"
+       tal:define="view context/@@hc_view;
+                   wanted_types view/searchTypes;
+                   searchPath python:test(getattr(here,'constrainSearches',True), here.getPHCPath(), '/'.join(portal.getPhysicalPath()));
+                   results python:here.queryCatalog({
+                                'portal_type':wanted_types,
+                                'SearchableText':request.form.get('SearchableText',''),
+                                'path':searchPath,
+                    });
+                 Batch python:modules['Products.CMFPlone'].Batch;
+                 DateTime python:modules['DateTime'].DateTime;
+                 b_size python:30;b_start python:0;b_start request/b_start | b_start;
+                 desc_length site_properties/search_results_description_length;
+                 desc_ellipsis site_properties/ellipsis;
+                 searchterm request/SearchableText|nothing">
+
+    <h1 i18n:translate="heading_search_results"
+        i18n:domain="plone">
+        Search results
+    </h1>
+
+    <div tal:condition="not: results">
+        <p><strong i18n:domain="plone" i18n:translate="description_no_results_found">No results were found.</strong></p>
+    </div>
+
+    <p i18n:domain="plone"
+       i18n:translate="search_results_advanced">
+        Did you not find what you were looking for? Try the
+        <span i18n:name="advanced_search">
+        <a href=""
+           i18n:translate="search_results_advanced_link"
+           tal:attributes="href string:$portal_url/search_form">Advanced Search</a>
+        </span>
+        for more precise search options.
+    </p>
+
+    <div tal:condition="results"
+          tal:define="batch python:Batch(results, b_size, int(b_start), orphan=1);">
+
+        <strong>
+        <span i18n:domain="plone" i18n:translate="batch_x_items_matching_your_criteria"><span i18n:name="number" tal:content="python:len(results)">234</span> items matching your criteria.</span>
+        </strong>
+
+        <a href="" tal:attributes="href string:$here_url/search_rss?${request/QUERY_STRING}">
+        <img i18n:attributes="title alt"
+             tal:attributes="src string:$portal_url/rss.gif"
+             src="rss.gif"
+             alt="RSS Feed"
+             title="RSS feed of these search results" />
+        </a>
+
+        <!-- Search results -->
+
+        <dl>
+        <tal:results repeat="result batch">
+        <tal:entry define="result_url result/getURL;
+                           url string:$result_url/view?searchterm=${searchterm};">
+            <dt>
+        <a href="#"
+                tal:attributes="href url">
+                <img src="#"
+                     height="16"
+                     width="16"
+                     alt=""
+                     tal:on-error="structure python:path('here/linkOpaque.gif')"
+                     tal:replace="structure python:path('here/%s' % result.getIcon)" /></a>&nbsp;<a
+                href="#" tal:attributes="href url"
+                tal:content="python:result.Title or result.getId" />
+               <span class="discreet" 
+                     title="Relevance"
+                     tal:condition="result/data_record_normalized_score_"
+                     i18n:domain="plone"
+                     i18n:translate="label_relevance_percentage"
+                     i18n:attributes="title title_relevance;">
+                    [<span tal:replace="result/data_record_normalized_score_"
+                                      i18n:name="percentage">23%</span>%]
+               </span>
+
+                <span class="discreet"
+		      tal:condition="python: site_properties.allowAnonymousViewAbout or not isAnon"
+                      i18n:domain="plone"
+                      i18n:translate="results_by_author">
+                    by <span tal:replace="result/Creator" i18n:name="author">Author</span>,
+                    <span tal:replace="python:here.toLocalizedTime(result.ModificationDate, long_format=1)" i18n:name="date">Modification Date</span>
+                </span>
+
+            </dt>
+            
+            <dd tal:content="python:here.cropText(result.Description, desc_length, desc_ellipsis)"> Description </dd>
+
+        </tal:entry>
+        </tal:results>
+        </dl>
+         
+        <!-- Navigation -->
+        <div metal:use-macro="here/batch_macros/macros/navigation" />
+
+    </div>
+</div>
+
+<div metal:fill-slot="column_two_slot" id="portal-column-two" style="display:none" />
+
+</html>
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,564 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      i18n:domain="plonehelpcenter"
+      metal:use-macro="here/main_template/macros/master">
+
+<div metal:fill-slot="main" tal:define="view context/@@hc_view">
+
+    <h1 i18n:translate="">Help Center Statistics and Maintenance</h1>
+
+    <p i18n:translate="">
+      This form aids maintenance of help center content.
+    </p>
+
+    <h2 i18n:translate="">Find and modify content</h2>
+    
+    <p i18n:translate="">
+       Using the criteria below, you can find content and then modify it
+       from the search results page.
+    </p>
+
+    <form method="get"
+          name="search"
+          tal:attributes="action string:${here/absolute_url}/${template/getId}">
+          
+        <input type="hidden" name="form.submitted" value="1"/>
+
+        <input type="hidden" name="path" tal:attributes="value python:'/'.join(here.getPhysicalPath())" />
+        <input type="hidden" name="sort_on" value="modified"/>
+        <input type="hidden" name="sort_order" value="reverse"/>
+
+        <fieldset>
+
+            <legend i18n:translate="">Search for content</legend>
+
+            <div class="field">
+                <label for="SearchableText"
+                       i18n:domain="plone"
+                       i18n:translate="label_search_text">
+                    Search Text
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_text">
+                    For a simple text search, enter your search term here.
+                    Multiple words may be found by combining them with
+                    <strong>AND</strong> and <strong>OR</strong>. The text in
+                    this field will be matched with items' contents, title and
+                    description.
+                </div>
+
+                <input type="text"
+                       id="SearchableText"
+                       name="SearchableText"
+                       size="25"
+                       />
+            </div>
+
+            <div class="field">
+                <label for="Description"
+                       i18n:domain="plone"
+                       i18n:translate="label_description">
+                    Description
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_description">
+                    Return items matching this description. Multiple words may
+                    be found by combining them with <strong>AND</strong> and
+                    <strong>OR</strong>.
+                </div>
+    
+                <input type="text"
+                       id="Description"
+                       name="Description"
+                       size="25"
+                       />
+            </div>
+            
+            <div class="field"
+		 tal:condition="python: site_properties.allowAnonymousViewAbout or not isAnon">
+                <label for="Creator"
+                       i18n:domain="plone"
+                       i18n:translate="label_author">
+                    Author
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_author">
+                Return items created by a particular person.
+                </div>
+    
+                <tal:creators tal:define="creators python:portal.portal_catalog.uniqueValuesFor('Creator')">
+                    <select name="Creator"
+                            id="Creator"
+                            tal:condition="python: len(creators) &lt;= 30">
+                        <option value=""
+                                i18n:domain="plone"
+                                i18n:translate="label_any_author">
+                            Any Author
+                        </option>
+                        <metal:block tal:repeat="creator creators">
+                            <option value="" tal:attributes="value creator" tal:content="creator"> username </option>
+                        </metal:block>
+                    </select>
+    
+                    <input name="Creator"
+                           tal:condition="python: len(creators) &gt; 30 " />
+                </tal:creators>
+            </div>
+
+            <div class="field">
+                <label for="Subject"
+                       i18n:domain="plone"
+                       i18n:translate="label_keywords">
+                    Keywords
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_keywords">
+                    Return items matching some or all of these keywords.
+                    Multiple words may be found by pressing
+                    <strong>Ctrl</strong> (or <strong>Apple</strong> key on Mac)
+                    while clicking the keywords.
+                </div>
+
+                <select name="Subject:list"
+                        id="Subject"
+                        size="7"
+                        multiple="multiple"
+                        tal:define="contentSubjects here/Subject;
+                                    usedSubjects python:here.portal_catalog.uniqueValuesFor('Subject');"
+                        >
+                    <option value="#"
+                            tal:repeat="subject usedSubjects"
+                            tal:content="subject"
+                            tal:attributes="value subject"
+                            i18n:domain="plone-metadata"
+                            i18n:translate=""
+                            >dummy</option>
+                </select>
+                <br />
+
+                <input type="radio"
+                       name="Subject_usage:ignore_empty"
+                       id="Subject_or"
+                       value=""
+                       class="noborder"
+                       checked="checked"
+                     />
+                    <label for="Subject_or"
+                           i18n:domain="plone"
+                           i18n:translate="description_subject_or">
+                        Match any
+                    </label>
+                    <br />
+
+                <input type="radio"
+                        name="Subject_usage:ignore_empty"
+                        id="Subject_and"
+                        value="operator:and"
+                        class="noborder"
+                        />
+                <label for="Subject_and"
+                       i18n:domain="plone"
+                       i18n:translate="description_subject_and">
+                    Match all
+                </label>
+            </div>
+    
+            <div class="field" tal:define="sectionsVocab here/getSectionsVocab | nothing"
+                               tal:condition="sectionsVocab">
+                <label for="getSections" i18n:translate="label_sections">Sections</label>
+
+                <div class="formHelp" i18n:translate="help_search_sections">
+                Return items in some or all of these sections.
+                Multiple words may be found by pressing <strong>Ctrl</strong>
+                (or <strong>Apple</strong> key on Mac) while clicking the
+                keywords. You can also limit your search to only those items
+                with more than one section selected.
+                </div>
+
+               <input type="checkbox"
+                       name="getSections_none:boolean"
+                       id="getSections_multiple"
+                       value="True"
+                       class="noborder"/>
+                    <label for="getSections_none" i18n:translate="description_sections_none">
+                        Has no sections selected
+                    </label>
+                    <br />
+
+               <input type="checkbox"
+                       name="getSections_multiple:boolean"
+                       id="getSections_multiple"
+                       value="True"
+                       class="noborder"/>
+                    <label for="getSections_multiple" i18n:translate="description_sections_multiple">
+                        Has more than one section selected
+                    </label>
+                    <br />
+
+                <select name="getSections:list"
+                        id="getSections"
+                        size="7"
+                        multiple="multiple"
+                        >
+                    <option value="#"
+                            tal:repeat="section sectionsVocab"
+                            tal:content="section"
+                            tal:attributes="value section"
+                            i18n:translate=""
+                            >dummy</option>
+                </select>
+                <br />
+
+                <input type="radio"
+                       name="getSections_usage:ignore_empty"
+                       id="getSections_or"
+                       value=""
+                       class="noborder"
+                       checked="checked"/>
+                    <label for="getSections_or" i18n:translate="description_sections_or">
+                        Match any
+                    </label>
+                    <br />
+
+                <input type="radio"
+                        name="getSections_usage:ignore_empty"
+                        id="getSections_and"
+                        value="operator:and"
+                        class="noborder"
+                        />
+                <label for="getSections_and" i18n:translate="description_sections_and">
+                    Match all
+                </label>
+            </div>
+    
+            <div class="field" tal:define="audiencesVocab here/getAudiencesVocab | nothing"
+                               tal:condition="audiencesVocab">
+                <label for="getAudiences" i18n:translate="label_audiences">Audiences</label>
+
+                <div class="formHelp" i18n:translate="help_search_audiences">
+                Return items marked for some or all of these audiences.
+                Multiple words may be found by pressing <strong>Ctrl</strong>
+                (or <strong>Apple</strong> key on Mac) while clicking the
+                keywords. You can also limit your search to only those items
+                with more than one audience selected.
+                </div>
+
+               <input type="checkbox"
+                       name="getAudiences_multiple:boolean"
+                       id="getAudiences_multiple"
+                       value="True"
+                       class="noborder"/>
+                    <label for="getAudiences_multiple" i18n:translate="description_audiences_multiple">
+                        Has more than one audience selected
+                    </label>
+                    <br />
+
+                <select name="getAudiences:list"
+                        id="getAudiences"
+                        size="7"
+                        multiple="multiple"
+                        >
+                    <option value="#"
+                            tal:repeat="section audiencesVocab"
+                            tal:content="section"
+                            tal:attributes="value section"
+                            i18n:translate=""
+                            >dummy</option>
+                </select>
+                <br />
+
+                <input type="radio"
+                       name="getAudiences_usage:ignore_empty"
+                       id="getAudiences_or"
+                       value=""
+                       class="noborder"
+                       checked="checked"/>
+                    <label for="getAudiences_or" i18n:translate="description_audiences_or">
+                        Match any
+                    </label>
+                    <br />
+
+                <input type="radio"
+                        name="getAudiences_usage:ignore_empty"
+                        id="getAudiences_and"
+                        value="operator:and"
+                        class="noborder"
+                        />
+                <label for="getAudiences_and" i18n:translate="description_audiences_and">
+                    Match all
+                </label>
+            </div>
+            
+            <div class="field" tal:define="versionsVocab here/getVersionsVocab | nothing"
+                               tal:condition="versionsVocab">
+                <label for="getVersions" i18n:translate="label_versions">Versions</label>
+
+                <div class="formHelp" i18n:translate="help_search_versions">
+                Return items in some or all of these versions.
+                Multiple words may be found by pressing <strong>Ctrl</strong>
+                (or <strong>Apple</strong> key on Mac) while clicking the
+                keywords. You can also limit your search to only those items
+                with more than one version selected.
+                </div>
+
+               <input type="checkbox"
+                       name="getVersions_none:boolean"
+                       id="getVersions_none"
+                       value="True"
+                       class="noborder"/>
+                    <label for="getVersions_none" i18n:translate="description_versions_none">
+                        Has no versions selected
+                    </label>
+                    <br />
+
+               <input type="checkbox"
+                       name="getVersions_multiple:boolean"
+                       id="getVersions_multiple"
+                       value="True"
+                       class="noborder"/>
+                    <label for="getVersions_multiple" i18n:translate="description_versions_multiple">
+                        Has more than one version selected
+                    </label>
+                    <br />
+
+                <select name="getVersions:list"
+                        id="getVersions"
+                        size="7"
+                        multiple="multiple"
+                        >
+                    <option value="#"
+                            tal:repeat="section versionsVocab"
+                            tal:content="section"
+                            tal:attributes="value section"
+                            i18n:translate=""
+                            >dummy</option>
+                </select>
+                <br />
+
+                <input type="radio"
+                       name="getVersions_usage:ignore_empty"
+                       id="getVersions_or"
+                       value=""
+                       class="noborder"
+                       checked="checked"/>
+                    <label for="getVersions_or" i18n:translate="description_versions_or">
+                        Match any
+                    </label>
+                    <br />
+
+                <input type="radio"
+                        name="getVersions_usage:ignore_empty"
+                        id="getVersions_and"
+                        value="operator:and"
+                        class="noborder"
+                        />
+                <label for="getVersions_and" i18n:translate="description_versions_and">
+                    Match all
+                </label>
+            </div>
+    
+            <div class="field">
+                <label for="created"
+                       i18n:domain="plone"
+                       i18n:translate="label_new_items_since">
+                    New items since
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_new_items_since">
+                    Return items added since you were last logged on, the last
+                    week, etc.
+                </div>
+    
+                <tal:datetime define="today python:DateTime().earliestTime()">
+                <select name="created:list:date"
+                        id="created"
+                        i18n:domain="plone"
+                        tal:define="yesterday python:(today-1).Date();
+                                    lastweek python:(today-7).Date();
+                                    lastmonth python:(today-31).Date();
+                                    ever string:1970/02/01;">
+                    <option value="#"
+                            tal:condition="not: isAnon"
+                            tal:attributes="value python:member.getProperty('last_login_time')"
+                            i18n:translate="last_login">
+                        Last log-in
+                    </option>
+                    <option value="#"
+                            tal:attributes="value yesterday"
+                            i18n:translate="time_yesterday">
+                        Yesterday
+                    </option>
+                    <option value="#"
+                            tal:attributes="value lastweek"
+                            i18n:translate="time_last_week">
+                        Last week
+                    </option>
+                    <option value="#"
+                            tal:attributes="value lastmonth"
+                            i18n:translate="time_last_month">
+                        Last month
+                    </option>
+                    <option value="#"
+                            tal:attributes="value ever"
+                            selected="selected"
+                            i18n:translate="time_ever">
+                        Ever
+                    </option>
+                </select>
+                </tal:datetime>
+
+                <input type="hidden" name="created_usage" value="range:min" />
+            </div>
+    
+            <div class="field" tal:define="portal_types view/searchTypes">
+                <label i18n:domain="plone"
+                       i18n:translate="label_item_type">
+                    Item type
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_item_type">
+                    Return items of a specific type.
+                </div>
+    
+                <span class="optionsToggle">
+                    <input type="checkbox"
+                           onclick="javascript:toggleSelect(this, 'portal_type:list', true);"
+                           name="pt_toggle"
+                           value="#"
+                           id="pt_toggle"
+                           class="noborder"
+                           checked="checked"
+                           />
+                    <label for=""
+                           i18n:domain="plone"
+                           i18n:translate="label_toggle"
+                           tal:attributes="for string:pt_toggle">
+                        Select All/None
+                    </label>
+                </span>
+                <br />
+                <div style="float:left; margin-right: 2em;"
+                     tal:define="allTypes portal_types;
+                             typeLists python:here.createMultiColumnList(allTypes, numCols=2, sort_on='self');"
+                     tal:repeat="sublist typeLists">
+                    <tal:items repeat="type sublist">
+                    <tal:tabindex define="tabindex tabindex/next">
+                    <input type="checkbox"
+                           name="portal_type:list"
+                           value="#"
+                           class="noborder"
+                           checked="checked"
+                           tal:attributes="value type;
+                                           id string:portal_type_${tabindex}"/>
+                    <label for=""
+                           i18n:domain="plone"
+                           i18n:translate=""
+                           tal:attributes="for string:portal_type_${tabindex}"
+                           tal:content="python: type"
+                           />
+                    <br />
+                    </tal:tabindex>
+                    </tal:items>
+                </div>
+            </div>
+
+            <div class="visualClear"><!-- --></div>
+            <br />
+
+            <div class="field">
+    
+                <label for="review_state"
+                       i18n:domain="plone"
+                       i18n:translate="label_review_status">
+                    Review status
+                </label>
+
+                <div class="formHelp"
+                     i18n:domain="plone"
+                     i18n:translate="help_search_review_status">
+                    As a reviewer, you may search for items based on their
+                    review state. If you wish to constrain results to items in
+                    certain states, select them from this list.
+                </div>
+    
+                <span class="optionsToggle" tal:define="tabindex tabindex/next">
+                <input type="checkbox"
+                       onclick="javascript:toggleSelect(this, 'review_state:list', true);"
+                       name="rs_toggle"
+                       value="#"
+                       id="rs_toggle"
+                       class="noborder"
+                       checked="checked"
+                       />
+                <label for=""
+                       i18n:domain="plone"
+                       i18n:translate="label_toggle"
+                       tal:attributes="for string:rs_toggle">
+                    Select All/None
+                </label>
+                <br />
+                </span>
+
+                <tal:states define="states context/phc_getWorkflowStates;
+                                    state_lists python: here.createMultiColumnList(states, numCols=1, sort_on='self');"
+                            repeat="sublist state_lists">
+                    <tal:items repeat="state sublist">
+                    <input class="noborder"
+                           type="checkbox"
+                           name="review_state:list"
+                           checked="checked"
+                           tal:attributes="value python:state[1];
+                                           id python:normalizeString(state[1]);" />
+                    <label for="review_state:list"
+                           i18n:translate=""
+                           i18n:domain="plone"
+                           tal:content="python:state[0] or state[1]"
+                           />
+                    <br />
+                    </tal:items>
+                </tal:states>
+            </div>
+            
+            <div class="field">
+                <input type="checkbox"
+                       id="hasComments:boolean"
+                       value="True"
+                       name="hasComments:ignore_empty"
+                       />
+                       
+                <label for="hasComments" i18n:translate="label_has_comments">Has comments</label>
+
+                <div class="formHelp" i18n:translate="help_search_has_comments">
+                  Return items that have comments.
+                </div>
+            </div>
+
+            <div class="visualClear"><!-- --></div>
+
+            <div class="formControls">
+                <input class="context"
+                       type="submit"
+                       name="form.button.Search"
+                       value="Search"
+                       />
+            </div>
+
+        </fieldset>
+    
+    </form>
+    
+</div>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats.cpt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[actions]
+action.success=traverse_to:string:phc_stats_search
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,43 @@
+## Script (Python) "phc_stats_modify"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##title=Modify the selected items
+##parameters=paths=[],Subject=[],Subject_mode='add',audiences=[],audiences_mode='add',sections=[],sections_mode='add',versions=[],versions_mode='add'
+
+for p in paths:
+    obj = context.restrictedTraverse(p)
+    
+    if Subject:
+        newSubject = list(Subject)
+        if Subject_mode != 'replace':
+            newSubject += [s for s in obj.Subject() if s not in newSubject]
+        obj.setSubject(newSubject)
+        
+    if audiences:
+        newAudiences = list(audiences)
+        if audiences_mode != 'replace':
+            newAudiences += [a for a in obj.getAudiences() if a not in newAudiences]
+        obj.setAudiences(newAudiences)
+    
+    if sections and obj.Schema().has_key('sections'):
+        newSections = list(sections)
+        if sections_mode != 'replace':
+            newSections += [a for a in obj.getSections() if a not in newSections]
+        obj.setSections(newSections)
+
+    if versions:
+        newVersions = list(versions)
+        if versions_mode != 'replace':
+            newVersions += [v for v in obj.getVersions() if v not in newVersions]
+        obj.setVersions(newVersions)
+            
+    obj.reindexObject()
+            
+
+            
+return state.set(status = 'success',
+                 portal_status_message = 'Changes made')
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_modify.cpy.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[actions]
+action.success=traverse_to:string:phc_stats
+action.failure=traverse_to:string:phc_stats

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,283 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+   lang="en"
+   i18n:domain="plonehelpcenter"
+   metal:use-macro="here/main_template/macros/master">
+
+   <div metal:fill-slot="main"
+      tal:define="view context/@@hc_view; results view/statsQueryCatalog">
+
+      <h1>Search results</h1>
+      
+      <a href=""
+         class="link-parent"
+         tal:attributes="href string:${here/absolute_url}/phc_stats"
+         >
+          Return to statistics search
+      </a>
+
+      <div tal:condition="not: results">
+         <p><strong i18n:domain="plone" i18n:translate="description_no_results_found">No results were found.</strong></p>
+      </div>
+
+      <p tal:condition="results">
+         You can assign audiences, sections and keywords to the items below in
+         aggregate. Select the items you wish to modify, and use the controls
+         at the bottom.
+      </p>
+
+      <form method="post"
+            tal:condition="results"
+            tal:attributes="action string:${here/absolute_url}/${template/getId}">
+         
+         <input type="hidden" name="form.submitted" value="1" />
+
+         <strong i18n:domain="plone"
+                 i18n:translate="batch_x_items_matching_your_criteria">
+            <span i18n:name="number" tal:omit-tag="" tal:content="python:len(results)">234</span> items matching your criteria.
+         </strong>
+
+         <table class="listing nosort">
+            <thead>
+               <tr>
+                  <th>
+                     <input class="noborder"
+                        type="checkbox"
+                        src="select_all_icon.gif"
+                        name="selectButton"
+                        title="Select all items"
+                        onClick="toggleSelect(this,'paths:list');"
+                        tal:attributes="src string:$portal_url/select_all_icon.gif"
+                        alt="Select all items"
+                        i18n:domain="plone"
+                        i18n:attributes="title label_select_all_items; alt label_select_all_items;" />
+                  </th>
+                  <th>Title</th>
+                  <th>Audience(s)</th>
+                  <th>Section(s)</th>
+                  <th>Version(s)</th>
+                  <th>Keyword(s)</th>
+               </tr>
+            </thead>
+            <tbody>
+               <tal:items repeat="item results">
+                  <tr tal:define="oddrow  repeat/item/odd"
+                     tal:attributes="class python:test(oddrow, 'even', 'odd')">
+                     <td>
+                        <input type="checkbox" name="paths:list" tal:attributes="value item/getPath"/>
+                     </td>
+                     <td><a tal:content="item/Title" tal:attributes="href item/getURL"/></td>
+                     <td tal:content="python:'; '.join(item.getAudiences)" tal:on-error="nothing"/>
+                     <td tal:content="python:'; '.join(item.getSections)" tal:on-error="nothing"/>
+                     <td tal:content="python:'; '.join(item.getVersions)" tal:on-error="nothing"/>
+                     <td tal:content="python:'; '.join(item.Subject)" tal:on-error="nothing"/>
+                  </tr>
+               </tal:items>
+            </tbody>
+         </table>
+         
+         <div class="field">
+             <label for="Subject">Assign keywords</label>
+
+             <div class="formHelp">
+                You can either replace the existing keywords of the selected
+                items with the selection below, or replace all keywords on
+                the items selected with your selection.
+             </div>
+
+             <select name="Subject:list"
+                     id="Subject"
+                     size="7"
+                     multiple="multiple"
+                     tabindex=""
+                     tal:define="usedSubjects python:here.portal_catalog.uniqueValuesFor('Subject');"
+                     >
+                 <option value="#"
+                         tal:repeat="subject usedSubjects"
+                         tal:content="subject"
+                         tal:attributes="value subject"
+                         i18n:translate=""
+                         >dummy</option>
+             </select>
+             <br />
+
+             <input type="radio"
+                    name="Subject_mode:ignore_empty"
+                    id="Subject_add"
+                    value="add"
+                    class="noborder"
+                    checked="checked"
+                    />
+                 <label for="Subject_add">
+                     Add to existing keywords
+                 </label>
+                 <br />
+
+             <input type="radio"
+                     name="Subject_mode:ignore_empty"
+                     id="Subject_replace"
+                     value="replace"
+                     class="noborder"
+                     tabindex=""
+                     />
+             <label for="Subject_replace">
+                 Replace existing keywords
+             </label>
+         </div>
+         
+         <div class="field">
+             <label for="audiences">Assign audiences</label>
+
+             <div class="formHelp">
+                You can either replace the existing audiences of the selected
+                items with the selection below, or replace all audiences on
+                the items selected with your selection.
+             </div>
+
+             <select name="audiences:list"
+                     id="audiences"
+                     size="7"
+                     multiple="multiple"
+                     tabindex=""
+                     tal:define="usedAudiences here/getAudiencesVocab"
+                     >
+                 <option value="#"
+                         tal:repeat="audience usedAudiences"
+                         tal:content="audience"
+                         tal:attributes="value audience"
+                         i18n:translate=""
+                         >dummy</option>
+             </select>
+             <br />
+
+             <input type="radio"
+                    name="audiences_mode:ignore_empty"
+                    id="audiences_add"
+                    value="add"
+                    class="noborder"
+                    checked="checked"
+                    />
+                 <label for="audiences_add">
+                     Add to existing audiences
+                 </label>
+                 <br />
+
+             <input type="radio"
+                     name="audiences_mode:ignore_empty"
+                     id="audiences_replace"
+                     value="replace"
+                     class="noborder"
+                     />
+             <label for="audiences_replace">
+                 Replace existing audiences
+             </label>
+         </div>
+         
+         <div class="field" tal:define="usedSections here/aq_explicit/getSectionsVocab | nothing"
+                            tal:condition="usedSections">
+             <label for="sections">Assign sections</label>
+
+             <div class="formHelp">
+                You can either replace the existing sections of the selected
+                items with the selection below, or replace all sections on
+                the items selected with your selection.
+             </div>
+
+             <select name="sections:list"
+                     id="sections"
+                     size="7"
+                     multiple="multiple"
+                     tabindex=""
+                     >
+                 <option value="#"
+                         tal:repeat="section usedSections"
+                         tal:content="section"
+                         tal:attributes="value section"
+                         i18n:translate=""
+                         >dummy</option>
+             </select>
+             <br />
+
+             <input type="radio"
+                    name="sections_mode:ignore_empty"
+                    id="sections_add"
+                    value="add"
+                    class="noborder"
+                    checked="checked"
+                    />
+                 <label for="sections_add">
+                     Add to existing sections
+                 </label>
+                 <br />
+
+             <input type="radio"
+                     name="sections_mode:ignore_empty"
+                     id="sections_replace"
+                     value="replace"
+                     class="noborder"
+                     tabindex=""
+                     />
+             <label for="sections_replace">
+                 Replace existing sections
+             </label>
+         </div>
+         
+         <div class="field">
+             <label for="versions">Assign versions</label>
+
+             <div class="formHelp">
+                You can either replace the existing versions of the selected
+                items with the selection below, or replace all versions on
+                the items selected with your selection.
+             </div>
+
+             <select name="versions:list"
+                     id="versions"
+                     size="7"
+                     multiple="multiple"
+                     tabindex=""
+                     tal:define="usedVersions here/getVersionsVocab"
+                     >
+                 <option value="#"
+                         tal:repeat="version usedVersions"
+                         tal:content="version"
+                         tal:attributes="value version"
+                         i18n:translate=""
+                         >dummy</option>
+             </select>
+             <br />
+
+             <input type="radio"
+                    name="versions_mode:ignore_empty"
+                    id="versions_add"
+                    value="add"
+                    class="noborder"
+                    checked="checked"
+                    />
+                 <label for="versions_add">
+                     Add to existing versions
+                 </label>
+                 <br />
+
+             <input type="radio"
+                     name="versions_mode:ignore_empty"
+                     id="versions_replace"
+                     value="replace"
+                     class="noborder"
+                     />
+             <label for="versions_replace">
+                 Replace existing versions
+             </label>
+         </div>
+         
+         <div class="formControls">
+            <input class="context"
+                    type="submit"
+                    name="form.button.Modify"
+                    value="Modify selected items"/>
+         </div>
+      </form>
+   </div>
+
+
+</html>
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_stats_search.cpt.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+[actions]
+action.success=traverse_to:string:phc_stats
+action.success..Modify=traverse_to:string:phc_stats_modify
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_topic_area.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_topic_area.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phc_topic_area.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,48 @@
+<html metal:use-macro="context/main_template/macros/master">
+<body>
+
+  <div metal:fill-slot="main"
+        tal:define="topic request/topic;
+                    view context/@@hc_view;
+                    subtopics python:view.getSubTopics(topic=topic)">
+
+      <h1 tal:content="topic">Security and Permissions</h1>
+
+      <dl style="width: 30%; float: right; display: block; margin-left:1em"
+       class="portlet" tal:condition="python:len(subtopics)>1">
+      <dt class="portletHeader">In This Section...</dt>
+      <dd class="portletItem">
+        <ul>
+          <li tal:repeat="subtopic subtopics"><a href="#workflow" tal:attributes="href string:$current_page_url#${subtopic/id}" tal:content="subtopic/title">Workflow</a></li>
+        </ul>
+      </dd>
+      </dl>
+
+      <div class="doclist" tal:repeat="subtopic subtopics">
+        <h2><a name="workflow" tal:attributes="name subtopic/id; id subtopic/id" tal:content="subtopic/title">Workflow</a></h2>
+        <dl>
+          <tal:block tal:repeat="item subtopic/docs">
+            <dt>
+                <a tal:attributes="href item/getURL" tal:condition="item/getStartHere | nothing" tal:content="structure here/phc_star.gif" href="/"><img src="phc_star.gif" align="middle" alt="Start Here" /></a>
+                <a tal:attributes="href item/getURL;
+                                   class string:state-${item/review_state}"
+                   tal:content="item/Title" href="/">This is the title.</a>
+            </dt>
+            <dd>
+                <div class="discreet">
+                  <span tal:content="item/Type" />
+                  <span tal:condition="item/getAudiences | nothing">for <span tal:replace="python:', '.join(item.getAudiences)" /></span><span tal:condition="item/getVersions | nothing">; Versions: <span tal:replace="python:', '.join(item.getVersions)" /></span>
+                </div>
+                <div tal:replace="item/Description | nothing">
+                  Description
+                </div>
+            </dd>
+          </tal:block>
+        </dl>
+      </div>
+
+  </div>
+
+</body>
+</html>
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phcfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phcfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/phcfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,84 @@
+<metal:master define-macro="master">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+  <body>
+    <div metal:fill-slot="main"
+         tal:define="view here/@@hcf_view;
+                     audiences view/getItemsByAudiencesAndSections;
+                     noAudiences python:len(audiences) == 1">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+    
+    <h1 tal:content="here/Title" class="documentFirstHeading">
+      Folder Title
+    </h1>
+    
+    <table class="sectionIndex" tal:condition="not:noAudiences">
+        <thead>
+            <tr><th i18n:translate="phc_index_audiences">Audiences</th></tr>
+        </thead>
+        <tbody>
+            <tr tal:repeat="audience audiences">
+                <td><a tal:attributes="href python:'%s#%s'% (here.absolute_url(), audience['id'],)"
+                       tal:content="audience/audience" i18n:translate="">audience</a>
+                </td>
+            </tr>
+        </tbody>
+    </table>
+
+    <div class="documentDescription"
+         tal:content="here/Description">
+      Description.
+    </div>
+
+    <tal:audience repeat="audience audiences">
+
+        <h2 tal:condition="not:noAudiences" >
+            <a class="link-anchor" 
+                tal:attributes="name audience/id"
+                tal:content="audience/audience"
+		i18n:translate="">
+                Audience Heading
+            </a>
+        </h2>
+
+        <tal:block define="sections audience/sections;
+                           noSections python:len(sections) == 1">
+        
+        <tal:section repeat="section sections">
+
+           <h3 tal:condition="not:noSections" i18n:translate="" tal:content="section/section">Section Heading</h3>
+
+           <dl>
+               <tal:howto tal:repeat="item python:section['items']">
+                  <dt>
+                      <img metal:define-slot="item_icon"
+                           tal:replace="structure here/howto_icon.gif" />
+                      <a href="" tal:content="item/Title"
+                         tal:attributes="href item/getURL;
+                                         class string:state-${item/review_state}">Item</a>
+                      <img src="error_icon.gif" alt="!" class="outdatedMarker"
+                           tal:condition="item/isOutdated"
+                           title="This item applies to a previous version" 
+                           i18n:attributes="title"/>
+                  </dt>
+               <dd tal:content="item/Description">Description</dd>
+             </tal:howto>
+           </dl>
+
+        </tal:section>
+        
+      </tal:block>
+
+    </tal:audience>
+
+    </div>
+  </body>
+
+</html>
+</metal:master>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_helpcenter.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_helpcenter.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_helpcenter.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,73 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<!-- Recent Help Center items -->
+
+<div metal:define-macro="portlet"
+     tal:define="results python: here.portal_catalog.searchResults(portal_type=('HelpCenterDefinition'
+                                                                               ,'HelpCenterErrorReference'
+                                                                               ,'HelpCenterLink'
+                                                                               ,'HelpCenterFAQ'
+                                                                               ,'HelpCenterHowTo'
+                                                                               ,'HelpCenterTutorial'
+                                                                               )
+                                                                 , sort_on='Date'
+                                                                 , sort_order='reverse'
+                                                                 , review_state='published')[:5];">
+
+    <div class="portlet" id="portlet-helpcenter">
+
+        <h5 i18n:translate="portlet_header_recent_docs">Recent documentation</h5>
+
+        <div class="portletBody">
+
+            <tal:block tal:repeat="obj results">
+
+                <div tal:define="oddrow repeat/obj/odd"
+                     tal:attributes="class python:test(oddrow, 'portletContent even', 'portletContent odd')">
+
+                    <a href=""
+                       tal:attributes="href obj/getURL;
+                                       title obj/Description">
+                        <img src="" height="16" width="16"
+                             tal:attributes="src string:${here/portal_url}/${obj/getIcon};
+                                             title obj/Type;" />
+                        <span tal:replace="python:test(obj.Title, obj.Title, obj.getId)"> Extended Calendar Product </span>
+                    </a>
+
+                    <div class="portletDetails">
+                    <tal:sections content="python: ', '.join(obj.getSections)">Sections</tal:sections>
+                    </div>
+                </div>
+
+            </tal:block>
+
+            <div class="portletContent odd">
+            
+                <tal:helpcenters repeat="center python: here.portal_catalog.searchResults(portal_type='HelpCenter', review_state='published')">
+
+                <a href=""
+                   class="portletMore"
+                   tal:attributes="href center/absolute_url;
+                                   title center/Description;"
+                   i18n:translate="box_more_documentation"
+                   >
+                    More <tal:center replace="center/Title">Documentation</tal:center>&#8230;
+                </a>
+                
+                </tal:helpcenters>
+
+            </div>
+
+        </div>
+
+    </div>
+
+</div>
+
+</body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_books.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_books.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_books.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet">
+
+    <dl class="portlet">
+      <dt class="portletHeader"><a href="books" tal:attributes="href string:${here/getPHCUrl}/books">Books</a></dt>
+      <dd class="portletItem">
+        <ul>
+          <li tal:repeat="book python:context.books.getFolderContents()[:3]">
+            <a href="[book-url]"
+                tal:attributes="href book/getURL"
+                tal:content="book/Title">[Book Title]
+            </a>
+          </li>
+        </ul>
+      </dd>
+      <dd class="portletFooter"><a href="books"  tal:attributes="href string:${here/getPHCUrl}/books">See all books&hellip;</a></dd>
+    </dl>
+
+</div>
+</body>
+</html>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_finddoc.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_finddoc.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_finddoc.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,58 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet" id="finddoc_portlet">
+
+    <dl class="portlet" style="width: 23em;">
+        <dd class="portletFooter" style="text-align:left;border-top:1px solid #8CACBB;">
+            <h3 style="margin-bottom:1em">Find Documentation by Topic</h3>
+            <dl>
+                <dt>For Content Editors and Authors</dt>
+                <dd style="margin-left: 0">
+                    <ul style="list-style-type:none;list-style-image: none;margin-left: 0">
+                        <li><a href="/documentation/phc_topic_area?topic=Basic+Use">Basic Use for Content Editors</a></li>
+                    </ul>
+                </dd>
+
+                <dt>Installation and Setup</dt>
+                <dd style="margin-left: 0">
+                    <ul style="list-style-type:none;list-style-image: none;margin-left: 0">
+                        <li><a href="/documentation/phc_topic_area?topic=Installation">Installation</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Configuration+and+Set-Up">Configuration and Set-Up</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Upgrading+and+Moving">Upgrading and Moving</a></li>
+                    </ul>
+                </dd>
+
+                <dt>Customizing Plone</dt>
+                <dd style="margin-left: 0">
+                    <ul style="list-style-type:none;list-style-image: none;margin-left: 0">
+                        <li><a href="/documentation/phc_topic_area?topic=Visual+Design">Visual Design</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Navigation">Navigation</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Managing+Content">Managing Content</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Users%2C+Authentication%2C+and+Permissions">Users, Authentication, and Permissions</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Internationalization+and+Localization">Internationalization and Localization</a></li>
+                    </ul>
+                </dd>
+
+                <dt>Extending Plone</dt>
+                <dd style="margin-left: 0">
+                    <ul style="list-style-type:none;list-style-image: none;margin-left: 0">
+                        <li><a href="/documentation/phc_topic_area?topic=Developing+for+Plone">Developing for Plone</a></li>
+                    </ul>
+                </dd>
+
+                <dt>Contributing to Plone.Org</dt>
+                <dd style="margin-left: 0">
+                    <ul style="list-style-type:none;list-style-image: none;margin-left: 0">
+                        <li><a href="/documentation/phc_topic_area?topic=Contributing+to+plone.org#adding-a-software-project.">Adding a Software Project to plone.org</a></li>
+                        <li><a href="/documentation/phc_topic_area?topic=Contributing+to+plone.org#writing-documentation-for-plone.org">Writing Documentation for plone.org</a></li>
+                    </ul>
+                </dd>
+            </dl>
+        </dd>
+    </dl>
+
+</div>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_findhelp.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_findhelp.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_findhelp.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,24 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet">
+
+    <dl class="portlet" style="width:100%">
+      <dt class="portletHeader"><a href="/support">Support</a></dt>
+      <dd class="portletItem">
+         <span>
+           <a href="/support"><img src="speakplone_sm.png" tal:replace="structure here/speakplone_sm.png" /></a>
+         </span>
+         <span><b class="supportlink"><a href="/support">Get Help</a></b></span>
+      </dd>
+      <dd class="portletItem">
+         <p>Join our 
+           <a href="/support/irc">chat rooms</a> or <a href="http://www.nabble.com/Plone-f6741.html">support forums</a> if you have more specific questions.
+         </p>
+      </dd>
+    </dl>
+
+</div>
+</body>
+</html>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_misc.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_misc.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_misc.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,25 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet"
+    tal:define="view context/@@hc_view;"
+    style="width:23em">
+
+    <p>
+      <img tal:replace="structure here/rss.gif" />
+      <a tal:attributes="href view/getSyndicationURL" 
+         i18n:translate="phc_rss_all">
+        Feed for all documentation.
+      </a>
+    </p>
+
+    <p>
+        <a href="helpcenter_view" tal:attributes="href string:${portal_url}/documentation/helpcenter_view">
+            Newest documentation.
+        </a>
+    </p>
+
+</div>
+</body>
+</html>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_search.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_search.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_search.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,96 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet"
+    tal:define="view context/@@hc_view;"
+    >
+
+<div id="phcsearch_portlet" style="width:23em">
+
+<form name="searchform"
+      action="phc_search"
+      tal:attributes="action string:${here/absolute_url}/phc_search">
+       
+    <fieldset style="margin-top: -1em">
+        
+        <legend i18n:translate="phc_doc_search">Documentation search</legend>
+        
+        <label for="searchGadget"
+               class="hiddenStructure"
+               i18n:domain="plone"
+               i18n:translate="text_search">
+            Search Documentation
+        </label>
+        <input name="SearchableText"
+               type="text"
+               size="14"
+               value=""
+               alt="Search Documentation"
+               title="Search Documentation"
+               accesskey="accesskeys-search"
+               i18n:attributes="alt; accesskey; title"
+               tal:attributes="value request/SearchableText|nothing;
+                               tabindex tabindex/next" 
+        />
+
+        <input class="searchButton"
+               name="Search"
+               type="submit"
+               value="Search"
+               accesskey="accesskeys-search"
+               tal:attributes="tabindex tabindex/next"
+               i18n:attributes="value; accesskey" />
+               
+        
+          <select name="phc_selection" style="margin-top: 1em;" tal:condition="nothing">
+            <option value="all" i18n:translate="phc_full_area" tal:condition="here/constrainSearches | nothing">Entire documentation area</option>
+            <option value="all" i18n:translate="phc_all_docs" tal:condition="not:here/constrainSearches | nothing">All documentation</option>
+            <option value="faq" i18n:translate="phc_faq">FAQs</option>
+            <option value="howto" i18n:translate="phc_howto">How-tos</option>
+            <option value="tutorial" i18n:translate="phc_tutorial">Tutorials</option>
+            <option value="link" i18n:translate="phc_links">Links</option>
+            <option value="error" i18n:translate="phc_errorreference">Error references</option>
+            <option value="glossary" i18n:translate="phc_definition">Glossary definitions</option>
+            <option value="manual" i18n:translate="phc_referencemanual">Reference manuals</option>
+        </select>
+        
+        <div id="phc_asearch_link" style="margin-top: 12px;">
+            <a href="phc_asearch_form" tal:attributes="href string:${here/getPHCUrl}/phc_asearch_form" i18n:translate="phc_asearch_link">
+                Search by topic, version, audience&hellip;
+            </a>
+        </div> 
+        
+    </fieldset>
+</form>
+
+<p tal:define="my_path here/getPHCPath;
+                subtypes_tuples python:(
+                                 ('HelpCenterFAQFolder','HelpCenterFAQ'),
+                                 ('HelpCenterHowToFolder','HelpCenterHowTo'),
+                                 ('HelpCenterTutorialFolder','HelpCenterTutorial'),
+                                 ('HelpCenterLinkFolder','HelpCenterLink'),
+                                 ('HelpCenterErrorReferenceFolder','HelpCenterErrorReference'),
+                                 ('HelpCenterGlossary','HelpCenterDefinition'),
+                                 ('HelpCenterReferenceManualFolder','HelpCenterReferenceManual'),
+                                 ('HelpCenterInstructionalVideoFolder','HelpCenterInstructionalVideo'));
+                subtypes python:[t[0] for t in subtypes_tuples];
+                rss_subtypes python:[t[1] for t in subtypes_tuples];">
+  <img tal:replace="structure here/rss.gif" />
+  <a tal:attributes="href view/getSyndicationURL"
+     i18n:translate="phc_rss_all">
+    Subscribe to updates using RSS
+  </a>
+</p>
+
+<p tal:condition="exists:here/how-to/use-help-center">
+  <img tal:replace="structure here/helpcenter_icon.gif" />
+  <a tal:attributes="href string:${here/getPHCUrl}/how-to/use-help-center"
+     i18n:translate="phc_contrib_use">
+    How to contribute your content
+  </a>
+</p>
+</div>
+</div>
+</body>
+</html>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_training.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_training.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_phc_training.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,22 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plone">
+<body>
+<div metal:define-macro="portlet">
+
+    <dl class="portlet">
+      <dt class="portletHeader">
+        <a href="/events/training">Plone Training</a>
+      </dt>
+      <dd class="portletItem">
+        Learn how to design, build, and deploy a website in Plone 
+        through one of the numerous Plone training sessions around the world.
+      </dd>
+      <dd class="portletFooter">
+         <a href="/events/training">Find Plone training&hellip;</a>
+      </dd>
+    </dl>
+
+</div>
+</body>
+</html>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_stale_items.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_stale_items.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/portlet_stale_items.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,82 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+      xmlns:metal="http://xml.zope.org/namespaces/metal"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<div metal:define-macro="portlet"
+     tal:condition="python: (context.portal_type == 'HelpCenter') and (
+         (member.has_role('Reviewer', context)) or
+         (member.has_role(['Manager'], context))
+     )">
+     
+    <tal:staleitemslist tal:define="stale_interval context/REQUEST/SESSION/stale_PHC_items_interval | string:1_year;
+                 results python:context.fetchStaleItems( stale_interval )">
+
+    <div class="portlet" id="portlet-stale-items">
+
+        <h5 i18n:translate="box_staleitems">Stale Help Center Items</h5>
+
+        <div class="portletBody">
+
+            <tal:block tal:repeat="obj results"
+                       tal:define="oddrow python:0;
+                                   portal_types_info python: 
+                                    {  
+                                      'HelpCenterDefinition': ('definition', 'glossary_icon'),
+                                      'HelpCenterErrorReference': ('error reference', 'errorref_icon'),
+                                      'HelpCenterFAQ': ('question', 'faq_icon'),
+                                      'HelpCenterHowTo': ('how-to', 'topic_icon'),
+                                      'HelpCenterLink': ('link', 'link_icon'),
+                                      'HelpCenterTutorial': ('tutorial', 'tutorial_icon'), 
+                                    };">
+
+                <div tal:condition="repeat/obj/first/portal_type"
+                     tal:define="oddrow         python:not oddrow;
+                                 items_found    python:len([x for x in results if (x.portal_type == obj.portal_type)]);
+                                 display_name   python:portal_types_info[obj.portal_type][0];
+                                 icon_path      python:portal_types_info[obj.portal_type][1];"
+                     tal:attributes="class python:test(oddrow, 'portletContent even', 'portletContent odd')">
+
+                    <a href=""
+                       tal:attributes="href string:queryForStaleItems?type=${obj/portal_type}&amp;stale_interval=${stale_interval}">
+                        <img src="" tal:attributes="src string:${icon_path}.gif" />
+                        <span tal:replace="string:$items_found stale ${display_name}s">ITEM_COUNT</span>
+                    </a>
+                </div>
+
+            </tal:block>
+
+            <div class="portletContent odd" tal:condition="not: results"
+                 i18n:translate="box_no_stale_items">
+            No stale items found in the Help Center.
+            </div>
+
+            <div class="portletContent">
+            <form action="updateStaleItems" method="get" name="stale_item_interval" >
+              <select name="newInterval" onchange="MM_jumpMenu('parent',this,0)">
+                <option value="1_day" tal:attributes="selected python:stale_interval =='1_day'">1 day old</option>
+                <option value="1_week" tal:attributes="selected python:stale_interval =='1_week'">1 week old</option>
+                <option value="2_weeks" tal:attributes="selected python:stale_interval =='2_weeks'">2 weeks old</option>
+                <option value="1_month" tal:attributes="selected python:stale_interval =='1_month'">1 month old</option>
+                <option value="3_months" tal:attributes="selected python:stale_interval =='3_months'">3 months old</option>
+                <option value="6_months" tal:attributes="selected python:stale_interval =='6_months'">6 months old</option>
+                <option value="1_year" tal:attributes="selected python:stale_interval =='1_year'">1 year old</option>
+              </select>
+                <!-- TODO: Make the jump when an item is selected? Conform to
+                Plone UI style (like the Add Item DHTML menus)? -->
+              <input name="update_btn" type="submit" value="Update" />
+            </form>
+            </div>
+
+        </div>
+
+    </div>
+
+    </tal:staleitemslist>
+    
+</div>
+
+</body>
+
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/queryForStaleItems.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/queryForStaleItems.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/queryForStaleItems.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,30 @@
+## Script (Python) "queryForStaleItems"
+##title=Final query for "stale" HelpCenter items, i.e. unchanged for a specified interval and type
+##parameters=type,stale_interval
+
+# Expects two additional items on the query-string:
+#  type is the chosen portal_type, e.g. 'HelpCenterFAQ'
+#  stale_interval is how old the items need to be, e.g. '3_months'
+
+# Construct a catalog query using the specified interval (count back from
+# the current date-time) and return the list of matching result objects
+thresholdValues = {
+    '1_day': 1,
+    '1_week': 7,
+    '2_weeks': 14,
+    '1_month': 30,
+    '3_months': 90,
+    '6_months': 180,
+    '1_year': 365,
+}
+
+stale_threshold_time = DateTime() - thresholdValues[ stale_interval ]
+# print "Items unchanged since %s" % stale_threshold_time
+
+time_string = '%s' % stale_threshold_time
+date_string = time_string.split(' ')[0]
+
+context.REQUEST.response.redirect(
+        "search?review_state=published&portal_type:list=%s&modified:date=%s&modified_usage=range:max&submit=Search"
+        % (type, date_string)
+)

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual-all-pages.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual-all-pages.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual-all-pages.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,39 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<div metal:fill-slot="main">
+
+    <div metal:define-macro="main"
+         tal:define="toc python:here.getTOC(root = here);">
+
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+
+        <h1>
+            <img tal:replace="structure here/referencemanual_icon.gif" />
+            <span tal:replace="here/Title" />
+        </h1>
+
+        <p class="discreet visualNoPrint"
+           i18n:translate="view_paginated_reference_manual">
+	  Note: Return to <a href="" tal:attributes="href here/absolute_url">reference manual view</a>.
+        </p>
+
+        <div class="documentDescription" 
+             tal:content="here/getReferenceManualDescription">
+            Reference Manual Description
+        </div>
+        
+        <metal:recursion use-macro="here/referencemanual_macros/macros/section_collation"/>
+        
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_getSections.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_getSections.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_getSections.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,68 @@
+## Script(Python) "referencemanual_getSections"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=Create the list of sections to print on the single page view of a manual 
+##
+
+# Returns a list of dicts, containing:
+#
+#   item     : The object of the section or page
+#   hasBody  : True if this item has body text(i.e. it's a page)
+#   number   : The numbering of the section(e.g. "1." or "2.")
+#   contents : A list of sub-sections and contained pages
+#
+# The list of contained pages is another list of dicts, containing:
+#
+#   item     : The object of the section or page
+#   hasBody  : True if this item has body text(i.e. it's a page)
+#   number   : The numbering of the section(e.g. "1.2." or "2.3.1")
+#   depth    : The depth of the section. Second-level sections are depth 2
+#
+
+filter = {'portal_type' : ['HelpCenterReferenceManualSection',
+                           'HelpCenterReferenceManualPage']}
+
+def getSubsections(section, depth, numbering):
+    """Find all pages and subsections of the given top level, traversing the
+    entire tree and flattening it to a list, depth first.
+    """
+
+    # Short circuit if we hit a page(no contents)
+    if not section.isPrincipiaFolderish:
+        return []
+
+    items = []
+    idx = 1
+    for item in section.getFolderContents(contentFilter = filter):
+        sectionNumber = "%s%d." % (numbering, idx,)
+        hasBody = hasattr(item, 'getBody')
+        items.append({'item'    : item,
+                      'hasBody' : hasBody,
+                      'number'  : sectionNumber,
+                      'depth'   : depth})
+
+        # Add sub-items of this section(shortcircuits if it was a page)
+        items.extend(getSubsections(item, depth + 1, sectionNumber))
+
+        idx += 1
+
+    return items
+
+# Begin traversal
+
+sections = []
+idx = 1
+for topLevel in context.getFolderContents(contentFilter = filter):
+    sectionNumber = "%s." % (idx,)
+    hasBody = hasattr(topLevel, 'getBody')
+    sections.append({'item'     : topLevel,
+                      'hasBody'  : hasBody,
+                      'number'   : sectionNumber,
+                      'contents' : getSubsections(topLevel, 2, sectionNumber)})
+    idx +=1
+
+return sections
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_macros.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_macros.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_macros.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,142 @@
+<!-- A section (or top-level) table-of-contents 
+    (titles + description, nested list)
+    
+    Call this with 'section' defined 
+  -->
+<metal:block define-macro="section_toc">
+    <ol tal:condition="toc | nothing">
+        <li tal:repeat="tocElement toc">
+            <tal:item define="item tocElement/item">
+                <a href="" tal:attributes="href item/getURL">
+                <span tal:content="item/Title" tal:attributes="class string:state-${item/review_state}"/></a>
+                    <tal:block define="toc tocElement/children">
+                        <metal:recursion use-macro="here/referencemanual_macros/macros/section_toc"/>
+                    </tal:block>
+            </tal:item>
+        </li>
+    </ol>
+</metal:block>
+
+<!-- Listing of all pages in a section
+
+    Call this with toc (top level list, as returned by getTOC()) defined
+  -->
+<metal:block define-macro="section_collation">
+    <tal:section repeat="section toc">
+        <div tal:define="item      section/item;
+                            itemObj   item/getObject;
+                            itemUrl   itemObj/absolute_url;
+                            body      itemObj/getBody | nothing;
+                            numbering section/numbering;
+                            itemDepth section/depth;
+                            children  section/children;
+                            addImagePaths nocall:context/addImagePaths | nothing;
+                            "
+            tal:attributes="class string:referenceManualCollation depth-${itemDepth}">
+
+            <h1>
+                <span tal:replace="numbering">1.</span>
+                <span tal:replace="item/Title">Section Title</span>
+            </h1>
+
+            <div class="documentDescription" tal:content="item/Description">
+                description
+            </div>
+    
+            <div id="bodyContent" tal:condition="nocall:body">
+                <tal:block condition="nocall:addImagePaths">
+                    <div tal:replace="structure python:addImagePaths(body, itemUrl)" />
+                </tal:block>
+                <tal:block condition="not: nocall:addImagePaths">
+                    <div tal:replace="structure body" />
+                </tal:block>
+            </div>
+
+            <tal:subsections define="toc children"
+                             condition="nocall:children">
+                <metal:recursion use-macro="here/referencemanual_macros/macros/section_collation"/>
+            </tal:subsections>
+
+        </div>        
+    </tal:section>
+</metal:block>
+
+<!-- The navigation bar
+
+    Call this with tocInfo (as returned by getTOCInfo()) defined
+  -->
+<div metal:define-macro="navigation_bar"
+    class="listingBar" 
+    tal:define="nextIdx tocInfo/nextIdx;
+                prevIdx tocInfo/prevIdx;
+                tocList tocInfo/tocList"
+    tal:condition="python: nextIdx or prevIdx"
+    i18n:domain="plonehelpcenter">
+
+    <tal:next condition="nextIdx">
+        <a class="listingNext"
+           tal:define="next python:tocList[nextIdx]['item']" 
+           tal:attributes="href next/getURL"
+           tabindex="1"
+           href="">
+            <span i18n:translate="phc_next">
+               Next:
+            </span>
+            <span tal:replace="next/Title" /> 
+           <img tal:replace="structure here/arrowRight.gif" />
+       </a>   
+    </tal:next>
+       
+    <tal:prev condition="prevIdx">
+        <a class="listingPrevious"
+           tal:define="prev python:tocList[prevIdx]['item']" 
+           tal:attributes="href prev/getURL"
+           tabindex="1"
+           href="">
+            <img tal:replace="structure here/arrowLeft.gif" />
+            <span i18n:translate="phc_previous">
+               Previous:
+            </span>
+            <span tal:replace="prev/Title" /> 
+       </a>   
+    </tal:prev>	       
+	
+    &nbsp;
+</div>
+
+<!-- The "jump to" drop-down box
+    
+    Call this with tocList (as returned in tocInfo returned by getTOCInfo())
+    defined.
+  -->
+<div metal:define-macro="jump_box"
+    class="jumpBox"
+    i18n:domain="plonehelpcenter">
+
+    <form method="get" action="#"
+          tal:attributes="action context/absolute_url">
+        <label for="destination" class="hiddenStructure">Jump to: </label>
+        <select name=":action" tabindex="3"
+                onchange="window.location.href=this.options[this.selectedIndex].value"
+                tal:attributes="tabindex tabindex/next|nothing">
+	    <option value="referencemanual-all-pages"
+		    title="Useful for printing, presentation mode etc.">
+	      All content on one page
+	    </option>
+            <option tal:repeat="tocItem tocList"
+                    tal:attributes="value tocItem/item/getURL;
+                                    selected python:tocItem['currentItem'] and 'selected' or nothing">
+                <span tal:replace="tocItem/numbering"/>
+                <span tal:replace="tocItem/item/Title"/>
+            </option>
+        </select>
+        <noscript>
+            <input class="standalone"
+                   type="submit"
+                   value="Go"
+                   i18n:attributes="value"
+                   tabindex="4"
+                   tal:attributes="tabindex tabindex/next|nothing" />
+        </noscript>
+    </form>
+</div>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanual_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,111 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+
+  <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+
+    <h1 class="documentFirstHeading">
+        <img tal:replace="structure here/referencemanual_icon.gif" />
+        <span tal:replace="here/Title">Title</span>
+    </h1>
+    
+    <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+    <p class="discreet">
+       <span tal:condition="here/getVersionsVocab | nothing" tal:define="versions here/Versions" >
+    <span i18n:translate="phc_referencemanual_applies_to">This Reference Manual applies to:</span>         
+    <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+    <span tal:condition="not: versions">
+      <span i18n:translate="phc_any_version">
+      Any version.
+      </span>
+    </span>
+ </span>
+    <span tal:condition="here/getAudiencesVocab | nothing" tal:define="audiences here/Audiences">
+          <br/>
+         <span i18n:translate="phc_referencemanual_audiences">This Reference Manual is intended for:</span>         
+          <span tal:condition="audiences" tal:replace="audiences">1.0, 2.0</span>
+          <span tal:condition="not: audiences">
+           <span i18n:translate="phc_any_audience">
+           Any audience.
+           </span>
+          </span>
+         </span>
+    </p>
+
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+      Description
+    </div>
+
+    
+    <tal:block define="toc here/getTOC;">
+    
+        <p class="visualNoPrint" tal:condition="nocall:toc">
+          <img tal:replace="structure here/referencemanual_icon.gif" />
+          <a href="referencemanual-all-pages"
+             i18n:translate="all_content_on_one_page">
+            All content on one page (useful for printing, presentation mode etc.)
+          </a>
+        </p>
+    
+        <metal:recursion use-macro="here/referencemanual_macros/macros/section_toc"/>
+            
+        <p tal:condition="not:nocall:toc" class="discreet">
+          <span i18n:translate="view_no_reference_manual1"
+                tal:omit-tag="">There are no pages or sections in this Reference Manual.</span>
+          <tal:block condition="python:user.has_permission('Modify portal content', here)"
+                     i18n:translate="view_no_reference_manual2">
+            Use the 'add new item' menu to add Sections, Pages, Files, or Images.
+            Sections can be nested in an arbitrary depth, but we recommend not
+            using more than three or four levels for good legibility.
+          </tal:block>
+        </p>
+       
+    </tal:block>
+    
+     <tal:block define="items python:here.getFolderContents(contentFilter={'portal_type' : ('File', 'ATFile')})">
+           <fieldset tal:condition="nocall:items">
+               <legend>Attached files</legend>
+               <ul class="visualNoMarker">
+               <tal:related tal:repeat="item items">
+                   <li tal:define="
+                           desc      item/Description;
+                           item_type item/portal_type;
+                           item_type_class python: 'contenttype-' + putils.normalizeString(item_type);
+                           item_wf_state       item/review_state|python: getInfoFor(item, 'review_state', '');
+                           item_wf_state_class python: 'state-' + putils.normalizeString(item_wf_state);
+                           item_url           item/getURL;">
+                       <span tal:attributes="class item_type_class">
+                       <a href="" class="visualIconPadding"
+                           tal:attributes="href  item_url;
+                                           title desc;"
+                           tal:content="item/pretty_title_or_id">
+                           Related Item
+                       </a>
+                       </span>
+                   </li>
+               </tal:related>
+               </ul>
+           </fieldset>
+      </tal:block>
+        
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+</html>
+

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+<metal:folderView use-macro="here/phcfolder_view/macros/master">
+    <img metal:fill-slot="item_icon" 
+        tal:replace="structure here/referencemanual_icon.gif"/>
+</metal:folderView>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualpage_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualpage_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualpage_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,63 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<div metal:fill-slot="main"
+          tal:define="fullToc    python:here.getTOC(current = here);
+                      tocInfo    python:here.getTOCInfo(fullToc);
+                      currentIdx tocInfo/currentIdx;
+                      tocList    tocInfo/tocList;
+                      current    python:tocList[currentIdx];
+                      numbering  current/numbering">
+                   
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+        
+    <h1 class="documentFirstHeading">
+        <img tal:replace="structure here/referencemanual_icon.gif" />
+        <span tal:replace="numbering">1.2.</span>
+        <span tal:replace="here/Title">Title</span>
+    </h1>
+    
+    <a href=""
+           class="link-parent"
+           tal:define="parent_url python:here.navigationParent(here, template.getId())"
+           tal:condition="parent_url"
+           tal:attributes="href parent_url"
+           i18n:domain="plone"
+           i18n:translate="go_to_parent_url">
+        Up one level
+        </a>
+
+    <div metal:use-macro="here/referencemanual_macros/macros/jump_box"/>
+
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+      Description
+    </div>
+    
+    <div class="portalMessage"
+         tal:condition="python:here.portal_workflow.getInfoFor(here, 'review_state') != 'published'"
+         i18n:translate="must_publish_before_visible_to_public">
+      You must publish this page before it becomes visible to the public.
+    </div>
+    
+    <div tal:replace="structure here/getBody"/>
+      
+
+    <div metal:use-macro="here/referencemanual_macros/macros/navigation_bar"/>
+
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualsection_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualsection_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/referencemanualsection_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,70 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main"
+       tal:define="fullToc python:here.getTOC(current = here);
+                   tocInfo python:here.getTOCInfo(fullToc);
+                   toc     tocInfo/localTOC">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+        
+    <h1 class="documentFirstHeading">
+        <img tal:replace="structure here/referencemanual_icon.gif" />
+        <span tal:replace="here/Title">Title</span>
+    </h1>
+    
+    <a href=""
+           class="link-parent"
+           tal:define="parent_url python:here.navigationParent(here, template.getId())"
+           tal:condition="parent_url"
+           tal:attributes="href parent_url"
+           i18n:domain="plone"
+           i18n:translate="go_to_parent_url">
+        Up one level
+        </a>
+    
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+      Description
+    </div>
+
+    <div class="portalMessage"
+         tal:condition="python:here.portal_workflow.getInfoFor(here, 'review_state') != 'published'"
+         i18n:translate="must_publish_before_visible_to_public">
+        You must publish this page before it becomes visible to the public.
+    </div>
+    
+    <p class="visualNoPrint" tal:condition="nocall:toc">
+      <img tal:replace="structure here/referencemanual_icon.gif" />
+      <a href="referencemanual-all-pages">
+      All content on one page (useful for printing, presentation mode etc.)
+      </a>
+    </p>
+
+    <metal:recursion use-macro="here/referencemanual_macros/macros/section_toc"/>
+        
+    <p tal:condition="not:nocall:toc" class="discreet">
+      <span i18n:translate="view_no_reference_manual1" tal:omit-tag="">There are no pages or sections in this Reference Manual.</span>
+      <tal:block condition="python:user.has_permission('Modify portal content', here)"
+                 i18n:translate="view_no_reference_manual2">
+        Use the 'add new item' menu to add Sections, Pages, Files, or Images.
+        Sections can be nested in an arbitrary depth, but we recommend not
+        using more than three or four levels for good legibility.
+      </tal:block>
+    </p>
+       
+    
+    <div metal:use-macro="here/referencemanual_macros/macros/navigation_bar"/>
+
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+  </div>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial-all-pages.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial-all-pages.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial-all-pages.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,54 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<div metal:fill-slot="main">
+
+    <div metal:define-macro="main"
+         tal:define="sibl here/getPages;">
+
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+
+        <h1>
+        <img tal:replace="structure here/tutorial_icon.gif" />
+        <span tal:replace="here/Title" />
+        </h1>
+
+        <p class="discreet visualNoPrint"
+           i18n:translate="view_paginated_pages">
+	  Note: Return to <a href="" tal:attributes="href here/absolute_url">tutorial view</a>.
+        </p>
+
+        <div class="documentDescription" 
+             tal:content="here/getTutorialDescription">
+        Tutorial Description
+        </div>
+
+        <tal:pages repeat="page sibl">
+            <tal:page define="page page/getObject">
+                <h1>
+                    <img tal:replace="structure here/tutorial_icon.gif" />
+                    <span tal:replace="page/title_or_id">Title or id</span>
+                </h1>
+        
+                <div class="documentDescription"
+                     tal:content="page/Description">
+                    description
+                </div>
+            
+                <div id="bodyContent">
+                    <div tal:replace="structure page/getBody" />
+                </div>
+            </tal:page>
+        </tal:pages>
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorial_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,136 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+  lang="en"
+  metal:use-macro="here/main_template/macros/master"
+  i18n:domain="plonehelpcenter">
+
+<body>
+  <div metal:fill-slot="main">
+
+    <div metal:use-macro="here/document_actions/macros/document_actions">
+      Document actions (print, sendto etc)
+    </div>
+
+    <h1 class="documentFirstHeading">
+        <img tal:replace="structure here/tutorial_icon.gif" />
+        <span tal:replace="here/Title">Title</span>
+    </h1>
+    
+    <div tal:condition="here/isOutdated" i18n:translate="phc_warning_outdated" class="portalMessage">
+           Warning: This item is marked as outdated.
+        </div>
+        <p class="discreet">
+            <span tal:condition="here/getVersionsVocab" tal:define="versions here/Versions">
+        	<span i18n:translate="phc_tutorial_applies_to">This Tutorial applies to:</span>         
+            <span tal:condition="versions" tal:replace="versions">1.0, 2.0</span>
+            <span tal:condition="not: versions">
+        	  <span i18n:translate="phc_any_version">
+        	  Any version.
+        	  </span>
+            </span>
+            </span>
+            <span tal:condition="here/getAudiencesVocab" tal:define="audiences here/Audiences">
+                <br/>
+                <span i18n:translate="phc_tutorial_audiences">This Tutorial is intended for:</span>         
+                <span tal:condition="audiences" tal:replace="audiences">1.0, 2.0</span>
+                <span tal:condition="not: audiences">
+                   <span i18n:translate="phc_any_audience">
+                     Any audience.
+                   </span>
+                </span>
+            </span>
+        </p>
+
+    <div class="documentDescription"
+      tal:condition="here/Description"
+      tal:content="structure here/Description">
+      Description
+    </div>
+
+    <div class="tutorialAbout"
+         tal:define="portrait python: mtool.getPersonalPortrait(here.Creator());"
+	 tal:condition="python: site_properties.allowAnonymousViewAbout or not isAnon">
+    
+        <div style="text-align: center;">
+            <img src=""
+                 alt=""
+                 class="portraitPhoto"
+                 width="75"
+                 height="100"
+                 tal:attributes="src portrait/absolute_url" />
+        </div>
+              
+        <p tal:define="creator here/Creator;
+                       author python:mtool.getMemberInfo(creator)">
+            <a href="#"
+               tal:attributes="href string:${portal_url}/author/${creator}"
+               tal:content="python:author and author['fullname'] or creator"
+               tal:omit-tag="not:author">
+                Bob Dobalina
+            </a>
+        </p>                
+    </div>
+    
+    <p class="visualNoPrint" tal:condition="nocall:here/getPages">
+      <img tal:replace="structure here/tutorial_icon.gif" />
+      <a href="tutorial-all-pages"
+         i18n:translate="all_content_on_one_page">
+        All content on one page (useful for printing, presentation mode etc.)
+      </a>
+    </p>
+
+    <ol tal:condition="here/getPages">
+         <li tal:repeat="page here/getPages">
+            <a tal:attributes="href page/getURL">
+               <span tal:attributes="class string:state-${page/review_state}" 
+                     tal:content="page/Title" /></a>
+            <span tal:replace="page/Description">Description</span>
+         </li>
+    </ol>
+    
+    <p tal:condition="not:here/getPages" class="discreet">
+      There are no pages in this Tutorial. 
+      <span tal:condition="python:member.has_permission('Modify portal contents', here)">
+        Use the 'add new item' menu to add Tutorial Pages, Files, or Images.
+      </span>
+    </p>
+    
+     <tal:block define="items python:here.getFolderContents(contentFilter={'portal_type' : ('File', 'ATFile')})">
+           <fieldset tal:condition="nocall:items">
+               <legend>Attached files</legend>
+               <ul class="visualNoMarker">
+               <tal:related tal:repeat="item items">
+                   <li tal:define="
+                           desc      item/Description;
+                           item_type item/portal_type;
+                           item_type_class python: 'contenttype-' + putils.normalizeString(item_type);
+                           item_wf_state       item/review_state|python: getInfoFor(item, 'review_state', '');
+                           item_wf_state_class python: 'state-' + putils.normalizeString(item_wf_state);
+                           item_url           item/getURL;">
+                       <span tal:attributes="class item_type_class">
+                       <a href="" class="visualIconPadding"
+                           tal:attributes="href  item_url;
+                                           title desc;"
+                           tal:content="item/pretty_title_or_id">
+                           Related Item
+                       </a>
+                       </span>
+                   </li>
+               </tal:related>
+               </ul>
+           </fieldset>
+      </tal:block>
+      
+     
+    <div class="visualClear">&nbsp;</div>
+        
+    <div metal:use-macro="here/helpcenter_references/macros/view_referenced_items">
+      see also - shows the references if this feature is switched on
+    </div>
+    <div metal:use-macro="here/document_byline/macros/byline">
+      Get the byline - contains details about author and modification date.
+    </div>
+    
+
+  </div>
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialfolder_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialfolder_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialfolder_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,4 @@
+<metal:folderView use-macro="here/phcfolder_view/macros/master">
+    <img metal:fill-slot="item_icon" 
+        tal:replace="structure here/tutorial_icon.gif"/>
+</metal:folderView>
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialpage_view.pt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialpage_view.pt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/tutorialpage_view.pt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,153 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+      lang="en"
+      metal:use-macro="here/main_template/macros/master"
+      i18n:domain="plonehelpcenter">
+
+<body>
+
+<div metal:fill-slot="main">
+
+    <div metal:define-macro="main"
+         tal:define="len_text python:len(here.getBody());
+                     sibl     python:[p for p in here.getPages()];
+                     num_sibl python:len(sibl);
+                     pos      python:here.getPagePosition(here);">
+      
+        <div metal:use-macro="here/document_actions/macros/document_actions">
+            Document actions (print, sendto etc)
+        </div>
+
+        <h1 class="documentFirstHeading">
+            <img tal:replace="structure here/tutorial_icon.gif" />
+            <span tal:replace="here/title_or_id">Title or id</span>
+        </h1>
+    
+        <div class="jumpBox">
+          <form method="get" action="#" style="text-align:right; float: right;">
+            <label for="destination" class="hiddenStructure">Jump to:</label>
+            <select name=":action" tabindex="3"
+                    onchange="window.location.href=this.options[this.selectedIndex].value"
+                    tal:attributes="tabindex tabindex/next|nothing">
+	        <option value="tutorial-all-pages"
+			title="Useful for printing, presentation mode etc.">
+		  All content on one page
+		</option>
+                <option tal:repeat="s sibl"
+                        tal:attributes="value s/getId;
+                         selected python:s.getId == here.getId () and 'selected' or nothing;">
+                    Part <tal:index replace="repeat/s/number" />:
+                    <tal:page content="s/Title">Some Page</tal:page>
+                </option>
+            </select>
+            <noscript>
+                <input class="standalone"
+                       type="submit"
+                       value="Go"
+                       i18n:attributes="value"
+                       tabindex="4"
+                       tal:attributes="tabindex tabindex/next|nothing" />
+            </noscript>
+          </form>
+        </div>
+
+        <div class="documentDescription"
+             tal:content="here/Description">
+            description
+        </div>
+        
+        <div class="portalMessage" tal:condition="python:here.portal_workflow.getInfoFor(here, 'review_state') != 'published'">
+           You must publish this page before it becomes visible to the public.
+        </div>
+
+        <p class="discreet"
+           tal:condition="python: not len_text and is_editable"
+           i18n:domain="plone"
+           i18n:translate="no_body_text">
+            This item does not have any body text, click the edit tab to change it.
+        </p>
+    
+        <div class="tutorialAbout"
+             tal:define="portrait python: mtool.getPersonalPortrait(here.Creator());">
+        
+	  <tal:byline
+	      tal:condition="python: site_properties.allowAnonymousViewAbout or not isAnon">
+            <div style="text-align: center;">
+                <img src=""
+                     alt=""
+                     class="portraitPhoto"
+                     width="75"
+                     height="100"
+                     tal:attributes="src portrait/absolute_url" />
+            </div>
+
+            <tal:name tal:condition="here/Creator"
+                tal:define="creator here/Creator;
+                            author python:mtool.getMemberInfo(creator)">
+            <p>
+              <a href="#"
+                 tal:attributes="href string:${portal_url}/author/${creator}"
+                 tal:content="python:author and author['fullname'] or creator"
+                 tal:omit-tag="not:author">
+                Bob Dobalina
+              </a>
+            </p>                    
+            </tal:name>
+	  </tal:byline>
+            
+            <div tal:content="here/getTutorialDescription">
+            Tutorial Description
+            </div>
+            
+            <div>
+          <span i18n:translate="phc_page">
+          Page </span>
+          <span tal:replace="python:pos+1">5</span>
+          <span i18n:translate="phc_of">
+          of </span>
+          <span tal:replace="python:num_sibl">10</span>.
+            </div>
+        </div>
+
+        <div id="bodyContent">
+            <div tal:replace="structure python:here.getBody()" />
+        </div>
+    
+        <div class="listingBar" tal:condition="python: next or prev"
+          tal:define="next python:pos &lt; num_sibl-1 and sibl[pos+1];
+               prev python:pos != 0 and sibl[pos-1]"
+               >
+            <a class="listingNext"
+               tal:condition="python:next"
+               tal:attributes="href next/getURL"
+               tabindex="1"
+               href="">
+           <span i18n:translate="phc_next">
+               Next: </span>
+           <span tal:replace="next/Title" /> 
+           <img tal:replace="structure here/arrowRight.gif" />
+           </a>
+            <a class="listingPrevious"
+               tal:condition="python:prev"
+               tal:attributes="href prev/getURL"
+               tabindex="1"
+               href="">
+               <img tal:replace="structure here/arrowLeft.gif" />
+           <span i18n:translate="phc_previous">
+            Previous: </span>
+        <span tal:replace="prev/Title" />
+        </a>
+               &nbsp;
+        </div>
+
+        <div class="visualClear">&nbsp;</div>
+
+        <div metal:use-macro="here/document_byline/macros/byline">
+          Get the byline - contains details about author and modification date.
+        </div>    
+
+    </div>
+
+</div>
+
+</body>
+</html>

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/updateStaleItems.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/updateStaleItems.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center/updateStaleItems.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,10 @@
+## Script (Python) "updateStaleItems"
+##title=Update stale-items portlet, then refresh
+##parameters=newInterval
+
+# Stash newInterval (as 'stale_PHC_items_interval' in a session variable,
+# then reload the current page
+session=context.REQUEST.SESSION
+session['stale_PHC_items_interval']=newInterval
+
+return context.REQUEST.RESPONSE.redirect(context.absolute_url())

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_component_zope3.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_component_zope3.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_content_management.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_content_management.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_definitive_guide.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_definitive_guide.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_dive_into.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_dive_into.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_live.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_live.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_pro_plone.png
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_pro_plone.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_python_absolute_beginner.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/book_python_absolute_beginner.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/books.jpg
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/books.jpg
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Section
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/chapter_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Error
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/errorref_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=FAQ
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/faq_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Glossary
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/glossary_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Help Center
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helpcenter_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Link
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/helplink_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=How-to
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/howto_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Movie
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_blue.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_blue.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_plone.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/movie_icon_plone.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/phc_star.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/phc_star.gif
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/referencemanual_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Reference manual
+cache=HTTPCache

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/speakplone_sm.png
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/speakplone_sm.png
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif
___________________________________________________________________
Added: svn:executable
   + *
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif.metadata
===================================================================
--- gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif.metadata	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif.metadata	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,3 @@
+[default]
+title=Tutorial
+cache=HTTPCache


Property changes on: gzo/trunk/products/PloneHelpCenter/skins/plone_help_center_images/tutorial_icon.gif.metadata
___________________________________________________________________
Added: svn:executable
   + *

Added: gzo/trunk/products/PloneHelpCenter/tests/CustomSetup.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/CustomSetup.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/CustomSetup.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,167 @@
+from zLOG import INFO
+from Products.Archetypes.utils import OrderedDict
+import Data
+
+def CreateRootPHC( self, portal ):
+    self.setRoles(('Manager',))
+    portal.invokeFactory( 'HelpCenter', Data.Hc.Id)
+    helpCenter = getattr( portal, Data.Hc.Id )
+    helpCenter.setTitle(Data.Hc.Title)
+    helpCenter.setDescription(Data.Hc.Desc)
+    helpCenter.setVersionsVocab(Data.Hc.Versions)
+    helpCenter.setSectionsVocab(Data.Hc.Sections)
+    portal.portal_workflow.doActionFor( helpCenter, Data.Transition.publish )
+    helpCenter.howto = getattr(helpCenter, "how-to")
+    helpCenter.howto.sectionsVocab = Data.HowtoFolder.Sections
+    helpCenter.tutorial.sectionsVocab = Data.TutorialFolder.Sections
+    helpCenter.faq.sectionsVocab = Data.FAQFolder.Sections
+    self.setRoles(('Member',))
+    return "Created a PHC instance in the root of your Plone site."
+
+def CreateAltPHC( self, portal ):
+    self.setRoles(('Manager',))
+    portal.invokeFactory( 'HelpCenter', Data.AltHc.Id)
+    altHelpCenter = getattr( portal, Data.AltHc.Id )
+    altHelpCenter.setTitle(Data.AltHc.Title)
+    altHelpCenter.setDescription(Data.AltHc.Desc)
+    altHelpCenter.setVersionsVocab(Data.AltHc.Versions)
+    portal.portal_workflow.doActionFor( altHelpCenter, Data.Transition.publish )
+    altHelpCenter.howto = getattr(altHelpCenter, "how-to")
+    altHelpCenter.howto.sectionsVocab = Data.HowtoFolder.Sections
+    altHelpCenter.tutorial.sectionsVocab = Data.TutorialFolder.Sections
+    altHelpCenter.faq.sectionsVocab = Data.FAQFolder.Sections
+    self.setRoles(('Member',))
+    return "Created an alternate PHC instance in the root of your Plone site."
+
+def CreateUsers( self, portal ):
+    i = 0
+    for user in Data.User.list:
+        portal.portal_membership.addMember( user.Id, user.Password, user.Roles, [] )
+        i += 1
+    return "Created %d test users" % i
+
+def CreateTutorials( self, portal ):
+    self.setRoles(('Manager',))
+    i = 0
+    helpCenter = getattr( portal, Data.Hc.Id )
+    for content in Data.Tutorial.list:
+        helpCenter.tutorial.invokeFactory( 'HelpCenterTutorial', content.Id)
+        newTutorial = getattr( helpCenter.tutorial, content.Id )
+        newTutorial.setTitle(content.Title)
+        newTutorial.setDescription(content.Summary)
+        newTutorial.setVersions(content.Versions)
+        newTutorial.setSections(content.Sections)
+        # portal.plone_utils.changeOwnershipOf( newTutorial, content.Owner.Id, 1 )
+        # Attach pages to the tutorial.
+        for page in content.Pages:
+            newTutorial.invokeFactory( 'HelpCenterTutorialPage', page.Id)
+            newPage = getattr( newTutorial, page.Id )
+            newPage.setTitle(page.Title)
+            newPage.setDescription(page.Summary)
+            newPage.setBody(page.Body)
+            portal.plone_utils.editMetadata( newPage, format=page.Format )
+            # Each page should be owned by the same owner as the tutorial owner
+            # portal.plone_utils.changeOwnershipOf( newPage, content.Owner.Id, 1 )
+            if page.Transition:
+                portal.portal_workflow.doActionFor( newPage, page.Transition )
+        # Update the tutorial's workflow state
+        if content.Transition:
+            portal.portal_workflow.doActionFor( newTutorial, content.Transition )
+
+        i += 1
+    self.setRoles(('Member',))
+    return "Created %d PHC Tutorials." % i
+
+def CreateHowtos( self, portal ):
+    self.setRoles(('Manager',))
+    i = 0
+    helpCenter = getattr( portal, Data.Hc.Id )
+    for content in Data.Howto.list:
+        helpCenter.howto.invokeFactory( 'HelpCenterHowTo', content.Id)
+        newHowto = getattr( helpCenter.howto, content.Id )
+        newHowto.setTitle(content.Title)
+        newHowto.setDescription(content.Summary)
+        newHowto.setBody(content.Body)
+        newHowto.setVersions(content.Versions)
+        newHowto.setSections(content.Sections)
+        portal.plone_utils.editMetadata( newHowto, format=content.Format )
+        newHowto.reindexObject()
+        # portal.plone_utils.changeOwnershipOf( newHowto, content.Owner.Id, 1 )
+        if content.Transition:
+            portal.portal_workflow.doActionFor( newHowto, content.Transition )
+        i += 1
+    return "Created %d PHC Howtos." % i
+
+def CreateFaqs( self, portal, alt=False ):
+    self.setRoles(('Manager',))
+    i = 0
+    if alt:
+        helpCenter = getattr( portal, Data.AltHc.Id )
+    else:
+        helpCenter = getattr( portal, Data.Hc.Id )
+    
+    for content in Data.FAQ.list:
+        helpCenter.faq.invokeFactory( 'HelpCenterFAQ', content.Id)
+        newFaq = getattr( helpCenter.faq, content.Id )
+        newFaq.setTitle(content.Title)
+        newFaq.setDescription(content.Question)
+        newFaq.setAnswer(content.Answer)
+        newFaq.setVersions(content.Versions)
+        newFaq.setSections(content.Sections)
+        newFaq.reindexObject()
+        #portal.plone_utils.editMetadata( newFaq, format=content.Format )
+        #portal.plone_utils.changeOwnershipOf( newFaq, content.Owner.Id, 1 )
+        if content.Transition:
+            portal.portal_workflow.doActionFor( newFaq, content.Transition )
+        i += 1
+    self.setRoles(('Member',))
+    return "Created %d PHC FAQs." % i
+
+
+def CreateErrorRefs( self, portal ):
+    i = 0
+    return "Created %d PHC Error References." % i
+
+def CreateDefinitions( self, portal ):
+    i = 0
+    return "Created %d PHC Definitions." % i
+
+def CreateLinks( self, portal ):
+    i = 0
+    return "Created %d PHC Links." % i
+
+def CreateReferenceManuals( self, portal ):
+    i = 0
+    return "Created %d PHC ReferenceManuals." % i
+
+def CreateVideos( self, portal ):
+    i = 0
+    # See CMFPlone/tests/dummy.py for faking a FileField
+    return "Created %d PHC Videos." % i
+
+def CreateTestData( self, portal ):
+    out = []
+    out.append( CreateRootPHC( self, portal ) )
+    out.append( CreateUsers( self, portal ) ) 
+    out.append( CreateHowtos( self, portal ) )
+    out.append( CreateTutorials( self, portal ) )
+    out.append( CreateFaqs( self, portal ) )
+    out.append( CreateErrorRefs( self, portal ) )
+    out.append( CreateDefinitions( self, portal ) )
+    out.append( CreateLinks( self, portal ) )
+    out.append( CreateReferenceManuals( self, portal ) )
+    out.append( CreateVideos( self, portal ) )
+    return '  \n'.join( out )
+
+functions = OrderedDict()
+functions['Create Test Data'] = CreateTestData
+functions['Create Test Users'] = CreateUsers
+functions['Create Test PloneHelpCenter'] = CreateRootPHC
+functions['Create Test Tutorials'] = CreateTutorials
+functions['Create Test Howtos'] = CreateHowtos
+functions['Create Test FAQs'] = CreateFaqs
+functions['Create Test Error References'] = CreateReferenceManuals
+functions['Create Test Definitions'] = CreateDefinitions
+functions['Create Test Links'] = CreateLinks
+functions['Create Test Reference Manuals'] = CreateReferenceManuals
+functions['Create Test Videos'] = CreateVideos

Added: gzo/trunk/products/PloneHelpCenter/tests/Data.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/Data.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/Data.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,1838 @@
+"""A module to hold the data that will be used to create PloneHelpCenter
+content objects.  I'm not sure whether I can depend on relative file paths,
+so we store the data in a Python module where I'm sure that it can be
+imported by other modules in the same Python package.
+"""
+
+class PropertyHolder:
+    """A dummy struct-like class for holding properties"""
+    pass
+
+# HelpCenter folderish object ----------------------------------------
+Hc = PropertyHolder()
+Hc.Id = 'hc'
+Hc.Title = 'Test Help Center'
+Hc.Desc = 'A help center instance for functional testing of PHC.'
+Hc.Versions = ('Version 1.0', 'Version 2.0', 'Different Version 1.0')
+Hc.Sections =  ('Topic1', 'Topic1: Section1', 'Topic1: Section2 - \xc3\xa1'.decode('utf8'), 'Topic2', 'Topic2: Section1', 'Topic2: Section2')
+
+# Alternate HelpCenter folderish object ----------------------------------------
+AltHc = PropertyHolder()
+AltHc.Id = 'althc'
+AltHc.Title = 'Alternate Test Help Center'
+AltHc.Desc = 'An alternate help center instance for functional testing of PHC.'
+AltHc.Versions = ('Version 1.0', 'Version 2.0', 'Different Version 1.0')
+
+# Transitions  -------------------------------------------------------
+Transition = PropertyHolder()
+Transition.publish = 'publish'
+Transition.submit = 'submit'
+Transition.obsolete = 'mark_obsolete'
+
+# Users --------------------------------------------------------------
+User1 = PropertyHolder()
+User1.Id = 'tester1'
+User1.Password = 'tester1'
+User1.Roles = ['Member',]
+
+User2 = PropertyHolder()
+User2.Id = 'tester2'
+User2.Password = 'tester2'
+User2.Roles = ['Member',]
+
+User3 = PropertyHolder()
+User3.Id = 'test_manager'
+User3.Password = 'test_manager'
+User3.Roles = ['Member','Manager',]
+
+User4 = PropertyHolder()
+User4.Id = 'test_reviewer'
+User4.Password = 'test_reviewer'
+User4.Roles = ['Member','Reviewer',]
+
+User = PropertyHolder()
+User.list = [User1, User2, User3, User4]
+
+# HowtoFolder settings -----------------------------------------------
+HowtoFolder = PropertyHolder()
+HowtoFolder.Sections = ('Topic1: Section1', 'Topic1: Section2 - \xc3\xa1'.decode('utf8'), 'Topic2: Section1', 'Topic2: Section2', 'General')
+
+# TutorialFolder settings --------------------------------------------
+TutorialFolder = PropertyHolder()
+TutorialFolder.Sections = ('Topic1: Section1', 'Topic1: Section2 - \xc3\xa1'.decode('utf8'), 'Topic2: Section1', 'Topic2: Section2')
+
+# FAQFolder settings --------------------------------------------
+FAQFolder = PropertyHolder()
+FAQFolder.Sections = ('General', 'FAQ Section1', 'FAQ - \xc3\xa1 - Section2'.decode('utf8') )
+
+# ErrorReferenceFolder settings --------------------------------------------
+ErrorReferenceFolder = PropertyHolder()
+ErrorReferenceFolder.Sections = ('General', 'Error Ref Section1 - \xc3\xa1'.decode('utf8') )
+
+# Glossary settings --------------------------------------------
+Glossary = PropertyHolder()
+Glossary.Sections = ('General', )
+
+# LinkFolder settings --------------------------------------------
+LinkFolder = PropertyHolder()
+LinkFolder.Sections = ('General', 'Link Section1', 'Link Section2 - \xc3\xa1'.decode('utf8'), 'Link Section3' )
+
+# ReferenceManualFolder settings --------------------------------------------
+ReferenceManualFolder = PropertyHolder()
+ReferenceManualFolder.Sections = ('Topic1: Section1', 'Topic1: Section2 - \xc3\xa1'.decode('utf8'), 'Topic2: Section1', 'Topic2: Section2')
+
+# VideoFolder settings --------------------------------------------
+VideoFolder = PropertyHolder()
+VideoFolder.Sections = ('General', )
+
+# Sample Howto content 1 ---------------------------------------------
+Howto1 = PropertyHolder()
+Howto1.Id = 'howto1'
+Howto1.Title = 'Test Howto 1'
+Howto1.Summary = 'A sample Howto for functional testing of PloneHelpCenter.  A howto that is published; only in one section.'
+Howto1.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is only
+attached to one Section.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto1.Format = 'text/x-rst'
+Howto1.Versions = ( Hc.Versions[1], )
+Howto1.Sections = ( HowtoFolder.Sections[1], )
+Howto1.Transition = Transition.publish
+Howto1.Owner = User1
+
+# Sample Howto content 2 ---------------------------------------------
+Howto2 = PropertyHolder()
+Howto2.Id = 'howto2'
+Howto2.Title = 'Test Howto 2'
+Howto2.Summary = 'A howto that is published in two sections'
+Howto2.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is 
+attached to two Howto Sections.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto2.Format = 'text/x-rst'
+Howto2.Versions = ( Hc.Versions[1], )
+Howto2.Sections = ( HowtoFolder.Sections[1], HowtoFolder.Sections[2], )
+Howto2.Transition = Transition.publish
+Howto2.Owner = User1
+
+# Sample Howto content 3 ---------------------------------------------
+Howto3 = PropertyHolder()
+Howto3.Id = 'howto3'
+Howto3.Title = 'Test Howto 3'
+Howto3.Summary = 'A howto that is published in one section by a different owner than howto1.'
+Howto3.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is only
+attached to one Section.  It should be owned by a different user than
+howto1.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto3.Format = 'text/x-rst'
+Howto3.Versions = ( Hc.Versions[1], )
+Howto3.Sections = ( HowtoFolder.Sections[1], )
+Howto3.Transition = Transition.publish
+Howto3.Owner = User2
+
+# Sample Howto content 4 ---------------------------------------------
+Howto4 = PropertyHolder()
+Howto4.Id = 'howto4'
+Howto4.Title = 'Test Howto 4'
+Howto4.Summary = 'A howto that is in-progress in one section'
+Howto4.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe in-progress state and is only
+attached to one Section.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto4.Format = 'text/x-rst'
+Howto4.Versions = ( Hc.Versions[1], )
+Howto4.Sections = ( HowtoFolder.Sections[1], )
+Howto4.Transition = None
+Howto4.Owner = User1
+
+# Sample Howto content 5 ---------------------------------------------
+Howto5 = PropertyHolder()
+Howto5.Id = 'howto5'
+Howto5.Title = 'Test Howto 5'
+Howto5.Summary = 'A howto that is in-progress in two sections'
+Howto5.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe in-progress state and is 
+attached to two Howto Sections.  It is also owned by a different user
+than the other test howto that is in-progress.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto5.Format = 'text/x-rst'
+Howto5.Versions = ( Hc.Versions[1], )
+Howto5.Sections = ( HowtoFolder.Sections[1], HowtoFolder.Sections[2], )
+Howto5.Transition = None
+Howto5.Owner = User2
+
+# Sample Howto content 6 ---------------------------------------------
+Howto6 = PropertyHolder()
+Howto6.Id = 'howto6'
+Howto6.Title = 'Test Howto 6'
+Howto6.Summary = 'A howto that is pending review in one section'
+Howto6.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts in the pending state and is only
+attached to one Section.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto6.Format = 'text/x-rst'
+Howto6.Versions = ( Hc.Versions[1], )
+Howto6.Sections = ( HowtoFolder.Sections[1], )
+Howto6.Transition = Transition.submit
+Howto6.Owner = User1
+
+# Sample Howto content 7 ---------------------------------------------
+Howto7 = PropertyHolder()
+Howto7.Id = 'howto7'
+Howto7.Title = 'Test Howto 7'
+Howto7.Summary = 'A howto that is published in (a different) one section'
+Howto7.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is only
+attached to one Section.  The section is different from the section
+to which howto1 is attached.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto7.Format = 'text/x-rst'
+Howto7.Versions = ( Hc.Versions[1], )
+Howto7.Sections = ( HowtoFolder.Sections[2], )
+Howto7.Transition = Transition.publish
+Howto7.Owner = User1
+
+# Sample Howto content 8 ---------------------------------------------
+Howto8 = PropertyHolder()
+Howto8.Id = 'howto8'
+Howto8.Title = 'Test Howto 8'
+Howto8.Summary = 'A howto that is published in (a different) one section by a different owner than howto7.'
+Howto8.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is only
+attached to one Section.  The section is different from the section
+to which howto1 is attached.  It is owned by a different user from howto7.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto8.Format = 'text/x-rst'
+Howto8.Versions = ( Hc.Versions[1], )
+Howto8.Sections = ( HowtoFolder.Sections[2], )
+Howto8.Transition = Transition.publish
+Howto8.Owner = User2
+
+# Sample Howto content 9 ---------------------------------------------
+Howto9 = PropertyHolder()
+Howto9.Id = 'howto9'
+Howto9.Title = 'Test Howto 9'
+Howto9.Summary = 'A howto that is in-progress in (a different) one section'
+Howto9.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe in-progress state and is only
+attached to one Section.  The section is different from the section
+to which howto1 is attached.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto9.Format = 'text/x-rst'
+Howto9.Versions = ( Hc.Versions[1], )
+Howto9.Sections = ( HowtoFolder.Sections[2], )
+Howto9.Transition = None
+Howto9.Owner = User1
+
+# Sample Howto content 10 --------------------------------------------
+Howto10 = PropertyHolder()
+Howto10.Id = 'howto10'
+Howto10.Title = 'Test Howto 10'
+Howto10.Summary = 'A howto that is published in a third section'
+Howto10.Body = '''
+============
+Howto Title
+============
+
+.. _Plone: http://www.plone.org/
+
+This howto is a document that starts inthe published state and is only
+attached to one Section.  The section is different from the section used
+by howto1 or the section used by howto7.
+The rest of the content below this description was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+Section 1
+=========
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone_ Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+
+
+Section 2
+=========
+
+How to get a local copy of code for a Product from the Plone_ Collective.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone_ Product.  See the list of 
+folders in the CVS web interface for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you wouldd replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone_ Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you wouldd replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+End of test document content.
+'''
+Howto10.Format = 'text/x-rst'
+Howto10.Versions = ( Hc.Versions[1], )
+Howto10.Sections = ( HowtoFolder.Sections[0], )
+Howto10.Transition = Transition.publish
+Howto10.Owner = User1
+
+
+# Sample Howto content -----------------------------------------------
+Howto = PropertyHolder()
+Howto.list = [ Howto1, Howto2, Howto3, Howto4, Howto5, Howto6, Howto7, Howto8, Howto9, Howto10 ]
+
+# Sample Tutorial Page content ---------------------------------------
+Page1 = PropertyHolder()
+Page1.Id = 'page1'
+Page1.Title = 'Sample Tutorial Page1'
+Page1.Summary = 'This tutorial page simply serves as sample content for the tutorial.'
+Page1.Body = '''
+Section 1
+=========
+
+The rest of the content below this point was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+This document was spawned from conversations on the #plone IRC channel. 
+A new version of the PloneHelpCenter from the Plone Collective was 
+undergoing testing, but some developers wanted to start working on brand 
+new code.  The danger was that the new code would delay the deployment 
+of some of the much-needed bug fixes and changes that were almost ready 
+for deployment on plone.org.  The obivous choice was to create a branch, 
+but no one seemed comfortable enough with CVS to make a branch.  I 
+volunteered to make a minimal HOWTO that would explain the essential 
+CVS commands for getting day to day work done, up to and including 
+creating branches and merging code between branches.
+
+I assume that you are familiar with revision control in general and
+have CVS client software installed and working.  We just provide a
+quick explanation of the most common commands that you will need.  While
+there are some great CVS GUIs (Win CVS, Tortois CVS, Cervisia, etc.),
+I will only cover the cvs command line here.  
+
+Please see the end of this document for links to more complete CVS 
+documentation and to some useful CVS tools.
+
+General syntax
+--------------
+
+CVS command line syntax looks like this::
+
+    cvs [global-options] command [command-options] [command-arguments]
+
+The ``command`` is one of the CVS commands, such as checkout, update, or
+commit.  To see a brief list of the available commands, use the
+following option::
+
+    cvs --help-commands 
+
+The ``global-options`` are the same for all commands.  Each command has 
+a different set of ``command-options`` and ``command-arguments``.
+
+The most common ``global-options`` are listed here for later reference.
+
+``-d``
+    specifies the root of the CVS tree and possibly also identifies a 
+    remote repository, account name, and connection method for the 
+    remote repository; overrides the CVSROOT environment variable; 
+    generally only used with the checkout command (after that, cvs 
+    reads this information from the CVS/Root file in your personal 
+    copy of the files)
+``-n``
+    do not execute anything that would change the disk; for many commands, 
+    this options shows what would be done, but does not actually do it
+``-z``
+    specifies a compression level for network traffic; recommended for 
+    remote repositories
+'''
+Page1.Format = 'text/x-rst'
+Page1.Transition = Transition.publish
+
+# Sample Tutorial Page content ---------------------------------------
+Page2 = PropertyHolder()
+Page2.Id = 'page2'
+Page2.Title = 'Sample Tutorial Page2'
+Page2.Summary = 'More sample content for the tutorial.'
+Page2.Body = '''
+Initial Checkout
+================
+
+The rest of the content below this point was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+The CVS command to get a local working copy of code from a central CVS 
+repository is ``checkout``.  This command is normally abbreviated as ``co``.
+This command will give you a copy of all of the files of a directory 
+tree on your machine.  This local copy is sometimes called your 
+sandbox (you get to play in your sandbox).  A checkout works on a module, 
+which will just be a top-level folder in the Collective for our purposes.
+
+
+You just want the latest version of a Product
+---------------------------------------------
+
+If you do not need to develop or modify code, you can use anonymous 
+check out from SourceForge.  An anonymous checkout permits you to 
+get and update a local copy of the code in CVS.  You do not need a 
+SourceForge account.  You can also make local changes and view the 
+diffs between your local code and the repository code.  You will be 
+unable to submit your changes.  See also the Collective CVS page.
+
+Enter the following line command exactly as written.  When prompted for a 
+password, just press enter:: 
+
+    cvs -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective login
+
+Once you are logged into the pserver, you can checkout (co) the Product 
+you need.  For the next command, you will need to replace *modulename* 
+with the name of the module you want to checkcout.   The *modulename* is 
+generally the top level folder for a Plone Product.  See the list of 
+folders in the CVS web interfoce for the Collective.  For example, if you 
+wanted a copy of PloneHelpCenter, you would replace *modulename* with the 
+word ``PloneHelpCenter``::
+
+    cvs -z3 -d:pserver:anonymous at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+
+
+You want to do development work on a Product
+--------------------------------------------
+
+Anonymous checkout does not permit you to commit changes to a Product 
+in the Collective.  If you need to modify and submit code to the 
+Collective, you will need to get an account on SourceForge.  Once 
+you have that account, someone will need to add you to the list of 
+developers for the Plone Collective project on SourceForge.  You 
+will  be checking out code over a secure SSH tunnel.  SourceForge 
+provides decent documentation concerning configuration of client 
+software for accessing their CVS repositories over SSH.
+
+The command to checkout code for development follows.  Remember to replace 
+*developername* with your name and *modulename* with the folder of code 
+you want.  For example, if you wanted to check out a copy of 
+PloneHelpCenter, you would replace *modulename* with the word 
+``PloneHelpCenter``::
+ 
+    cvs -z3 -d:ext:developername at cvs.sourceforge.net:/cvsroot/collective co -P modulename
+'''
+Page2.Format = 'text/x-rst'
+Page2.Transition = Transition.publish
+
+# Sample Tutorial Page content ---------------------------------------
+Page3 = PropertyHolder()
+Page3.Id = 'page3'
+Page3.Title = 'Sample Tutorial Page3'
+Page3.Summary = 'Yet more sample content.  Somebody move that developer to the QA team!'
+Page3.Body = '''
+Related links
+=============
+
+The rest of the content below this point was basically stolen from
+the CVS tutorial on Plone.org just to give us a non-trivial document.
+It is one of the few reStructured Text documents for which I have the
+source format.
+
+This cheatsheet used a command line interface to CVS since it is easy
+to explain and consistent across multiple platforms.  While some
+operations may continue to be easier from the command line, even some
+of us who generally prefer the command line like to use a graphical
+CVS client when browsing file histories and looking at diffs between
+revisions.  
+
+http://www.wincvs.org/
+    An excellent starting point for CVS and GUIs.  Links to multiple
+    CVS client and visual diff GUIs for various platforms.
+http://www.tortoisecvs.org/
+    Recommended by multiple Plone developers who develop on Windows.
+    This plugin enables CVS operations directly from Microsoft Windows
+    file explorer. 
+http://www.kde.org/apps/cervisia/
+    I generally use Cervisia when I want a CVS client other than the
+    command line or Emacs PCL-CVS mode under KDE on my Linux machines.
+
+Hey, all of this CVS stuff is fascinating, right?  If you were one
+of the two people who did not just fall out of your chair laughing,
+then here are some links to get you started learning more.  Until
+everyone stops using CVS in favor of some other revision control
+software, there will be a need for developers who have a thorough
+knowledge of CVS.  (Not everyone is content to be a faker!)
+
+http://cvsbook.red-bean.com/ 
+    My favorite CVS books.  Very practical.  Lots of "best practices"
+    advice.  Also available in print.
+https://www.cvshome.org/  
+    The official home for all things CVS.
+https://www.cvshome.org/docs/manual/ 
+    The official CVS Manual originally by Per Cederqvist.
+http://www.cmcrossroads.com/bradapp/acme/
+    A nice starting point for SCM information in general, including 
+    links to software other than CVS (Subversion, Perforce, ClearCase, etc.)
+'''
+Page3.Format = 'text/x-rst'
+Page3.Transition = None
+
+# Sample Tutorial content 1 ------------------------------------------
+Tutorial1 = PropertyHolder()
+Tutorial1.Id = 'tutorial1'
+Tutorial1.Title = 'Test Tutorial 1'
+Tutorial1.Summary = 'A sample Tutorial for functional testing of PloneHelpCenter.  A tutorial that is published; only in one section; has only a single tutorial page.'
+Tutorial1.Versions = ( Hc.Versions[0], )
+Tutorial1.Sections = ( TutorialFolder.Sections[1], )
+Tutorial1.Pages = ( Page1, )
+Tutorial1.Transition = Transition.publish
+Tutorial1.Owner = User1
+
+# Sample Tutorial content 1 ------------------------------------------
+Tutorial2 = PropertyHolder()
+Tutorial2.Id = 'tutorial2'
+Tutorial2.Title = 'Test Tutorial 2'
+Tutorial2.Summary = 'A sample Tutorial that is pending; only in one section; has three tutorial pages.'
+Tutorial2.Versions = ( Hc.Versions[1], )
+Tutorial2.Sections = ( TutorialFolder.Sections[1], )
+Tutorial2.Pages = ( Page1, Page2, Page3, )
+Tutorial2.Transition = Transition.submit
+Tutorial2.Owner = User1
+
+# Sample Tutorial content 1 ------------------------------------------
+Tutorial3 = PropertyHolder()
+Tutorial3.Id = 'tutorial3'
+Tutorial3.Title = 'Test Tutorial 3'
+Tutorial3.Summary = 'A sample Tutorial that is in-progress; only in one section; has no tutorial pages.'
+Tutorial3.Versions = ( Hc.Versions[1], )
+Tutorial3.Sections = ( TutorialFolder.Sections[1], )
+Tutorial3.Pages = ()
+Tutorial3.Transition = None
+Tutorial3.Owner = User1
+
+# Sample Tutorial content 1 ------------------------------------------
+Tutorial4 = PropertyHolder()
+Tutorial4.Id = 'tutorial4'
+Tutorial4.Title = 'Test Tutorial 4'
+Tutorial4.Summary = 'A sample Tutorial that is published; only in (a different) one section; has a couple of tutorial pages and at least one non-tutorial page piece of content.'
+Tutorial4.Versions = ( Hc.Versions[1], )
+Tutorial4.Sections = ( TutorialFolder.Sections[0], )
+Tutorial4.Pages = ( Page1, Page2, Page3)
+Tutorial4.Transition = Transition.publish
+Tutorial4.Owner = User1
+
+
+# Sample Tutorial content --------------------------------------------
+Tutorial = PropertyHolder()
+Tutorial.list = [ Tutorial1 , Tutorial2, Tutorial3, Tutorial4, ]
+
+# Sample FAQ content 1 -----------------------------------------------
+FAQ1 = PropertyHolder()
+FAQ1.Id = 'faq1'
+FAQ1.Title = 'What is Test FAQ 1?'
+FAQ1.Question = 'This would be a long form of the question.  Sample FAQ for functional testing; published; only in one section.'
+FAQ1.Answer = 'Bogus answer here.  Just a lot of text to fill some space.  ' * 3
+FAQ1.Format = 'text/plain'
+FAQ1.Versions = ( Hc.Versions[1], )
+FAQ1.Sections = ( FAQFolder.Sections[1], )
+FAQ1.Transition = Transition.publish
+FAQ1.Owner = User1
+
+# Sample FAQ content 2 -----------------------------------------------
+FAQ2 = PropertyHolder()
+FAQ2.Id = 'faq2'
+FAQ2.Title = 'What is Test FAQ 2?'
+FAQ2.Question = 'This would be a long form of the question.  Sample FAQ for functional testing; pending; only in one section.'
+FAQ2.Answer = 'Bogus answer here.  Just a lot of text to fill some space.  ' * 3
+FAQ2.Format = 'text/plain'
+FAQ2.Versions = ( Hc.Versions[1], )
+FAQ2.Sections = ( FAQFolder.Sections[1], )
+FAQ2.Transition = Transition.submit
+FAQ2.Owner = User1
+
+# Sample FAQ content 3 -----------------------------------------------
+FAQ3 = PropertyHolder()
+FAQ3.Id = 'faq3'
+FAQ3.Title = 'What is Test FAQ 3?'
+FAQ3.Question = 'This would be a long form of the question.  Sample FAQ for functional testing; in-progress; only in one section.'
+FAQ3.Answer = 'Bogus answer here.  Just a lot of text to fill some space.  ' * 3
+FAQ3.Format = 'text/plain'
+FAQ3.Versions = ( Hc.Versions[1], )
+FAQ3.Sections = ( FAQFolder.Sections[1], )
+FAQ3.Transition = None
+FAQ3.Owner = User1
+
+# Sample FAQ content 4 -----------------------------------------------
+FAQ4 = PropertyHolder()
+FAQ4.Id = 'faq4'
+FAQ4.Title = 'What is Test FAQ 4?'
+FAQ4.Question = 'This would be a long form of the question.  Sample FAQ for functional testing; published; only in (a different) one section.'
+FAQ4.Answer = 'Bogus answer here.  Just a lot of text to fill some space.  ' * 3
+FAQ4.Format = 'text/plain'
+FAQ4.Versions = ( Hc.Versions[1], )
+FAQ4.Sections = ( FAQFolder.Sections[2], )
+FAQ4.Transition = Transition.publish
+FAQ4.Owner = User1
+
+# Sample FAQ content -------------------------------------------------
+FAQ = PropertyHolder()
+FAQ.list = [FAQ1, FAQ2, FAQ3, FAQ4,]
+
+
+# Sample ErrorReference content --------------------------------------
+ErrorReference = PropertyHolder()
+ErrorReference.list = []
+
+
+# Sample Glossary content --------------------------------------------
+Glossary = PropertyHolder()
+Glossary.list = []
+
+
+# Sample LinkFolder content ------------------------------------------
+Link = PropertyHolder()
+Link.list = []
+
+
+# Sample ReferenceManualFolder content -------------------------------
+ReferenceManual = PropertyHolder()
+ReferenceManual.list = []
+
+
+# Sample Video content -----------------------------------------------
+Video = PropertyHolder()
+Video.list = []
+
+

Added: gzo/trunk/products/PloneHelpCenter/tests/FeedForHelpCenter.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/FeedForHelpCenter.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/FeedForHelpCenter.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,97 @@
+Using a PloneHelpCenter RSS Feed
+================================
+
+Test that we have and correctly updating and usable RSS feed for our HelpCenter
+instance.
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products    
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.handleErrors = False
+    
+Let us log all exceptions, which is useful for debugging. Also, clear portlet
+slots, to make the test browser less confused by things like the recent portlet
+and the navtree.
+
+    >>> self.portal.error_log._ignored_exceptions = ()
+    >>> self.portal.left_slots = self.portal.right_slots = []
+
+Setup our site with a PHC instance data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Make sure that our link to the documentation-specific is well advertised
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.contents
+    '...<a...search_rss...>...Feed for all documentation...</a>...'
+
+Let's also make sure it has the right path parameter for the test help center we created
+
+    >>> browser.contents
+    '...<a...path=/plone/hc...>...Feed for all documentation...</a>...'
+
+
+More of a functional test for Plone, but let's make sure we're dealing with XML 
+of the RDF variety, rather than HTML
+
+    >>> browser.getLink(text='Feed for all documentation').click()
+    >>> browser.contents
+    '<?xml version...?>...<rdf:RDF...'
+
+Now we make sure we have our one and only out-of-the-box how to for the 
+relevant Help Center instance
+
+    >>> browser.contents
+    '...<title>How to use this resource</title>...<link>http://nohost/plone/hc/how-to/use-help-center</link>...'
+
+Because the helpcenter_workflow doesn't give view permission to members/anonymous users in 
+the default "in-progress" state, we wouldn't want this showing up in RSS feeds and 
+confusing people.  We unpublish the stock "How to use this resource" and recheck the 
+RSS feed
+
+    >>> self.setRoles(('Manager',))
+    >>> browser.goBack()
+    >>> browser.getLink(text='How to use this resource').click()
+    >>> self.helpcenter = getattr(self.portal, Data.Hc.Id)
+    >>> self.howto = getattr(self.helpcenter, "how-to")
+    >>> self.use = getattr(self.howto, "use-help-center")
+    >>> workflow = self.portal.portal_workflow
+    >>> workflow.doActionFor(self.use, 'retract')
+    >>> workflow.getInfoFor(self.use, 'review_state')
+    'in-progress'
+    >>> browser.getLink('%s' % Data.Hc.Title).click()
+    >>> self.setRoles(('Member',))
+    >>> browser.getLink('Feed for all documentation.').click()
+    >>> browser.contents
+    '...<items>...<rdf:Seq>...</rdf:Seq>...</items>...'
+    
+Now, we add a few new items to make sure they show up on our feed and thus
+our great documentation becomes "push", rather than "pull".
+
+    >>> CustomSetup.CreateFaqs(self,self.portal)
+    'Created 4 PHC FAQs.'
+    >>> browser.reload()
+    >>> # XXX having trouble asserting order here, need to revisit so that our
+    >>> # feed follows standard behavior
+    >>> 'What is Test FAQ 1?' and 'What is Test FAQ 4?' in browser.contents
+    True
+    
+
+Finally, we create an alternate help center, which should come with the default
+"how to use this resource" how-to in a published state.  If we're lucky, this 
+item won't bleed into our original help center's RSS feed.
+
+    >>> CustomSetup.CreateAltPHC(self,self.portal)
+    'Created an alternate PHC instance in the root of your Plone site.'
+    >>> browser.reload()
+    >>> '<title>How to use this resource</title>' not in browser.contents
+    True
+    >>> browser.url
+    '...path=/plone/hc...'

Added: gzo/trunk/products/PloneHelpCenter/tests/HelpCenterFAQUI.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/HelpCenterFAQUI.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/HelpCenterFAQUI.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,49 @@
+Browser tests for HowTos
+========================
+
+Sanity checks for FAQFolder and FAQ
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products    
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.handleErrors = False
+    
+Let us log all exceptions, which is useful for debugging. Also, clear portlet
+slots, to make the test browser less confused by things like the recent portlet
+and the navtree.
+
+    >>> self.portal.error_log._ignored_exceptions = ()
+    >>> self.portal.left_slots = self.portal.right_slots = []
+
+Setup our site with a PHC instance data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Setup some sample FAQs to interact with
+
+    >>> CustomSetup.CreateFaqs(self,self.portal)
+    'Created 4 PHC FAQs.'
+
+Check to see if the new FAQs are visible. Only two are published.
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.contents
+    '...All <span>2</span>...<span>FAQs</span>...'
+
+Let's follow the link to the FAQ page and see if the FAQs are there.
+
+    >>> browser.getLink('All 2 FAQs').click()
+    >>> browser.contents
+    '...FAQ Section1...What is Test FAQ 1?...FAQ - \xc3\xa1 - Section2...What is Test FAQ 4?...'
+
+Follow the link to one of the FAQs. Check content.
+
+    >>> browser.getLink('What is Test FAQ 1?').click()
+    >>> browser.contents
+    '...What is Test FAQ 1?...This would be a long form of the question...Bogus answer here...'
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/tests/HelpCenterHowToUI.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/HelpCenterHowToUI.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/HelpCenterHowToUI.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,58 @@
+Browser tests for HowTos
+========================
+
+Sanity checks for HowToFolder and HowTo
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products    
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.handleErrors = False
+    
+Let us log all exceptions, which is useful for debugging. Also, clear portlet
+slots, to make the test browser less confused by things like the recent portlet
+and the navtree.
+
+    >>> self.portal.error_log._ignored_exceptions = ()
+    >>> self.portal.left_slots = self.portal.right_slots = []
+
+Setup our site with a PHC instance data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Check for "How to use this resource" howto
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.contents
+    '...How to use this resource...'
+
+Setup some sample howtos to interact with
+
+    >>> CustomSetup.CreateHowtos(self,self.portal)
+    'Created 10 PHC Howtos.'
+
+Check to see if the new Howtos are visible.
+We should have seven total (includes "how to use this resource").
+Only five will show.
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.contents
+    '...All <span>7</span>...How-tos...'
+
+Let's follow the link to the howto page and see if the rest of the
+howtos are there.
+
+    >>> browser.getLink('All 7 How-tos').click()
+    >>> browser.contents
+    '...Test Howto 10...Test Howto 1...Test Howto 8...How to use this resource...'
+
+Follow the link to one of the howtos. Check content.
+
+    >>> browser.getLink('Test Howto 1').click()
+    >>> browser.contents
+    '...Howto Title...End of test document content...'
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/tests/HelpCenterSearch.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/HelpCenterSearch.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/HelpCenterSearch.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,114 @@
+Browser tests for search
+========================
+
+Test that we have and can correctly use the search widget provided by 
+helpcenter_view.
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products    
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.handleErrors = False
+    
+Let us log all exceptions, which is useful for debugging. Also, clear portlet
+slots, to make the test browser less confused by things like the recent portlet
+and the navtree.
+
+    >>> self.portal.error_log._ignored_exceptions = ()
+    >>> self.portal.left_slots = self.portal.right_slots = []
+    >>> workflow = self.portal.portal_workflow
+
+Setup our site with the data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Make sure that our search facility is in place and functional.  We should find
+our one howto instructing on PloneHelpCenter use.  Indexes are used to find the
+correct search form fields.
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = ''
+    >>> browser.getControl(name='phc_selection').value = ['all']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.url
+    '.../phc_search...'
+    >>> browser.contents
+    '...<strong>...1...items matching your criteria...</strong>...'
+
+Next we search for the word 'Test', which is not in our out of the box howto
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = 'Test'
+    >>> browser.getControl(name='phc_selection').value = ['all']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.url
+    '...SearchableText=Test...'
+    >>> browser.contents
+    '...<strong>No results were found.</strong>...'
+
+Now we want to create some FAQ items from Data.py that we can search for. Our
+call to CreateFaqs happens to make 4 FAQs, only 2 of which are published and 
+thus found in our search
+
+    >>> CustomSetup.CreateFaqs(self,self.portal)
+    'Created 4 PHC FAQs.'
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = 'Test FAQ'
+    >>> browser.getControl(name='phc_selection').value = ['all']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.contents
+    '...<strong>...2...items matching your criteria...</strong>...'
+
+Now let's make sure we get the same results within the faq section of our PHC
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = 'Test FAQ'
+    >>> browser.getControl(name='phc_selection').value = ['faq']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.contents
+    '...<strong>...2...items matching your criteria...</strong>...'
+
+We should get nothing when we search within another section
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = 'Test FAQ'
+    >>> browser.getControl(name='phc_selection').value = ['link']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.contents
+    '...<strong>No results were found.</strong>...'
+
+Now, we prove that each help center search only works for the PHC instance in 
+question.  For example, say an organization creates a help center for product 1
+and product 2.  In that instance, you wouldn't want to see documentation about
+product 2 when you own product 1.
+
+    >>> CustomSetup.CreateAltPHC(self,self.portal)
+    'Created an alternate PHC instance in the root of your Plone site.'
+    >>> CustomSetup.CreateFaqs(self,self.portal,True)
+    'Created 4 PHC FAQs.'
+
+We still only want 2 items in our original PHC instance
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getControl(name='SearchableText', index=1).value = 'Test FAQ'
+    >>> browser.getControl(name='phc_selection').value = ['all']
+    >>> browser.getControl(name='Search', index=0).click()
+    >>> browser.contents
+    '...<strong>...2...items matching your criteria...</strong>...'
+
+But, the site as a whole should have 4 items (2 published in each PHC) with 
+SearchableText containing 'Test FAQ'.  Note, the other 2 aren't found because
+the helpcenter_workflow doesn't give view permission to those that aren't owners
+or managers in the context. We perform this search from site root as a site 
+member.
+
+    >>> browser.open(self.portal.absolute_url())
+    >>> browser.getControl(name='SearchableText', index=0).value = 'Test FAQ'
+    >>> browser.getControl('Search', index=1).click()
+    >>> browser.contents
+    '...4 items matching your search terms...'

Added: gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTopics.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTopics.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTopics.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,44 @@
+Tests for Topic Functionality
+=============================
+
+Test PHC "topics" functionality. When sections are specified in the PHC
+and use a "Topic Area: Section" pattern, they should allow us to use
+the topic views.
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products
+    >>> from zope.component import getMultiAdapter
+    
+Setup our site with a PHC instance data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Check PHC Sections Vocabulary Setup
+    >>> hc = self.portal.hc
+    >>> hc.sectionsVocab
+    (u'Topic1', u'Topic1: Section1', u'Topic1: Section2 - \xe1', u'Topic2', u'Topic2: Section1', u'Topic2: Section2')
+
+CreateRootPHC creates a sections vocabulary for the how-to folder, so we'll
+need to clear it to test global sections.
+    >>> htf = hc['how-to']
+    >>> htf.setSectionsVocab([])
+
+Now, let's see if we can get sections inherited from the PHC object.    
+    >>> len(htf.getSectionsVocab())
+    6
+
+Exercise the folder view's getItemsByAudiencesAndSections method.
+    >>> view = getMultiAdapter((htf, htf.REQUEST), name=u'hcf_view')
+    >>> len( view.getItemsByAudiencesAndSections() )
+    1
+
+Exercise the folder view's getItemsBySections method.
+We don't expect to find anything since the only existing howto
+isn't in a current section.
+    >>> len( view.getItemsBySections() )
+    0
\ No newline at end of file

Added: gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTutorialUI.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTutorialUI.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/HelpCenterTutorialUI.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,71 @@
+Browser tests for HelpCenterTutorial
+====================================
+
+Sanity checks for TutorialFolder and Tutorials.
+
+First, some set-up:
+    
+    >>> from Products.Five import zcml
+    >>> import Products    
+    >>> from Products.Five.testbrowser import Browser
+    >>> browser = Browser()
+    >>> browser.handleErrors = False
+    
+Let us log all exceptions, which is useful for debugging. Also, clear portlet
+slots, to make the test browser less confused by things like the recent portlet
+and the navtree.
+
+    >>> self.portal.error_log._ignored_exceptions = ()
+    >>> self.portal.left_slots = self.portal.right_slots = []
+
+Setup our site with a PHC instance data provided in Data.py and utilities in CustomSetup.py
+
+    >>> from Products.PloneHelpCenter.tests import CustomSetup
+    >>> from Products.PloneHelpCenter.tests import Data
+    >>> CustomSetup.CreateRootPHC(self,self.portal)
+    'Created a PHC instance in the root of your Plone site.'
+
+Setup some sample tutorials to interact with
+
+    >>> CustomSetup.CreateTutorials(self,self.portal)
+    'Created 4 PHC Tutorials.'
+
+One of our tutorials is published with several published sub-items.  This is where
+we head for testing.
+
+    >>> browser.open(self.portal.absolute_url() + "/" + Data.Hc.Id + '/helpcenter_view')
+    >>> browser.getLink('Test Tutorial 4').click()
+
+This is our table of contents view for the tutorial.  From here, we make sure 
+we can access ourlink to the presentation mode for this tutorial.
+
+    >>> browser.contents
+    '...All content on one page (useful for printing, presentation mode etc.)...'
+
+Now we click on this view of our tutorial and prove that it is not the default 
+template for this type (i.e. not aliased with view method) and shows the full 
+contents of our published subitems (but not our in "draft" subitems) in the 
+correct ordering.
+
+    >>> browser.getLink('All content on one page (useful for printing, presentation mode etc.)').click()
+    >>> 'tutorial-all-pages' in browser.url
+    True
+    >>> browser.contents
+    '...Sample Tutorial Page1...Section 1...The rest of the content...Sample Tutorial Page2...Initial Checkout...'
+    >>> 'Sample Tutorial Page3' not in browser.contents
+    True
+
+And finally, we can get back to our table of contents view
+
+    >>> browser.getLink('tutorial view').click()
+    >>> 'tutorial-all-pages' in browser.url
+    False
+
+
+Next time I'll tackle proving:
+
+- The relevant sub-tutorial pages show up on paginated views (depends upon perms & workflows)
+- We can "fake" (we don't have javascript with testbrowser) jumping from appropriate tutorial page to tutorial page
+- Next/previous works
+- We have the author image floating to the right -- credit where credit is due
+

Added: gzo/trunk/products/PloneHelpCenter/tests/PHCTestCase.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/PHCTestCase.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/PHCTestCase.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,171 @@
+from Testing import ZopeTestCase
+
+# Make the boring stuff load quietly
+ZopeTestCase.installProduct('CMFCore', quiet=1)
+ZopeTestCase.installProduct('CMFDefault', quiet=1)
+ZopeTestCase.installProduct('CMFCalendar', quiet=1)
+ZopeTestCase.installProduct('CMFTopic', quiet=1)
+ZopeTestCase.installProduct('DCWorkflow', quiet=1)
+ZopeTestCase.installProduct('CMFActionIcons', quiet=1)
+ZopeTestCase.installProduct('CMFQuickInstallerTool', quiet=1)
+ZopeTestCase.installProduct('CMFFormController', quiet=1)
+ZopeTestCase.installProduct('GroupUserFolder', quiet=1)
+ZopeTestCase.installProduct('ZCTextIndex', quiet=1)
+ZopeTestCase.installProduct('TextIndexNG2', quiet=1)
+ZopeTestCase.installProduct('SecureMailHost', quiet=1)
+ZopeTestCase.installProduct('CMFPlone')
+
+ZopeTestCase.installProduct('Archetypes')
+ZopeTestCase.installProduct('PortalTransforms', quiet=1)
+ZopeTestCase.installProduct('MimetypesRegistry', quiet=1)
+ZopeTestCase.installProduct('PloneHelpCenter')
+
+from Products.PloneTestCase import PloneTestCase
+from Products.PloneHelpCenter.config import ADD_CENTER_PERMISSION, \
+  ADD_HELP_AREA_PERMISSION
+
+PRODUCTS = ['Archetypes', 'PloneHelpCenter']
+
+PloneTestCase.setupPloneSite(products=PRODUCTS)
+
+
+class PHCTestCase(PloneTestCase.PloneTestCase):
+
+    defaultTitle = 'Default Testing Title'
+    defaultVersions = ( 'Version 1.0', 'Version 2.0', 'Different Version1.0', )
+    defaultBodyRst = """
+    Bogus reST body
+    ===============
+    
+    Here's fake body content for unit tests.
+    
+    * Looks like a list.
+    * Smells like a list.
+    * It's a list!
+    
+    Final content after the list.
+    """
+
+    class Session(dict):
+        def set(self, key, value):
+            self[key] = value
+
+    def _setup(self):
+        PloneTestCase.PloneTestCase._setup(self)
+        self.app.REQUEST['SESSION'] = self.Session()
+
+    def afterSetUp(self):
+        self.portal.manage_permission(ADD_CENTER_PERMISSION,
+                                      ['Manager', 'Owner'])
+        self.portal.manage_permission(ADD_HELP_AREA_PERMISSION,
+                                      ['Manager', 'Owner'])
+        self._createHelpCenter(self.folder)
+
+    def _createHelpCenter(self, folder, id='hc', title=defaultTitle, versions=defaultVersions):
+        """Creates and returns a refence to a PHC HelpCenter.
+        This method publishes a HelpCenter instance under folder.  It fills in
+        all of the standard properties."""
+        folder.invokeFactory('HelpCenter', id)
+        helpCenter = getattr(folder, id)
+        helpCenter.setTitle(title)
+        helpCenter.setDescription('A HelpCenter instance for unit tests.')
+        helpCenter.setVersionsVocab(versions)
+        self.portal.portal_workflow.doActionFor(helpCenter, 'submit')
+        return helpCenter
+
+    def _createHowto(self, howtoFolder, id, title=defaultTitle):
+        """Creates and returns a refence to a PHC Howto.
+        This method creates a Howto instance under a folder.  It fills in
+        all of the standard properties."""
+        howtoFolder.invokeFactory('HelpCenterHowTo', id)
+        howto = getattr(howtoFolder, id)
+        howto.setTitle(title)
+        howto.setDescription('A PHC Howto for unit tests.')
+        howto.setBody(self.defaultBodyRst) 
+        howto.setVersions( ('Version 2.0',) )
+        howto.setSections( ('General',) )
+        self.portal.plone_utils.editMetadata(howto, format='text/x-rst')
+        return howto
+
+    def _createTutorial(self, tutorialFolder, id, title=defaultTitle, numPages=2):
+        """Creates and returns a reference to a PHC Tutorial.
+        This method creates a Tutorial instance under a folder.  It fills in
+        all of the standard properties."""
+        tutorialFolder.invokeFactory('HelpCenterTutorial', id)
+        tutorial = getattr(tutorialFolder, id)
+        tutorial.setTitle(title)
+        tutorial.setDescription('A PHC Tutorial for unit tests.')
+        tutorial.setVersions( ('Version 2.0',) )
+        tutorial.setSections( ('General',) )
+        # attach pages
+        for i in range(numPages):
+            pageNum = i + 1
+            id='page%d' % pageNum
+            tutorial.invokeFactory('HelpCenterTutorialPage', id)
+            newPage = getattr(tutorial, id)
+            newPage.setTitle('Test Tutorial Page %d' % pageNum)
+            newPage.setDescription('A PHC Tutorial Page (%d) for unit tests.' % pageNum)
+            newPage.setBody(self.defaultBodyRst)
+            self.portal.plone_utils.editMetadata(newPage,format='text/x-rst')
+        return tutorial
+                                   
+    def _createFAQ(self, faqFolder, id, title=defaultTitle):
+        """Creates and returns a reference to a PHC FAQ.
+        This method creates an FAQ instance under a folder.  It fills in
+        all of the standard properties."""
+        faqFolder.invokeFactory('HelpCenterFAQ', id=id)
+        faq = getattr(faqFolder, id)
+        faq.setTitle=(title)
+        faq.setDescription('An FAQ for unit tests.  Did you know that this field is supposed to be the questionfaq.set?')
+        faq.setAnswer('No one knows; it is one of the great mysteries.')
+        faq.setVersions( ('Version 2.0',) )
+        faq.setSections( ('General',) )
+        self.portal.plone_utils.editMetadata(faq, format='text/plain')
+        return faq
+
+    def _createLink(self, linkFolder, id, title=defaultTitle):
+        linkFolder.invokeFactory('HelpCenterLink', id)
+        link = getattr(linkFolder, id)
+        link.setTitle( title )
+        link.setDescription( 'A Link for unit tests.' )
+        link.setUrl('http://www.plone.org/')
+        link.setVersions( ('Version 2.0',) )
+        link.setSections( ('General',) )
+        return link
+
+    def _createErrorReference(self, errorRefFolder, id, title=defaultTitle):
+        errorRefFolder.invokeFactory('HelpCenterErrorReference', id)
+        errorRef = getattr(errorRefFolder, id)
+        errorRef.setTitle( title )
+        errorRef.setDescription( 'An error reference for unit tests.' )
+        errorRef.setBody( self.defaultBodyRst )
+        errorRef.setVersions( ('Version 2.0',) )
+        errorRef.setSections( ('General',) )
+        self.portal.plone_utils.editMetadata(errorRef, format='text/x-rst')
+        return errorRef
+
+    def _createDefinition(self, glossaryFolder, id, title=defaultTitle):
+        glossaryFolder.invokeFactory('HelpCenterDefinition', id)
+        definition = getattr(glossaryFolder, id)
+        definition.setTitle(title)
+        definition.setDescription('A definition for unit tests.')
+        definition.setVersions( ('Version 2.0',) )
+        definition.setSections( ('General',) )
+        return definition
+
+    def _createReferenceManual(self, glossaryFolder, id, title=defaultTitle):
+        pass
+
+    def _createVideo(self, videoFolder, id, title=defaultTitle):
+        pass
+
+class PHCFunctionalTestCase(PloneTestCase.FunctionalTestCase):
+    
+    class Session(dict):
+        def set(self, key, value):
+            self[key] = value
+
+    def _setup(self):
+        PloneTestCase.FunctionalTestCase._setup(self)
+        self.app.REQUEST['SESSION'] = self.Session()
+

Added: gzo/trunk/products/PloneHelpCenter/tests/__init__.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/__init__.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/__init__.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,15 @@
+"""\
+PloneHelpCenter tests package
+
+To run all tests type 'python runalltests.py'
+"""
+
+# For TTW functional testing, it's nice to create some data
+# that hangs around after the tests are done.  Uncomment the
+# next three lines to tie some test data generation scripts
+# to the portal_migration tool's Setup tab.  (Yeah, it's an
+# abuse of portal_migration.  We need a portal_test_script tool.)
+#
+#from Products.CMFPlone import MigrationTool
+#from Products.PloneHelpCenter.tests.CustomSetup import CustomSetup
+#MigrationTool.registerSetupWidget(CustomSetup)

Added: gzo/trunk/products/PloneHelpCenter/tests/framework.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/framework.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/framework.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,106 @@
+##############################################################################
+#
+# ZopeTestCase
+#
+# COPY THIS FILE TO YOUR 'tests' DIRECTORY.
+#
+# This version of framework.py will use the SOFTWARE_HOME
+# environment variable to locate Zope and the Testing package.
+#
+# If the tests are run in an INSTANCE_HOME installation of Zope,
+# Products.__path__ and sys.path with be adjusted to include the
+# instance's Products and lib/python directories respectively.
+#
+# If you explicitly set INSTANCE_HOME prior to running the tests,
+# auto-detection is disabled and the specified path will be used
+# instead.
+#
+# If the 'tests' directory contains a custom_zodb.py file, INSTANCE_HOME
+# will be adjusted to use it.
+#
+# If you set the ZEO_INSTANCE_HOME environment variable a ZEO setup
+# is assumed, and you can attach to a running ZEO server (via the
+# instance's custom_zodb.py).
+#
+##############################################################################
+#
+# The following code should be at the top of every test module:
+#
+# import os, sys
+# if __name__ == '__main__':
+#     execfile(os.path.join(sys.path[0], 'framework.py'))
+#
+# ...and the following at the bottom:
+#
+# if __name__ == '__main__':
+#     framework()
+#
+##############################################################################
+
+__version__ = '0.2.3'
+
+# Save start state
+#
+__SOFTWARE_HOME = os.environ.get('SOFTWARE_HOME', '')
+__INSTANCE_HOME = os.environ.get('INSTANCE_HOME', '')
+
+if __SOFTWARE_HOME.endswith(os.sep):
+    __SOFTWARE_HOME = os.path.dirname(__SOFTWARE_HOME)
+
+if __INSTANCE_HOME.endswith(os.sep):
+    __INSTANCE_HOME = os.path.dirname(__INSTANCE_HOME)
+
+# Find and import the Testing package
+#
+if not sys.modules.has_key('Testing'):
+    p0 = sys.path[0]
+    if p0 and __name__ == '__main__':
+        os.chdir(p0)
+        p0 = ''
+    s = __SOFTWARE_HOME
+    p = d = s and s or os.getcwd()
+    while d:
+        if os.path.isdir(os.path.join(p, 'Testing')):
+            zope_home = os.path.dirname(os.path.dirname(p))
+            sys.path[:1] = [p0, p, zope_home]
+            break
+        p, d = s and ('','') or os.path.split(p)
+    else:
+        print 'Unable to locate Testing package.',
+        print 'You might need to set SOFTWARE_HOME.'
+        sys.exit(1)
+
+import Testing, unittest
+execfile(os.path.join(os.path.dirname(Testing.__file__), 'common.py'))
+
+# Include ZopeTestCase support
+#
+if 1:   # Create a new scope
+
+    p = os.path.join(os.path.dirname(Testing.__file__), 'ZopeTestCase')
+
+    if not os.path.isdir(p):
+        print 'Unable to locate ZopeTestCase package.',
+        print 'You might need to install ZopeTestCase.'
+        sys.exit(1)
+
+    ztc_common = 'ztc_common.py'
+    ztc_common_global = os.path.join(p, ztc_common)
+
+    f = 0
+    if os.path.exists(ztc_common_global):
+        execfile(ztc_common_global)
+        f = 1
+    if os.path.exists(ztc_common):
+        execfile(ztc_common)
+        f = 1
+
+    if not f:
+        print 'Unable to locate %s.' % ztc_common
+        sys.exit(1)
+
+# Debug
+#
+print 'SOFTWARE_HOME: %s' % os.environ.get('SOFTWARE_HOME', 'Not set')
+print 'INSTANCE_HOME: %s' % os.environ.get('INSTANCE_HOME', 'Not set')
+sys.stdout.flush()

Added: gzo/trunk/products/PloneHelpCenter/tests/happy.swf
===================================================================
(Binary files differ)


Property changes on: gzo/trunk/products/PloneHelpCenter/tests/happy.swf
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: gzo/trunk/products/PloneHelpCenter/tests/runalltests.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/runalltests.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/runalltests.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,28 @@
+#
+# Runs all tests in the current directory
+#
+# Execute like:
+#   python runalltests.py
+#
+# Alternatively use the testrunner:
+#   python /path/to/Zope/utilities/testrunner.py -qa
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+import unittest
+TestRunner = unittest.TextTestRunner
+suite = unittest.TestSuite()
+
+tests = os.listdir(os.curdir)
+tests = [n[:-3] for n in tests if n.startswith('test') and n.endswith('.py')]
+
+for test in tests:
+    m = __import__(test)
+    if hasattr(m, 'test_suite'):
+        suite.addTest(m.test_suite())
+
+if __name__ == '__main__':
+    TestRunner().run(suite)

Added: gzo/trunk/products/PloneHelpCenter/tests/testComments.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testComments.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testComments.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,123 @@
+#
+# Tests for PHC and the Comment (discussion or talkback) system
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+try:
+    from Products.CMFPlone.tests.utils import MockMailHost
+except ImportError:
+    MockMailHost = None
+from Products.PloneHelpCenter.utils import discussion_notify
+
+
+class TestTutorialPageComments(PHCTestCase.PHCTestCase):
+    """Tests related to a bug where comments on objects in a PHC Tutorial's
+    items were shoting up on the tutorial itself."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self.tf = self.folder.hc.tutorial # tutorial folder
+        self.tf.invokeFactory('HelpCenterTutorial', id='t')
+        self.tutorial = self.tf.t
+        self.tutorial.invokeFactory('HelpCenterTutorialPage', 'page1')
+        self.tutorial.invokeFactory('HelpCenterTutorialPage', 'page2')
+        self.tutorial.invokeFactory('HelpCenterTutorialPage', 'page3')
+        
+    def testCommentOnTutorialPage(self):
+        title = 'Test comment'
+        body = 'head\nbody\nlegs\n'
+        discussionTool = self.portal.portal_discussion
+        # set up the talkback subobject
+        discussionTool.getDiscussionFor(self.tutorial.page2)
+        # create a comment on the tutorial page
+        self.tutorial.page2.discussion_reply(subject=title, body_text=body,)
+        # verify that we can get it back on the page
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page2)
+        comment = talkback.objectValues()[0]
+        self.assertEqual(comment.Title(), title)
+        self.assertEqual(comment.EditableBody(), body)
+        # verify that the comment doesn't show up on the parent tutorial object 
+        talkback = discussionTool.getDiscussionFor(self.tutorial)
+        self.assertEqual(talkback.objectValues(), [])
+        # verify that the comment doesn't show up on the other tutorial pages
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page1)
+        self.assertEqual(talkback.objectValues(), [])
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page3)
+        self.assertEqual(talkback.objectValues(), [])
+        
+    def testCommentOnTutorialFolder(self):
+        title = 'Test folder comment'
+        body = 'head\nbody\nlegs\n'
+        discussionTool = self.portal.portal_discussion
+        # set up the talkback subobject
+        discussionTool.getDiscussionFor(self.tutorial)
+        # create a comment on the tutorial
+        self.tutorial.discussion_reply(subject=title, body_text=body,)
+        # verify that we can get it back on the tutorial
+        talkback = discussionTool.getDiscussionFor(self.tutorial)
+        comment = talkback.objectValues()[0]
+        self.assertEqual(comment.Title(), title)
+        self.assertEqual(comment.EditableBody(), body)
+        # verify that the comment doesn't show up on any of the tutorial pages
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page1)
+        self.assertEqual(talkback.objectValues(), [])
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page2)
+        self.assertEqual(talkback.objectValues(), [])
+        talkback = discussionTool.getDiscussionFor(self.tutorial.page3)
+        self.assertEqual(talkback.objectValues(), [])
+
+class MockMailHostTests(PHCTestCase.PHCTestCase):
+
+    def afterSetUp(self):
+        self.portal._original_MailHost = self.portal.MailHost
+        self.portal.MailHost = MockMailHost('MailHost')
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self.tf = self.folder.hc.tutorial # tutorial folder
+        self.tf.invokeFactory('HelpCenterTutorial', id='t')
+        self.tutorial = self.tf.t
+        self.tutorial.invokeFactory('HelpCenterTutorialPage', 'page1')
+
+    def beforeTearDown(self):
+        self.portal.MailHost = self.portal._original_MailHost
+
+    def testCommentMailing(self):
+        """ Make sure we're mailing comments """
+
+        mailhost = self.portal.MailHost
+        self.assertEqual( len(mailhost.messages), 0 )
+
+        # try to notify
+        discussion_notify(self.tutorial.page1)
+        # there is no sendto address, so we expect no outgoing mail
+        self.assertEqual( len(mailhost.messages), 0 )
+
+        # set an owner email address and try again
+        owner = self.tutorial.page1.Creator()        
+        member = self.portal.portal_membership.getMemberById(owner)
+        member.setMemberProperties({'fullname': 'fullname', 'email': 'testuser at testme.com',})
+        discussion_notify(self.tutorial.page1)
+        self.assertEqual( len(mailhost.messages), 1 )
+        
+        msg = mailhost.messages[0]
+        payload = msg.message.get_payload().decode('base64')
+        self.failUnlessEqual( msg.mto[0], 'testuser at testme.com' )
+        self.failUnlessEqual( msg.message['subject'], '=?utf-8?q?New_comment_on_page1?=' )
+        self.failUnless( payload.find('Someone added a comment on your HelpCenterTutorialPage:\npage1.') > 0 )
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestTutorialPageComments))
+    if MockMailHost:
+        suite.addTest(makeSuite(MockMailHostTests))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testDescriptionFormats.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testDescriptionFormats.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testDescriptionFormats.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,61 @@
+#
+# Tests for formats other than plain-text in the editing views
+# 
+# http://plone.org/products/plonehelpcenter/issues/99
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from plone.app.controlpanel.markup import IMarkupSchema
+
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestDescriptionFormats(PHCTestCase.PHCTestCase):
+    """
+    Test that the Description field only advertises itself as
+    acception text/plain
+    """
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        
+        # In the Markup Control Panel, choose more than one text
+        # format from the "Alternative Formats" choices
+        markup_data = IMarkupSchema(self.portal)
+        markup_data.allowed_types = (
+            'text/html','text/plain','text/restructured'
+        )
+        
+        self._createFAQ(self.folder.hc.faq, 'f')
+        self.faq = self.folder.hc.faq.f
+        self._createHowto( getattr(self.folder.hc, 'how-to'), 'howto1' )
+        self.howto = getattr(self.folder.hc, 'how-to').howto1
+        self._createTutorial(self.folder.hc.tutorial, 't')
+        self.tutorial = self.folder.hc.tutorial.t
+        self._createLink(self.folder.hc.link, 'l')
+        self.link = self.folder.hc.link.l
+        self._createErrorReference(self.folder.hc.error, 'e')
+        self.errorRef = self.folder.hc.error.e
+        # phew, there are a lot of content types in PHC ...
+    
+    def testAllowableContentTypes(self):
+        for obj in [
+            self.faq, self.howto, self.tutorial, self.link, self.errorRef,
+        ]:
+            field = obj.getField('description')
+            self.assertEqual(
+                tuple(field.getAllowedContentTypes(obj)), ('text/plain',)
+            )
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestDescriptionFormats))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testDocTests.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testDocTests.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testDocTests.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,40 @@
+"""PloneHelpCenter functional doctests.  This module collects all *.txt
+files in the tests directory and runs them. (stolen from Plone)
+"""
+
+import os, sys
+
+import glob
+import doctest
+import unittest
+from Globals import package_home
+from Products.PloneTestCase import PloneTestCase
+from Testing.ZopeTestCase import FunctionalDocFileSuite as Suite
+
+from Products.PloneHelpCenter.config import GLOBALS
+
+# Load products
+from Products.PloneHelpCenter.tests.PHCTestCase import PHCFunctionalTestCase
+
+OPTIONFLAGS = (doctest.REPORT_ONLY_FIRST_FAILURE |
+               doctest.ELLIPSIS |
+               doctest.NORMALIZE_WHITESPACE)
+
+def list_doctests():
+    home = package_home(GLOBALS)
+    return [filename for filename in
+            glob.glob(os.path.sep.join([home, 'tests', '*.txt']))]
+
+def test_suite():
+
+    import Products.Five.testbrowser
+
+    filenames = list_doctests()
+
+    return unittest.TestSuite(
+        [Suite(os.path.basename(filename),
+               optionflags=OPTIONFLAGS,
+               package='Products.PloneHelpCenter.tests',
+               test_class=PHCFunctionalTestCase)
+         for filename in filenames]
+        )

Added: gzo/trunk/products/PloneHelpCenter/tests/testErrorReference.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testErrorReference.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testErrorReference.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,52 @@
+#
+# Tests for ErrorReference types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestErrorReference(PHCTestCase.PHCTestCase):
+    """General tests for ErrorReference Folder and ErrorReference objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createErrorReference(self.folder.hc.error, 'e')
+        self.errorRef = self.folder.hc.error.e
+
+    def testInitialTitle(self):
+        # Test that the default title is correct.
+        self.assertEqual(self.errorRef.title, 'Default Testing Title')
+
+    def testInitialDescription(self):
+        # Test that the default description is correct.
+        self.assertEqual(self.errorRef.Description(), 'An error reference for unit tests.')
+
+    def testInitialSections(self):
+        # Test that the default section list is correct.
+        self.assertEqual(self.errorRef.getSections(), ('General',))
+
+    def testInitialVersions(self):
+        # Test that the default version list is correct.
+        self.assertEqual(self.errorRef.getVersions(), ('Version 2.0',))
+
+    def testVersionsonErrorReference(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.errorRef.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestErrorReference))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testFaq.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testFaq.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testFaq.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,39 @@
+#
+# Tests for FAQ types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestFaq(PHCTestCase.PHCTestCase):
+    """General tests for FAQ Folder and FAQ objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createFAQ(self.folder.hc.faq, 'f')
+        self.faq = self.folder.hc.faq.f
+
+    def testInitialSections(self):
+        # Test that the default section list is correct.
+        self.assertEqual(self.faq.getSections(), ('General',))
+
+    def testVersionsonFaq(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.faq.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestFaq))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testGlossary.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testGlossary.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testGlossary.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,40 @@
+#
+# Tests for Glossary types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestGlossary(PHCTestCase.PHCTestCase):
+    """General tests for Glossary and Definition objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createDefinition(self.folder.hc.glossary, 'd')
+        self.definition = self.folder.hc.glossary.d
+
+    def testInitialSections(self):
+        # Test that the default section list is correct.
+        self.assertEqual(self.definition.getSections(), ('General',))
+
+    def testVersionsonGlossary(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.definition.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestGlossary))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testHowto.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testHowto.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testHowto.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,35 @@
+#
+# Tests for Howto types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestHowto(PHCTestCase.PHCTestCase):
+    """General tests for Howto folder and HOWTO objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createHowto( getattr(self.folder.hc, 'how-to'), 'howto1' )
+        self.howto = getattr(self.folder.hc, 'how-to').howto1
+
+    def testVersionsHowto(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.howto.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestHowto))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testLink.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testLink.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testLink.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,38 @@
+#
+# Tests for Link types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestLink(PHCTestCase.PHCTestCase):
+    """General tests for Link Folder and Link objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createLink(self.folder.hc.link, 'l')
+        self.link = self.folder.hc.link.l
+
+    def testInitialSections(self):
+        # Test that the default section list is correct.
+        self.assertEqual(self.link.getSections(), ('General',))
+
+    def testVersionsonLink(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.link.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestLink))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testMultilingual.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testMultilingual.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testMultilingual.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,45 @@
+#
+# Tests for FAQ types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+from Products import LinguaPlone
+
+class TestMultilingual(PHCTestCase.PHCTestCase):
+    """General tests for multilingual objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createFAQ(self.folder.hc.faq, 'f')
+        self.enFaq = self.folder.hc.faq.f
+        self.enFaq.addTranslation('fr')
+        self.frFaq = self.enFaq.getTranslation('fr')
+        
+    def testIndependentVersions(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        enVersions = self.enFaq.getVersionsVocab()
+        frVersions = self.frFaq.getVersionsVocab()
+        self.assertEqual(enVersions, frVersions)
+
+    def testUniqueDescription(self):
+        enDescription = 'An English description'
+        frDescription = 'Not English ;)'
+        self.enFaq.setDescription(enDescription)
+        self.frFaq.setDescription(frDescription)
+        self.failIfEqual(self.enFaq.Description(), self.frFaq.Description())
+        
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestMultilingual))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testSetup.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testSetup.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testSetup.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,352 @@
+#
+# PHC Setup tests
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from AccessControl import Unauthorized
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestPortalTypes(PHCTestCase.PHCTestCase):
+
+    def afterSetUp(self):
+        self.types = self.portal.portal_types.objectIds()
+
+    def testHelpCenterPortalType(self):
+        self.failUnless('HelpCenter' in self.types)
+
+    def testHelpCenterDefinitionType(self):
+        self.failUnless('HelpCenterDefinition' in self.types)
+        
+    def testHelpCenterLinkType(self):
+        self.failUnless('HelpCenterLink' in self.types)
+        
+    def testHelpCenterHowToType(self):
+        self.failUnless('HelpCenterHowTo' in self.types)
+        
+    def testHelpCenterErrorReferenceFolderType(self):
+        self.failUnless('HelpCenterErrorReferenceFolder' in self.types)
+
+    def testHelpCenterFaqFolderType(self):
+        self.failUnless('HelpCenterFAQFolder' in self.types)
+
+    def testHelpCenterErrorReferenceType(self):
+        self.failUnless('HelpCenterErrorReference' in self.types)
+
+    def testHelpCenterTutorialPageType(self):
+        self.failUnless('HelpCenterTutorialPage' in self.types)
+
+    def testHelpCenterLinkFolderType(self):
+        self.failUnless('HelpCenterLinkFolder' in self.types)
+
+    def testHelpCenterTutorialType(self):
+        self.failUnless('HelpCenterTutorial' in self.types)
+
+    def testHelpCenterTutorialFolderType(self):
+        self.failUnless('HelpCenterTutorialFolder' in self.types)
+
+    def testHelpCenterVideoType(self):
+        self.failUnless('HelpCenterInstructionalVideo' in self.types)
+
+    def testHelpCenterVideoFolderType(self):
+        self.failUnless('HelpCenterInstructionalVideoFolder' in self.types)
+
+    def testHelpCenterFaqType(self):
+        self.failUnless('HelpCenterFAQ' in self.types)
+
+    def testHelpCenterGlossaryType(self):
+        self.failUnless('HelpCenterGlossary' in self.types)
+
+    def testHelpCenterHowToFolderType(self):
+        self.failUnless('HelpCenterHowToFolder' in self.types)
+
+
+class TestGlobalAllow(PHCTestCase.PHCTestCase):
+
+    def afterSetUp(self):
+        pass
+
+    def testCreateHelpCenter(self):
+        # Globally allowed
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self.failUnless('hc' in self.folder.objectIds())
+
+    def typeNotGloballyAllowed(self, type):
+        try:
+            self.folder.invokeFactory(type, id='h')
+        except (ValueError, Unauthorized): # diff'nt errors in 2.0 & 2.1
+            return True
+        else:
+            return False
+
+    def testCreateHelpCenterHowto(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterHowTo'))
+
+    def testHelpCenterDefinition(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterDefinition'))
+        
+    def testHelpCenterLink(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterLink'))
+        
+    def testHelpCenterErrorReferenceFolder(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterErrorReferenceFolder'))
+        
+    def testHelpCenterFaqFolder(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterFAQFolder'))
+        
+    def testHelpCenterErrorReference(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterErrorReference'))
+        
+    def testHelpCenterTutorialPage(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterTutorialPage'))
+        
+    def testHelpCenterLinkFolder(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterLinkFolder'))
+        
+    def testHelpCenterTutorial(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterTutorial'))
+        
+    def testHelpCenterTutorialFolder(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterTutorialFolder'))
+        
+    def testHelpCenterFaq(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterFAQ'))
+        
+    def testHelpCenterGlossary(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterGlossary'))
+        
+    def testHelpCenterHowToFolder(self):
+        self.failUnless(self.typeNotGloballyAllowed('HelpCenterHowToFolder'))
+
+
+class _TestFolderishContainmentBase(PHCTestCase.PHCTestCase):
+    """A base class for holding a bit of common code"""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self.hc = self.folder.hc
+
+    def checkAllowedContentTypes(self, folderish, typeIdList):
+        """Test that folderish folder allows exactly the types
+        whose ids are listed in typeIdList"""
+        types = folderish.allowedContentTypes()
+        self.assertEqual(len(types), len(typeIdList))
+        for item in types:
+            self.failUnless(item.getId() in typeIdList)
+
+
+class TestHelpCenterContainment(_TestFolderishContainmentBase):
+
+    def testHelpCenterAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterFAQFolder',
+            'HelpCenterHowToFolder',
+            'HelpCenterTutorialFolder',
+            'HelpCenterReferenceManualFolder',
+            'HelpCenterInstructionalVideoFolder',
+            'HelpCenterLinkFolder',
+            'HelpCenterErrorReferenceFolder',
+            'HelpCenterGlossary',
+        ]
+        self.checkAllowedContentTypes(self.hc, allowed)
+
+    def testHelpCenterPrePopulation(self):
+        content = self.hc.objectIds()
+        initial = [
+            'faq',
+            'how-to',
+            'tutorial',
+            'manual',
+            # XXX - per the HelpCenter.py initializeArchetype method "Video type is not yet finished"
+            # thus, it should not be found in the self.hc objectIds()
+            # 'video',
+            'error',
+            'link',
+            'glossary',
+        ]
+        self.assertEqual(len(content), len(initial))
+        for id in initial:
+            self.failUnless(id in content)
+
+
+class TestHowToFolderContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = getattr(self.folder.hc, 'how-to')
+
+    def testHowToFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterHowTo',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateHowToInHowToFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterHowTo', id='h')
+        self.failUnless('h' in self.hf.objectIds())
+
+    def testCreateDocumentInHowToFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+
+
+class TestHelpCenterErrorReferenceFolderContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.error
+
+    def testErrorReferenceFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterErrorReference',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateErrorReferenceInErrorReferenceFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterErrorReference', id='h')
+        self.assertEqual(self.hf.objectIds(), ['h'])
+    
+    def testCreateDocumentInErrorReferenceFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+
+
+class TestHelpCenterFaqFolderContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.faq
+
+    def testFaqFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterFAQ',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateFaqInFaqFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterFAQ', id='h')
+        self.assertEqual(self.hf.objectIds(), ['h'])
+
+    def testCreateDocumentInFaqFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+
+
+class TestHelpCenterLinkFolderContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.link
+
+    def testLinkFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterLink',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateLinkInLinkFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterLink', id='h')
+        self.assertEqual(self.hf.objectIds(), ['h'])
+
+    def testCreateDocumentInLinkFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+    
+
+class TestHelpCenterTutorialFolderContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.tutorial
+        
+    def testTutorialFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterTutorial',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateTutorialInTutorialFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterTutorial', id='h')
+        self.assertEqual(self.hf.objectIds(), ['h'])
+
+    def testCreateDocumentInTutorialFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+    
+
+class TestHelpCenterTutorialContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.tutorial
+        self.hf.invokeFactory('HelpCenterTutorial', id='tf')
+        self.tf = self.hf.tf
+        
+    def testTutorialFolderAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterTutorialPage',
+            'Image',
+            'File',
+        ]
+        self.checkAllowedContentTypes(self.tf, allowed)
+
+    def testCreateTutorialPageInTutorial(self):
+        # Allowed
+        self.tf.invokeFactory('HelpCenterTutorialPage', id='h')
+        self.assertEqual(self.tf.objectIds(), ['h'])
+
+#    XXX Should we test that we can actually add an Image and a File?
+
+    def testCreateDocumentInTutorial(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.tf.invokeFactory, 'Document', id='doc')
+    
+
+class TestHelpCenterGlossaryContainment(_TestFolderishContainmentBase):
+
+    def afterSetUp(self):
+        _TestFolderishContainmentBase.afterSetUp(self)
+        self.hf = self.folder.hc.glossary
+        
+    def testGlossaryAllowedContentTypes(self):
+        allowed = [
+            'HelpCenterDefinition',
+        ]
+        self.checkAllowedContentTypes(self.hf, allowed)
+
+    def testCreateDefinitionInGlossaryFolder(self):
+        # Allowed
+        self.hf.invokeFactory('HelpCenterDefinition', id='h')
+        self.assertEqual(self.hf.objectIds(), ['h'])
+
+    def testCreateDocumentInGlossaryFolder(self):
+        # Not allowed
+        self.assertRaises(ValueError, self.hf.invokeFactory, 'Document', id='doc')
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestPortalTypes))
+    suite.addTest(makeSuite(TestGlobalAllow))
+    suite.addTest(makeSuite(TestHelpCenterContainment))
+    suite.addTest(makeSuite(TestHowToFolderContainment))
+    suite.addTest(makeSuite(TestHelpCenterErrorReferenceFolderContainment))
+    suite.addTest(makeSuite(TestHelpCenterFaqFolderContainment))
+    suite.addTest(makeSuite(TestHelpCenterLinkFolderContainment))
+    suite.addTest(makeSuite(TestHelpCenterTutorialFolderContainment))
+    suite.addTest(makeSuite(TestHelpCenterTutorialContainment))
+    suite.addTest(makeSuite(TestHelpCenterGlossaryContainment))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testSkeleton.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testSkeleton.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testSkeleton.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,30 @@
+#
+# PHCTestCase Skeleton
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestSomething(PHCTestCase.PHCTestCase):
+
+    def afterSetUp(self):
+        pass
+
+    def testSomething(self):
+        # Test something
+        self.assertEqual(1+1, 2)
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestSomething))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testTutorial.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testTutorial.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testTutorial.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,40 @@
+#
+# Tests for Tutorial types in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestTutorial(PHCTestCase.PHCTestCase):
+    """General tests for Tutorial Folder and Tutorial objects."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        self._createTutorial(self.folder.hc.tutorial, 't')
+        self.tutorial = self.folder.hc.tutorial.t
+
+    def testInitialSections(self):
+        # Test that the default section list is correct.
+        self.assertEqual(self.tutorial.getSections(), ('General',))
+
+    def testVersionsonTutorial(self):
+        versions = ('1.0','2.0','Strange version')
+        self.folder.hc.setVersionsVocab(versions)
+        newVersions = self.tutorial.getVersionsVocab()
+        self.assertEqual(newVersions, versions)
+
+
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestTutorial))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/testWorkflow.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/testWorkflow.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/testWorkflow.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,324 @@
+#
+# Tests for workflow and permissions in the PHC
+#
+
+import os, sys
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Products.PloneTestCase.PloneTestCase import default_user
+
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.PloneHelpCenter.tests import PHCTestCase
+
+
+class TestWorkflow(PHCTestCase.PHCTestCase):
+    """Tests for workflow specific issues in the PHC."""
+
+    def afterSetUp(self):
+        PHCTestCase.PHCTestCase.afterSetUp(self)
+        pm = self.portal.portal_membership
+        pm.addMember( 'test_reviewer', 'pw', ['Member', 'Reviewer'], [] )
+        pm.addMember( 'test_manager', 'pw', ['Member', 'Manager'], [] )
+
+    def _publishContent(self, item):
+        """Moves content created by the default user to the published state."""
+        self.portal.portal_workflow.doActionFor(item, 'submit')
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(item, 'publish')
+        self.login(default_user)
+
+    def _checkReviewState(self, item, state):
+        """Checks that the content item's review_state is equal to state."""
+        itemState = self.portal.portal_workflow.getInfoFor(item, 'review_state')
+        self.assertEqual(itemState, state)
+
+    # Next several tests: owners can edit content even after it's published
+    
+    def testEditPublishedHowto(self):
+        newBody = 'Changed to this content while published.'
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self._publishContent(howto)
+        howto.edit(text_format='plain', body=newBody)
+        self.assertEqual(howto.getRawBody(), newBody)
+
+    def testEditPublishedTutorial(self):
+        newDescription = 'New Description.'
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self._publishContent(tutorial)
+        tutorial.edit(description=newDescription)
+        self.assertEqual(tutorial.Description(), newDescription)
+        tutorial.invokeFactory('HelpCenterTutorialPage', 'newPage')
+        page = getattr(tutorial, 'newPage')
+        page.setTitle('New Page')
+        page.setDescription('A tutorial page added after tutorial was published')
+        page.setBody=('')
+        self.assertEqual(tutorial.newPage.Title(), 'New Page')
+        
+    def testEditPublishedTutorialPage(self):
+        # Edit a page on a tutorial that has been published.
+        newDescription = 'New Description.'
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        tutorial.invokeFactory('HelpCenterTutorialPage', 'newPage')
+        page = getattr(tutorial, 'newPage')
+        page.setTitle('New Page')
+        page.setDescription('A tutorial page added after tutorial was published')
+        page.setBody('')
+        self._publishContent(tutorial)
+        tutorial.edit(description=newDescription)
+        tutorial.newPage.edit(description=newDescription)
+        self.assertEqual(tutorial.newPage.Description(), newDescription)
+
+    def testEditPublishedFaq(self):
+        newDescription = 'New Description.'
+        faq = self._createFAQ(self.folder.hc.faq, 'faq')
+        self._publishContent(faq)
+        faq.edit(description=newDescription)
+        self.assertEqual(faq.Description(), newDescription)
+
+    def testEditPublishedLink(self):
+        newUrl = 'http://www.trizpug.org/'
+        link = self._createLink(self.folder.hc.link, 'link')
+        self._publishContent(link)
+        link.edit(url=newUrl)
+        self.assertEqual(link.getUrl(), newUrl)
+
+    def testEditPublishedErrorReference(self):
+        newBody = 'Changed!'
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self._publishContent(errorRef)
+        errorRef.edit(body=newBody)
+        self.assertEqual(errorRef.getRawBody(), newBody)
+
+    def testEditPublishedDef(self):
+        newDefinition = 'Explicit is better than implicit'
+        definition = self._createDefinition(self.folder.hc.glossary, 'def')
+        self._publishContent(definition)
+        definition.edit(description=newDefinition)
+        self.assertEqual(definition.Description(), newDefinition)
+
+    # Test a couple of types to make sure that Owners can edit pending
+    # and obsolete content, too.
+
+    def testEditPendingHowto(self):
+        newBody = 'Changed to this content while published.'
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self.portal.portal_workflow.doActionFor(howto, 'submit')
+        howto.edit(text_format='plain', body=newBody)
+        self.assertEqual(howto.getRawBody(), newBody)
+
+    def testEditObsoleteHowto(self):
+        newBody = 'Changed to this content while published.'
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        howto.edit(text_format='plain', body=newBody)
+        self.assertEqual(howto.getRawBody(), newBody)
+        
+
+    # Next several tests: owners can obsolete their own content at any point
+
+    def testOwnerObsoletesHowto(self):
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self._publishContent(howto)
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        self._checkReviewState(howto, 'obsolete')
+
+    def testOwnerObsoletesTutorial(self):
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self._publishContent(tutorial)
+        self.portal.portal_workflow.doActionFor(tutorial, 'mark_obsolete')
+        self._checkReviewState(tutorial, 'obsolete')
+
+    def testOwnerObsoletesFAQ(self):
+        faq = self._createFAQ(self.folder.hc.faq, 'faq1')
+        self._publishContent(faq)
+        self.portal.portal_workflow.doActionFor(faq, 'mark_obsolete')
+        self._checkReviewState(faq, 'obsolete')
+
+    def testOwnerObsoletesLink(self):
+        link = self._createLink(self.folder.hc.link, 'link1')
+        self._publishContent(link)
+        self.portal.portal_workflow.doActionFor(link, 'mark_obsolete')
+        self._checkReviewState(link, 'obsolete')
+
+    def testOwnerObsoletesErrorReference(self):
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self._publishContent(errorRef)
+        self.portal.portal_workflow.doActionFor(errorRef, 'mark_obsolete')
+        self._checkReviewState(errorRef, 'obsolete')
+
+    def testOwnerObsoletesDefinition(self):
+        definition = self._createDefinition(self.folder.hc.glossary, 'd')
+        self._publishContent(definition)
+        self.portal.portal_workflow.doActionFor(definition, 'mark_obsolete')
+        self._checkReviewState(definition, 'obsolete')
+
+    def testOwnerObsoletesPendingHowto(self):
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self.portal.portal_workflow.doActionFor(howto, 'submit')
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        self._checkReviewState(howto, 'obsolete')
+
+    def testOwnerObsoletesPendingTutorial(self):
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self.portal.portal_workflow.doActionFor(tutorial, 'submit')
+        self.portal.portal_workflow.doActionFor(tutorial, 'mark_obsolete')
+        self._checkReviewState(tutorial, 'obsolete')
+
+    def testOwnerObsoletesPendingFAQ(self):
+        faq = self._createFAQ(self.folder.hc.faq, 'faq1')
+        self.portal.portal_workflow.doActionFor(faq, 'submit')
+        self.portal.portal_workflow.doActionFor(faq, 'mark_obsolete')
+        self._checkReviewState(faq, 'obsolete')
+
+    def testOwnerObsoletesPendingLink(self):
+        link = self._createLink(self.folder.hc.link, 'link1')
+        self.portal.portal_workflow.doActionFor(link, 'submit')
+        self.portal.portal_workflow.doActionFor(link, 'mark_obsolete')
+        self._checkReviewState(link, 'obsolete')
+
+    def testOwnerObsoletesPendingErrorReference(self):
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self.portal.portal_workflow.doActionFor(errorRef, 'submit')
+        self.portal.portal_workflow.doActionFor(errorRef, 'mark_obsolete')
+        self._checkReviewState(errorRef, 'obsolete')
+
+    def testOwnerObsoletesPendingDefinition(self):
+        definition = self._createDefinition(self.folder.hc.glossary, 'd')
+        self.portal.portal_workflow.doActionFor(definition, 'submit')
+        self.portal.portal_workflow.doActionFor(definition, 'mark_obsolete')
+        self._checkReviewState(definition, 'obsolete')
+
+    def testOwnerObsoletesInProgressHowto(self):
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        self._checkReviewState(howto, 'obsolete')
+
+    def testOwnerObsoletesInProgressTutorial(self):
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self.portal.portal_workflow.doActionFor(tutorial, 'mark_obsolete')
+        self._checkReviewState(tutorial, 'obsolete')
+
+    def testOwnerObsoletesInProgressFAQ(self):
+        faq = self._createFAQ(self.folder.hc.faq, 'faq1')
+        self.portal.portal_workflow.doActionFor(faq, 'mark_obsolete')
+        self._checkReviewState(faq, 'obsolete')
+
+    def testOwnerObsoletesInProgressLink(self):
+        link = self._createLink(self.folder.hc.link, 'link1')
+        self.portal.portal_workflow.doActionFor(link, 'mark_obsolete')
+        self._checkReviewState(link, 'obsolete')
+
+    def testOwnerObsoletesInProgressErrorReference(self):
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self.portal.portal_workflow.doActionFor(errorRef, 'mark_obsolete')
+        self._checkReviewState(errorRef, 'obsolete')
+
+    def testOwnerObsoletesInProgressDefinition(self):
+        definition = self._createDefinition(self.folder.hc.glossary, 'd')
+        self.portal.portal_workflow.doActionFor(definition, 'mark_obsolete')
+        self._checkReviewState(definition, 'obsolete')
+
+    # Next several tests: reviewers can obsolete any pending content
+
+    def testReviewerObsoletesHowto(self):
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self._publishContent(howto)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        self._checkReviewState(howto, 'obsolete')
+
+    def testReviewerObsoletesTutorial(self):
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self._publishContent(tutorial)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(tutorial, 'mark_obsolete')
+        self._checkReviewState(tutorial, 'obsolete')
+
+    def testReviewerObsoletesFAQ(self):
+        faq = self._createFAQ(self.folder.hc.faq, 'faq1')
+        self._publishContent(faq)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(faq, 'mark_obsolete')
+        self._checkReviewState(faq, 'obsolete')
+
+    def testReviewerObsoletesLink(self):
+        link = self._createLink(self.folder.hc.link, 'link1')
+        self._publishContent(link)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(link, 'mark_obsolete')
+        self._checkReviewState(link, 'obsolete')
+
+    def testReviewerObsoletesErrorReference(self):
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self._publishContent(errorRef)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(errorRef, 'mark_obsolete')
+        self._checkReviewState(errorRef, 'obsolete')
+
+    def testReviewerObsoletesDefinition(self):
+        definition = self._createDefinition(self.folder.hc.glossary, 'd')
+        self._publishContent(definition)
+        self.login('test_reviewer')
+        self.portal.portal_workflow.doActionFor(definition, 'mark_obsolete')
+        self._checkReviewState(definition, 'obsolete')
+
+    # Next several tests: non-reviewers who have the 'Review portal content'
+    # permission, such as a manager, can obsolete any pending content
+    # XXX: Rather bogus to use a manager here...probably need a normal member
+    # who has just that permisson.
+
+    def testManagerObsoletesHowto(self):
+        howto = self._createHowto(getattr(self.folder.hc, 'how-to'), 'howto1')
+        self._publishContent(howto)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(howto, 'mark_obsolete')
+        self._checkReviewState(howto, 'obsolete')
+
+    def testManagerObsoletesTutorial(self):
+        tutorial = self._createTutorial(self.folder.hc.tutorial, 'tut1')
+        self._publishContent(tutorial)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(tutorial, 'mark_obsolete')
+        self._checkReviewState(tutorial, 'obsolete')
+
+    def testManagerObsoletesFAQ(self):
+        faq = self._createFAQ(self.folder.hc.faq, 'faq1')
+        self._publishContent(faq)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(faq, 'mark_obsolete')
+        self._checkReviewState(faq, 'obsolete')
+
+    def testManagerObsoletesLink(self):
+        link = self._createLink(self.folder.hc.link, 'link1')
+        self._publishContent(link)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(link, 'mark_obsolete')
+        self._checkReviewState(link, 'obsolete')
+
+    def testManagerObsoletesErrorReference(self):
+        errorRef = self._createErrorReference(self.folder.hc.error, 'er')
+        self._publishContent(errorRef)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(errorRef, 'mark_obsolete')
+        self._checkReviewState(errorRef, 'obsolete')
+
+    def testManagerObsoletesDefinition(self):
+        definition = self._createDefinition(self.folder.hc.glossary, 'd')
+        self._publishContent(definition)
+        self.login('test_manager')
+        self.portal.portal_workflow.doActionFor(definition, 'mark_obsolete')
+        self._checkReviewState(definition, 'obsolete')
+    
+
+def test_suite():
+    from unittest import TestSuite, makeSuite
+    suite = TestSuite()
+    suite.addTest(makeSuite(TestWorkflow))
+    return suite
+
+if __name__ == '__main__':
+    framework()

Added: gzo/trunk/products/PloneHelpCenter/tests/test_i18n.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/tests/test_i18n.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/tests/test_i18n.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,61 @@
+import os, sys
+
+if __name__ == '__main__':
+    execfile(os.path.join(sys.path[0], 'framework.py'))
+
+from Testing import ZopeTestCase
+from Products.i18ntestcase import PotTestCase, PoTestCase
+from Products.i18ntestcase.I18NTestCase import getPoFiles, getPotFiles, getProductFromPath
+from i18ndude import catalog
+from Globals import package_home
+
+GLOBALS = globals()
+PACKAGE_HOME = os.path.normpath(os.path.join(package_home(GLOBALS), '..'))
+
+head, tail = os.path.split(PACKAGE_HOME)
+if tail == 'tests':
+    PACKAGE_HOME = os.path.join(PACKAGE_HOME, '..')
+
+i18ndir = os.path.normpath(PACKAGE_HOME)
+
+tests=[]
+products=[]
+pots={}
+pot_catalogs={}
+pot_lens={}
+
+for potFile in getPotFiles(path=i18ndir):
+    product = getProductFromPath(potFile)
+    if product not in products:
+        products.append(product)
+    if product not in pot_catalogs:
+        cat = catalog.MessageCatalog(filename=potFile)
+        cat_len = len(cat)
+        pots.update({product: potFile})
+        pot_catalogs.update({product: cat})
+        pot_lens.update({product: cat_len})
+
+for product in products:
+    class TestOnePOT(PotTestCase.PotTestCase):
+        product = product
+        pot = pots[product]
+    tests.append(TestOnePOT)
+
+    for poFile in getPoFiles(path=i18ndir, product=product):
+        class TestOnePoFile(PoTestCase.PoTestCase):
+            po = poFile
+            product = product
+            pot_cat = pot_catalogs[product]
+            pot_len = pot_lens[product]
+        tests.append(TestOnePoFile)
+
+    import unittest
+    def test_suite():
+        suite = unittest.TestSuite()
+        for test in tests:
+            suite.addTest(unittest.makeSuite(test))
+        return suite
+
+if __name__ == '__main__':
+    framework()
+

Added: gzo/trunk/products/PloneHelpCenter/utils.py
===================================================================
--- gzo/trunk/products/PloneHelpCenter/utils.py	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/utils.py	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1,44 @@
+from Products.CMFCore.interfaces.Discussions import DiscussionResponse as IDiscussionResponse
+
+def discussion_notify(comment_on_object, variables = {}):
+    portal = comment_on_object.portal_url.getPortalObject()
+
+    send_from_address = portal.portal_properties.email_from_address
+    send_from_name = portal.portal_properties.email_from_name
+    host = portal.plone_utils.getMailHost()
+    encoding = portal.plone_utils.getSiteEncoding()
+    envelope_from = send_from_address
+    
+    mt = portal.portal_membership
+    if IDiscussionResponse.isImplementedBy(comment_on_object):
+        owner = comment_on_object.Creator()
+        if owner:
+            member = mt.getMemberById(owner)
+            if member:
+                send_to_address = member.getProperty('email')
+
+                if send_to_address:
+                    mail_text = portal.discussion_reply_notify_template(portal, comment_on_object=comment_on_object, send_from_address=send_from_address, send_from_name=send_from_name, send_to_address=send_to_address, **variables)
+                    subject = "New comment on " + comment_on_object.title_or_id()
+
+                    # result = host.send(mail_text, send_to_address, envelope_from, subject=subject)
+                    result = host.secureSend(mail_text, send_to_address, envelope_from, subject=subject, subtype='plain', charset=encoding, debug=False, From=envelope_from)
+
+        parents = comment_on_object.parentsInThread()
+        if not parents:
+            return
+        comment_on_object = parents[0]
+            
+    owner = comment_on_object.Creator()
+    if owner:
+        member = mt.getMemberById(owner)
+        if member:
+            send_to_address = member.getProperty('email')
+
+            if send_to_address:
+
+                mail_text = portal.discussion_notify_template(portal, comment_on_object=comment_on_object, send_from_address=send_from_address, send_from_name=send_from_name, send_to_address=send_to_address, **variables)
+                subject = "New comment on " + comment_on_object.title_or_id()
+
+                # result = host.send(mail_text, send_to_address, envelope_from, subject=subject)
+                result = host.secureSend(mail_text, send_to_address, envelope_from, subject=subject, subtype='plain', charset=encoding, debug=False, From=envelope_from)

Added: gzo/trunk/products/PloneHelpCenter/version.txt
===================================================================
--- gzo/trunk/products/PloneHelpCenter/version.txt	                        (rev 0)
+++ gzo/trunk/products/PloneHelpCenter/version.txt	2009-09-15 14:34:04 UTC (rev 104094)
@@ -0,0 +1 @@
+1.5 beta 5



More information about the checkins mailing list