[evolvis-commits] r18260: update to tip of integration branch

mirabilos at evolvis.org mirabilos at evolvis.org
Sat Apr 7 16:10:48 CEST 2012


Author: mirabilos
Date: 2012-04-07 16:10:47 +0200 (Sat, 07 Apr 2012)
New Revision: 18260

Added:
   branches/messer-51/metapkg/
   branches/messer-51/src/common/include/preutils.php
   branches/messer-51/src/db/20120321-add-news-in-activity_vw.sql
   branches/messer-51/src/db/20120329-pfo-rbac.sql
   branches/messer-51/src/debian/fusionforge-plugin-scmgit.preinst
   branches/messer-51/src/debian/gforge-plugin-mediawiki.postrm
   branches/messer-51/src/debian/gforge-plugin-mediawiki.preinst
   branches/messer-51/src/debian/source/
   branches/messer-51/src/packaging/control/901evolvis-mediawiki
   branches/messer-51/src/packaging/control/901evolvis-mediawiki.shortdesc
   branches/messer-51/src/packaging/cron.d/plugin-mediawiki
   branches/messer-51/src/packaging/install/plugin-mediawiki
   branches/messer-51/src/packaging/links/lists-mailman
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/fusionforge/main.css
   branches/messer-51/src/plugins/mediawiki/mw-override/
   branches/messer-51/src/plugins/scmgit/www/git-logo.png
   branches/messer-51/src/utils/scm-newsubrepo.php
   branches/messer-51/src/www/themes/gforge/viewvc/images/logo.png
Removed:
   branches/messer-51/src/common/include/XhtmlValidator.php
   branches/messer-51/src/plugins/mediawiki/bin/db-delete.pl
   branches/messer-51/src/plugins/mediawiki/bin/db-upgrade.pl
   branches/messer-51/src/plugins/mediawiki/db/
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php.patch
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php.reference
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/Makefile
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/README.beforemodifying
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin/fusionforge/fusionforge.css
   branches/messer-51/src/www/themes/gforge/viewvc/images/viewvc-logo.png
Modified:
   branches/messer-51/
   branches/messer-51/3rd-party/Makefile.rh
   branches/messer-51/3rd-party/php-htmlpurifier/php-htmlpurifier.spec
   branches/messer-51/Makefile
   branches/messer-51/Makefile.debian
   branches/messer-51/Makefile.rh
   branches/messer-51/cEv-hook/D20repo
   branches/messer-51/metapkg/debian/changelog
   branches/messer-51/metapkg/debian/compat
   branches/messer-51/metapkg/debian/control
   branches/messer-51/metapkg/debian/copyright
   branches/messer-51/metapkg/debian/rules
   branches/messer-51/metapkg/debian/source/format
   branches/messer-51/mvntests/AllTests.php
   branches/messer-51/mvntests/syntax/SyntaxTests.php
   branches/messer-51/plugins/coclico/soapadmin/debian/rules
   branches/messer-51/plugins/templates/helloworld/debian/rules
   branches/messer-51/src/BuildDSC.sh
   branches/messer-51/src/common/advanced_search/ASFusionForgeParser.class.php
   branches/messer-51/src/common/advanced_search/ASInputAnalyzer.class.php
   branches/messer-51/src/common/docman/include/vtemplate.class.php
   branches/messer-51/src/common/docman/views/listfile.php
   branches/messer-51/src/common/forum/ForumHTML.class.php
   branches/messer-51/src/common/frs/FRSFile.class.php
   branches/messer-51/src/common/include/Error.class.php
   branches/messer-51/src/common/include/Group.class.php
   branches/messer-51/src/common/include/GroupJoinRequest.class.php
   branches/messer-51/src/common/include/PluginManager.class.php
   branches/messer-51/src/common/include/RBAC.php
   branches/messer-51/src/common/include/RBACEngine.class.php
   branches/messer-51/src/common/include/SCMPlugin.class.php
   branches/messer-51/src/common/include/User.class.php
   branches/messer-51/src/common/include/config-vars.php
   branches/messer-51/src/common/include/constants.php
   branches/messer-51/src/common/include/datepick.php
   branches/messer-51/src/common/include/descriptive.php
   branches/messer-51/src/common/include/env.inc.php
   branches/messer-51/src/common/include/exit.php
   branches/messer-51/src/common/include/extras-debug.php
   branches/messer-51/src/common/include/jpgraph.php
   branches/messer-51/src/common/include/minijson.php
   branches/messer-51/src/common/include/pre.php
   branches/messer-51/src/common/include/session.php
   branches/messer-51/src/common/include/utils.php
   branches/messer-51/src/common/mail/MailingList.class.php
   branches/messer-51/src/common/pm/ProjectModel.class.php
   branches/messer-51/src/common/pm/ProjectTask.class.php
   branches/messer-51/src/common/pm/import_utils.php
   branches/messer-51/src/common/search/ForumsSearchQuery.class.php
   branches/messer-51/src/common/tracker/Artifact.class.php
   branches/messer-51/src/common/tracker/ArtifactExtraField.class.php
   branches/messer-51/src/common/tracker/ArtifactFactory.class.php
   branches/messer-51/src/common/tracker/ArtifactFile.class.php
   branches/messer-51/src/common/tracker/ArtifactQuery.class.php
   branches/messer-51/src/common/tracker/ArtifactType.class.php
   branches/messer-51/src/common/tracker/ArtifactWorkflow.class.php
   branches/messer-51/src/common/tracker/artifact_type_definitions.php
   branches/messer-51/src/common/widget/WidgetLayoutManager.class.php
   branches/messer-51/src/common/widget/Widget_MyArtifacts.class.php
   branches/messer-51/src/common/widget/Widget_MyMonitoredForums.class.php
   branches/messer-51/src/common/widget/Widget_MyTasks.class.php
   branches/messer-51/src/common/widget/Widget_ProjectMembers.class.php
   branches/messer-51/src/cronjobs/auth_unix.php
   branches/messer-51/src/cronjobs/backup_site.php
   branches/messer-51/src/cronjobs/calculate_user_metric.php
   branches/messer-51/src/cronjobs/check_stale_tracker_items.php
   branches/messer-51/src/cronjobs/create_scm_repos.php
   branches/messer-51/src/cronjobs/daily_task_email.php
   branches/messer-51/src/cronjobs/db_project_sums.php
   branches/messer-51/src/cronjobs/db_stats_agg.php
   branches/messer-51/src/cronjobs/db_trove_maint.php
   branches/messer-51/src/cronjobs/forum_gateway.php
   branches/messer-51/src/cronjobs/gather_scm_stats.php
   branches/messer-51/src/cronjobs/generate_scm_snapshots.php
   branches/messer-51/src/cronjobs/homedirs.php
   branches/messer-51/src/cronjobs/mail/mailaliases.php
   branches/messer-51/src/cronjobs/mail/mailing_lists_create.php
   branches/messer-51/src/cronjobs/massmail.php
   branches/messer-51/src/cronjobs/project_cleanup.php
   branches/messer-51/src/cronjobs/project_weekly_metric.php
   branches/messer-51/src/cronjobs/rating_stats.php
   branches/messer-51/src/cronjobs/reporting_cron.php
   branches/messer-51/src/cronjobs/rotate_activity.php
   branches/messer-51/src/cronjobs/site_stats.php
   branches/messer-51/src/cronjobs/tracker_gateway.php
   branches/messer-51/src/cronjobs/update_docdata_dataword.php
   branches/messer-51/src/cronjobs/vacuum.php
   branches/messer-51/src/db/20010304-4-artifact-convert-files.php
   branches/messer-51/src/db/20021213-2-doc_data-migrate.php
   branches/messer-51/src/db/20040826_migrateforum.php
   branches/messer-51/src/db/20040826_migraterbac.php
   branches/messer-51/src/db/20041211-syncmail.php
   branches/messer-51/src/db/20041222-1-delete-task-artifact.php
   branches/messer-51/src/db/20050127-frs-reorg.php
   branches/messer-51/src/db/20050325-3.php
   branches/messer-51/src/db/20050617.php
   branches/messer-51/src/db/20050804-2.php
   branches/messer-51/src/db/20090507-install_workflow.php
   branches/messer-51/src/db/20100518-pfo-rbac.sql
   branches/messer-51/src/db/20100926-pfo-rbac.sql
   branches/messer-51/src/db/20100927-pfo-rbac.sql
   branches/messer-51/src/db/startpoint.php
   branches/messer-51/src/db/upgrade-db.php
   branches/messer-51/src/deb-specific/create-mailing-lists.pl
   branches/messer-51/src/deb-specific/db-upgrade.pl
   branches/messer-51/src/deb-specific/fileforge.pl
   branches/messer-51/src/deb-specific/fix-mailing-lists.pl
   branches/messer-51/src/deb-specific/install-chroot.sh
   branches/messer-51/src/deb-specific/install-db.sh
   branches/messer-51/src/deb-specific/install-exim.sh
   branches/messer-51/src/deb-specific/install-exim4.sh
   branches/messer-51/src/deb-specific/install-postfix.sh
   branches/messer-51/src/deb-specific/prepare-vhosts-file.pl
   branches/messer-51/src/deb-specific/update-user-group-ssh.sh
   branches/messer-51/src/debian/README.Debian.tmpl
   branches/messer-51/src/debian/changelog
   branches/messer-51/src/debian/control
   branches/messer-51/src/debian/dsf-in/common.postinst
   branches/messer-51/src/debian/dsf-in/common.postrm
   branches/messer-51/src/debian/dsf-in/db-postgresql.postinst.dsfh-in
   branches/messer-51/src/debian/dsf-in/dns-bind9.postinst
   branches/messer-51/src/debian/dsf-in/ftp-proftpd.postinst
   branches/messer-51/src/debian/dsf-in/lists-mailman.postinst
   branches/messer-51/src/debian/dsf-in/mta-exim4.postinst
   branches/messer-51/src/debian/dsf-in/mta-postfix.postinst
   branches/messer-51/src/debian/dsf-in/plugin.postinst
   branches/messer-51/src/debian/dsf-in/shell-postgresql.postinst
   branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postinst.dsfh-in
   branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postrm.dsfh-in
   branches/messer-51/src/debian/dsf-in/web-apache2.postinst.dsfh-in
   branches/messer-51/src/debian/dsf-po/cs.po
   branches/messer-51/src/debian/dsf-po/de.po
   branches/messer-51/src/debian/dsf-po/es.po
   branches/messer-51/src/debian/dsf-po/fi.po
   branches/messer-51/src/debian/dsf-po/fr.po
   branches/messer-51/src/debian/dsf-po/gl.po
   branches/messer-51/src/debian/dsf-po/nl.po
   branches/messer-51/src/debian/dsf-po/pt.po
   branches/messer-51/src/debian/dsf-po/ru.po
   branches/messer-51/src/debian/dsf-po/sv.po
   branches/messer-51/src/debian/dsf-po/templates.pot
   branches/messer-51/src/debian/dsf-po/vi.po
   branches/messer-51/src/debian/evolvis.postinst
   branches/messer-51/src/debian/rules
   branches/messer-51/src/debian/source/format
   branches/messer-51/src/docs/README.html:EvolvisTable
   branches/messer-51/src/docs/README.html:utils
   branches/messer-51/src/etc/config.ini.d/debug.ini
   branches/messer-51/src/etc/config.ini.d/defaults.ini
   branches/messer-51/src/etc/httpd.conf.d/20-vhosts-lists.conf
   branches/messer-51/src/etc/httpd.conf.d/log.inc
   branches/messer-51/src/etc/httpd.conf.d/vhost-list.inc
   branches/messer-51/src/etc/httpd.conf.d/vhost-main.inc
   branches/messer-51/src/etc/local.d/24debug
   branches/messer-51/src/etc/local.d/30homegroupother
   branches/messer-51/src/etc/local.inc.example
   branches/messer-51/src/packaging/control/000source
   branches/messer-51/src/packaging/control/020common
   branches/messer-51/src/packaging/control/030web-apache2
   branches/messer-51/src/packaging/control/050db-postgresql
   branches/messer-51/src/packaging/control/070mta-postfix
   branches/messer-51/src/packaging/control/070mta-postfix.shortdesc
   branches/messer-51/src/packaging/control/090shell-postgresql
   branches/messer-51/src/packaging/control/120lists-mailman
   branches/messer-51/src/packaging/control/900evolvis-meta
   branches/messer-51/src/packaging/control/999transitional
   branches/messer-51/src/packaging/install/common
   branches/messer-51/src/packaging/install/db-postgresql
   branches/messer-51/src/plugins/blocks/packaging/install/plugin-blocks
   branches/messer-51/src/plugins/externalsearch/bin/db-upgrade.pl
   branches/messer-51/src/plugins/extratabs/packaging/control/170plugin-extratabs
   branches/messer-51/src/plugins/forumml/debian/rules
   branches/messer-51/src/plugins/globalsearch/bin/db-upgrade.pl
   branches/messer-51/src/plugins/globalsearch/common/globalsearch_stats_boxes.php
   branches/messer-51/src/plugins/globalsearch/www/index.php
   branches/messer-51/src/plugins/hudson/bin/db-upgrade.pl
   branches/messer-51/src/plugins/hudson/debian/rules
   branches/messer-51/src/plugins/ldapextauth/include/LdapExtAuthPlugin.class.php
   branches/messer-51/src/plugins/mailman/debian/rules
   branches/messer-51/src/plugins/mediawiki/bin/mw-drop-wikis.php
   branches/messer-51/src/plugins/mediawiki/bin/mw-plugin-init.php
   branches/messer-51/src/plugins/mediawiki/bin/mw-wrapper.php
   branches/messer-51/src/plugins/mediawiki/common/MediaWikiPlugin.class.php
   branches/messer-51/src/plugins/mediawiki/cronjobs/create-imagedirs.php
   branches/messer-51/src/plugins/mediawiki/cronjobs/create-wikis.php
   branches/messer-51/src/plugins/mediawiki/cronjobs/dump-wikis.php
   branches/messer-51/src/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
   branches/messer-51/src/plugins/mediawiki/etc/mediawiki.ini
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/00README
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/FusionForge.php.patch
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/FusionForge.php.patched
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/FusionForge.php.reference
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/Makefile
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/MonoBook.php
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/ff_main.css.patch
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/ff_main.css.patched
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/ff_main.css.reference
   branches/messer-51/src/plugins/mediawiki/mediawiki-skin-devel/main.css
   branches/messer-51/src/plugins/mediawiki/mw-override/MessagesEn.php
   branches/messer-51/src/plugins/mediawiki/packaging/control/160plugin-mediawiki
   branches/messer-51/src/plugins/mediawiki/packaging/cron.d/plugin-mediawiki
   branches/messer-51/src/plugins/mediawiki/packaging/install/plugin-mediawiki
   branches/messer-51/src/plugins/mediawiki/packaging/links/plugin-mediawiki
   branches/messer-51/src/plugins/mediawiki/www/LocalSettings.php
   branches/messer-51/src/plugins/mediawiki/www/frame.php
   branches/messer-51/src/plugins/mediawiki/www/plugin_admin.php
   branches/messer-51/src/plugins/oslc/bin/db-upgrade.pl
   branches/messer-51/src/plugins/scmcvs/cronjobs/ssh_create.php
   branches/messer-51/src/plugins/scmgit/common/GitPlugin.class.php
   branches/messer-51/src/plugins/scmgit/packaging/control/133plugin-scmgit
   branches/messer-51/src/plugins/scmgit/packaging/links/plugin-scmgit
   branches/messer-51/src/plugins/scmsvn/bin/install.sh
   branches/messer-51/src/plugins/scmsvn/common/SVNPlugin.class.php
   branches/messer-51/src/plugins/scmsvn/packaging/control/131plugin-scmsvn
   branches/messer-51/src/translations/de.po
   branches/messer-51/src/translations/fusionforge.pot
   branches/messer-51/src/utils/fixscripts/fix_default_role.php
   branches/messer-51/src/utils/fixscripts/populate_template_project.php
   branches/messer-51/src/utils/include.pl
   branches/messer-51/src/utils/inject-files.php
   branches/messer-51/src/utils/inject-groups.php
   branches/messer-51/src/utils/inject-users.php
   branches/messer-51/src/utils/migrate-to-ini-files.sh
   branches/messer-51/src/utils/normalize_roles.php
   branches/messer-51/src/utils/sync_unix_groups.php
   branches/messer-51/src/utils/user-del.php
   branches/messer-51/src/www/DTD/xhtml10t-rdfa10.dtd
   branches/messer-51/src/www/account/register.php
   branches/messer-51/src/www/admin/grouplist.php
   branches/messer-51/src/www/admin/pi.php
   branches/messer-51/src/www/export/rssAboTask.php
   branches/messer-51/src/www/export/rss_utils.inc
   branches/messer-51/src/www/forum/monitor.php
   branches/messer-51/src/www/frs/index.php
   branches/messer-51/src/www/frs/reporting/downloads.php
   branches/messer-51/src/www/include/Layout.class.php
   branches/messer-51/src/www/include/html.php
   branches/messer-51/src/www/include/project_home.php
   branches/messer-51/src/www/js/sortable.js
   branches/messer-51/src/www/mail/admin/index.php
   branches/messer-51/src/www/news/news_utils.php
   branches/messer-51/src/www/pm/admin/index.php
   branches/messer-51/src/www/pm/browse_task.php
   branches/messer-51/src/www/pm/downloadcsv.php
   branches/messer-51/src/www/pm/include/ProjectView.class.php
   branches/messer-51/src/www/pm/include/pm_columns.php
   branches/messer-51/src/www/pm/pm_task.php
   branches/messer-51/src/www/pm/postuploadcsv.php
   branches/messer-51/src/www/pm/reporting/index.php
   branches/messer-51/src/www/pm/t_follow.php
   branches/messer-51/src/www/pm/t_lookup.php
   branches/messer-51/src/www/pm/task.php
   branches/messer-51/src/www/project/admin/index.php
   branches/messer-51/src/www/project/admin/massadd.php
   branches/messer-51/src/www/project/admin/project_admin_utils.php
   branches/messer-51/src/www/project/admin/users.php
   branches/messer-51/src/www/projects
   branches/messer-51/src/www/register/index.php
   branches/messer-51/src/www/reporting/projectact.php
   branches/messer-51/src/www/reporting/usersummary.php
   branches/messer-51/src/www/scm/browser.php
   branches/messer-51/src/www/scm/include/scm_utils.php
   branches/messer-51/src/www/scm/include/viewvc_utils.php
   branches/messer-51/src/www/scm/viewvc.php
   branches/messer-51/src/www/scm/viewvc/templates/include/header.ezt
   branches/messer-51/src/www/soap/frs/frs.php
   branches/messer-51/src/www/soap/index.php
   branches/messer-51/src/www/soap/nusoap.php
   branches/messer-51/src/www/soap/tracker/query.php
   branches/messer-51/src/www/soap/tracker/tracker.php
   branches/messer-51/src/www/softwaremap/index.php
   branches/messer-51/src/www/themes/css/fusionforge.css
   branches/messer-51/src/www/themes/evolvis/EvStyle.class.php
   branches/messer-51/src/www/themes/evolvis/Theme.class.php
   branches/messer-51/src/www/themes/evolvis/evolvis.css
   branches/messer-51/src/www/themes/evolvis/images/logo_internal_repo.png
   branches/messer-51/src/www/themes/gforge/viewvc/styles.css
   branches/messer-51/src/www/top/toplist.php
   branches/messer-51/src/www/tracker/admin/form-addextrafield.php
   branches/messer-51/src/www/tracker/admin/form-addextrafieldoption.php
   branches/messer-51/src/www/tracker/admin/form-clonetracker.php
   branches/messer-51/src/www/tracker/admin/form-extrafieldcopy.php
   branches/messer-51/src/www/tracker/admin/form-updateextrafield.php
   branches/messer-51/src/www/tracker/admin/form-updatetracker.php
   branches/messer-51/src/www/tracker/admin/form-workflow.php
   branches/messer-51/src/www/tracker/admin/ind.php
   branches/messer-51/src/www/tracker/admin/updates.php
   branches/messer-51/src/www/tracker/browse.php
   branches/messer-51/src/www/tracker/include/ArtifactHtml.class.php
   branches/messer-51/src/www/tracker/include/ArtifactTypeHtml.class.php
   branches/messer-51/src/www/tracker/item.php
   branches/messer-51/src/www/tracker/query.php
   branches/messer-51/src/www/tracker/taskmgr.php
   branches/messer-51/src/www/tracker/tracker.php
   branches/messer-51/src/www/widgets/updatelayout.php
   branches/messer-51/tools/savannah_convert.sh
   branches/messer-51/tools/tab2gettext.sh
Log:
update to tip of integration branch


Property changes on: branches/messer-51
___________________________________________________________________
Modified: svn:mergeinfo
   - /trunk/gforge_base/evolvisforge-5.1:7226,17132-17168,17573-17576,17584,17592,17595,17631,17646-17652,17863-17867,17893,17907-17908,17928-17931,17933,17942-17943,18046-18050

   + /trunk/gforge_base/evolvisforge-5.1:7226,17132-17168,17573-17576,17584,17592,17595,17631,17646-17652,17863-17867,17893,17907-17908,17928-17931,17933,17942-17943,18046-18050,18257-18259

Modified: svk:merge
   - 8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17168
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17584
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17592
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17595
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17631
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17652
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17867
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17893
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17908
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17933
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17943
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:18050
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:7226

   + 8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17168
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17584
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17592
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17595
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17631
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17652
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17867
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17893
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17908
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17933
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:17943
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:18050
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:18259
8ed69402-faa4-4b47-986e-66d49b2a90d8:/trunk/gforge_base/evolvisforge-5.1:7226


Modified: branches/messer-51/3rd-party/Makefile.rh
===================================================================
--- branches/messer-51/3rd-party/Makefile.rh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/3rd-party/Makefile.rh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -8,7 +8,7 @@
 DEPOT=$(HOME)/depot
 BUILDRESULT=$(HOME)/fusionforge_repo
 
-HTMLPURIFIER_VERSION=4.3.0
+HTMLPURIFIER_VERSION=4.4.0
 HTMLPURIFIER_SPEC=php-htmlpurifier/php-htmlpurifier.spec
 HTMLPURIFIER_TBZ=htmlpurifier-$(HTMLPURIFIER_VERSION).tar.gz
 HTMLPURIFIER_RPM=php-htmlpurifier-$(HTMLPURIFIER_VERSION)-1.noarch.rpm

Modified: branches/messer-51/3rd-party/php-htmlpurifier/php-htmlpurifier.spec
===================================================================
--- branches/messer-51/3rd-party/php-htmlpurifier/php-htmlpurifier.spec	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/3rd-party/php-htmlpurifier/php-htmlpurifier.spec	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 Summary: HTML Purifier is a standards-compliant HTML filter library written in PHP.
 Name: php-htmlpurifier
-Version: 4.3.0
+Version: 4.4.0
 Release: 1
 License: LGPL
 Group: Development/Languages
@@ -61,6 +61,9 @@
 %doc art benchmarks configdoc CREDITS docs INSTALL INSTALL.fr.utf8 LICENSE NEWS README TODO VERSION WHATSNEW WYSIWYG
 
 %changelog
+* Mon Feb 06 2012 Alain Peyrat <aljeux at free.fr>  - 4.4.0-1
+- Updated to v4.4.0
+
 * Sat Nov 20 2010 Alain Peyrat <aljeux at free.fr>  - 4.3.0-1
 - Updated to v4.3.0
 

Modified: branches/messer-51/Makefile
===================================================================
--- branches/messer-51/Makefile	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/Makefile	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,3 +1,9 @@
+regress:
+	#       phpunit             pcregrep                     moreutils
+	test -x /usr/bin/phpunit && test -x /usr/bin/pcregrep && test -x /usr/bin/isutf8
+	php mvntests/AllTests.php
+	@echo minimal testsuite run.
+
 #
 # This Makefile may be used to create packages for distributions
 #
@@ -57,7 +63,7 @@
 
 buildtar: $(BUILDRESULT)
 	rm -fr /tmp/$(VERSION)
-	cd src; find . -type f -or -type l | grep -v '/.svn/' | grep -v '^./debian' | grep -v '^./deb-specific' | grep -v '^./rpm-specific' | grep -v '^./contrib' | grep -v '^./fusionforge.spec' | cpio -pdumB --quiet /tmp/$(VERSION)
+	cd src; find . -type f -or -type l | grep -v '/.svn/' | grep -v '^./debian' | grep -v '^./deb-specific' | grep -v '^./rpm-specific' | grep -v '^./contrib' | grep -v '^./fusionforge.spec' | paxcpio -pdumB /tmp/$(VERSION)
 	cd /tmp/$(VERSION); utils/manage-translations.sh build
 	cd /tmp/; tar jcf $(BUILDRESULT)/$(VERSION).tar.bz2 $(VERSION)
 	rm -fr /tmp/$(VERSION)

Modified: branches/messer-51/Makefile.debian
===================================================================
--- branches/messer-51/Makefile.debian	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/Makefile.debian	2012-04-07 14:10:47 UTC (rev 18260)
@@ -310,7 +310,7 @@
 	find $(PKGDIR) -type f -or -type l | grep -v '/CVS/' | \
 		grep -v '/.svn/' | grep -v '/.testbox/' | \
 		grep -v rpm-specific | grep -v docs/phpdoc/docs | \
-		grep -v ^./debian/ | cpio -pdumB $(BUILDFILES)/
+		grep -v ^./debian/ | paxcpio -pdumB $(BUILDFILES)/
 	# Set version for given distrib
 	cd $(BUILDFILES)/$(PKGDIR); dch -b -v $(MAJOR)$(MINOR) -D UNRELEASED "This is $(DISTRIB)-$(ARCH) autobuild"
 	perl -pi -e "s/UNRELEASED/$(DISTRIB)/" $(BUILDFILES)/$(PKGDIR)/debian/changelog
@@ -323,7 +323,7 @@
 	find $(PKGDIR) -type f -or -type l | grep -v '/CVS/' | \
 		grep -v '/.svn/' | grep -v '/.testbox/' | \
 		grep -v rpm-specific | grep -v docs/phpdoc/docs | \
-		grep -v ^./debian/ | cpio -pdumB $(BUILDFILES)/
+		grep -v ^./debian/ | paxcpio -pdumB $(BUILDFILES)/
 	# Set version for given distrib
 	cd $(BUILDFILES)/$(PKGDIR); dch -b -v $(MAJOR)$(MINOR)+p -D UNRELEASED "This is $(DISTRIB)-$(ARCH) autobuild"
 	perl -pi -e "s/UNRELEASED/$(DISTRIB)/" $(BUILDFILES)/$(PKGDIR)/debian/changelog
@@ -341,7 +341,8 @@
 		grep -v ^./debian/ | grep -v \\.jar$$ | \
 		grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
 		grep -v plugins/wiki/www/lib/pear | \
-		cpio -o -H ustar | gzip > $(TARBALLS)/$(ORIGFILE)
+		paxcpio -M dist -oC512 -H ustar | \
+		gzip -n9 >$(TARBALLS)/$(ORIGFILE)
 
 pbuilderenv: $(PBUILDERTGZ) $(PBUILDERTGZ)/base-$(DISTRIB)-$(ARCH).tgz
 	@echo "=========> Ready for $(DISTRIB)-$(ARCH)"

Modified: branches/messer-51/Makefile.rh
===================================================================
--- branches/messer-51/Makefile.rh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/Makefile.rh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -52,7 +52,7 @@
 	cd $(RPM_TMP)/SOURCES/; rm -rf fusionforge-$(version).tar.bz2 fusionforge-$(version)
 
 fusionforge: rpmprep		# Build rpm fusionforge packages                               #
-	cd src; find . -type f -or -type l | grep -v '/.svn/' | grep -v '/debian/' | cpio -pdumB --quiet $(RPM_TMP)/SOURCES/fusionforge-$(version)
+	cd src; find . -type f -or -type l | grep -v '/.svn/' | grep -v '/debian/' | paxcpio -pdumB $(RPM_TMP)/SOURCES/fusionforge-$(version)
 	cd $(RPM_TMP)/SOURCES/fusionforge-$(version)/; utils/manage-translations.sh build
 	rm -f $(RPM_TMP)/SOURCES/fusionforge-$(version)/utils/fusionforge-shell-postgresql.spec
 	cd $(RPM_TMP)/SOURCES/; cp fusionforge-$(version)/rpm-specific/patches/* .

Modified: branches/messer-51/cEv-hook/D20repo
===================================================================
--- branches/messer-51/cEv-hook/D20repo	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/cEv-hook/D20repo	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,6 +3,8 @@
 LC_ALL=C
 export LC_ALL
 
+apt-get --purge install -y --force-yes apt-transport-https
+
 apt-key add - <<'EOF'
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: GnuPG v1.4.6 (GNU/Linux)
@@ -114,7 +116,7 @@
 -----END PGP PUBLIC KEY BLOCK-----
 EOF
 
-echo deb http://evolvis.evolvis.org/ lenny evolvis51 >>/etc/apt/sources.list
-echo deb http://mirror.netcologne.de/debian-backports lenny-backports main contrib non-free >>/etc/apt/sources.list
+echo deb https://evolvis.evolvis.org/ lenny evolvis51 >>/etc/apt/sources.list
+echo deb http://archive.debian.org/debian-backports lenny-backports main >>/etc/apt/sources.list
 
 apt-get update

Modified: branches/messer-51/mvntests/AllTests.php
===================================================================
--- branches/messer-51/mvntests/AllTests.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/mvntests/AllTests.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -13,7 +13,13 @@
 {
 	public static function main()
 	{
-		PHPUnit_TextUI_TestRunner::run(self::suite());
+		try {
+			$res = PHPUnit_TextUI_TestRunner::run(self::suite());
+		} catch (Exception $e) {
+			echo "Caught exception: " . $e->getMessage() . "\n";
+			exit(255);
+		}
+		exit($res->wasSuccessful() ? 0 : 1);
 	}
 
 	public static function suite()

Modified: branches/messer-51/mvntests/syntax/SyntaxTests.php
===================================================================
--- branches/messer-51/mvntests/syntax/SyntaxTests.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/mvntests/syntax/SyntaxTests.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,50 +7,102 @@
 /**
  * Syntax test class.
  *
- * @package   SyntaxTests
- * @author    Alain Peyrat <aljeux at free.fr>
- * @copyright 2009 Alain Peyrat. All rights reserved.
- * @license   http://www.opensource.org/licenses/gpl-license.php  GPL License
+ * @package	SyntaxTests
+ * @author	Alain Peyrat <aljeux at free.fr>
+ * @copyright	2009 Alain Peyrat. All rights reserved.
+ * @license	http://www.opensource.org/licenses/gpl-license.php  GPL License
  */
 class Syntax_Tests extends PHPUnit_Framework_TestCase
 {
-    /**
-     * Validate all php code with php -l.
-     */
-    public function testPhpSyntax()
-    {
-	    $output = `find src -name '*.php' -type f  -exec php -l {} \; | grep -v '^No syntax errors detected'`;
-	    $this->assertEquals('', $output);
-    }
+	/**
+	 * First, make sure pcregrep is installed
+	 */
+	public function testPcRegrepInstalled()
+	{
+		$output = `type pcregrep >/dev/null; echo $?`;
+		$rc = trim($output);
+		if ($rc != '0') {
+			$output = `type pcregrep`;
+			$this->fail('You should probably install "pcregrep" : `type pcregrep` reports "'.$output);
+		}
+	}
 
-    /**
-     * Validate all php code with isutf8.
-     */
-    public function testUTF8Chars()
-    {
-	    // Skip the wiki part which is not UTF-8 encoded.
-	    $output = `find src -name '*.php' -not -path 'src/plugins/wiki/www/*' -type f  -exec isutf8 {} \;`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.sql' -type f  -exec isutf8 {} \;`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.sh' -type f  -exec isutf8 {} \;`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.pl' -type f  -exec isutf8 {} \;`;
-	    $this->assertEquals('', $output);
-    }
+	/**
+	 * Validate all php code with php -l.
+	 */
+	public function testPhpSyntax()
+	{
+		$root = ".";
+		$output = `find $root/src $root/tests -name '*.php' -type f -exec php -l {} \; | grep -v '^No syntax errors detected'`;
+		$this->assertEquals('', $output);
+	}
 
-    /**
-     * Ensure all PHP files use Unix-style line endings
-     */
-    public function testUnixLineEndings()
-    {
-	    $output = `find src -name '*.php' -type f | xargs pcregrep -l '\r$'`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.sql' -type f | xargs pcregrep -l '\r$'`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.sh' -type f | xargs pcregrep -l '\r$'`;
-	    $this->assertEquals('', $output);
-	    $output = `find src -name '*.pl' -type f | xargs pcregrep -l '\r$'`;
-	    $this->assertEquals('', $output);
-    }
+	/**
+	 * Validate all scripts with isutf8.
+	 */
+	public function testUTF8Chars()
+	{
+		$root = ".";
+		$output = `find $root/src $root/tests -name '*.php' -type f | xargs isutf8`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.sql' -type f | xargs isutf8`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.sh' -type f | xargs isutf8`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.pl' -type f | xargs isutf8`;
+		$this->assertEquals('', $output);
+	}
+
+	/**
+	 * Ensure all scripts use Unix-style line endings
+	 */
+	public function testUnixLineEndings()
+	{
+		$root = ".";
+		$output = `find $root/src $root/tests -name '*.php' -type f | xargs pcregrep -l '\r$'`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.sql' -type f | xargs pcregrep -l '\r$'`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.sh' -type f | xargs pcregrep -l '\r$'`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -name '*.pl' -type f | xargs pcregrep -l '\r$'`;
+		$this->assertEquals('', $output);
+	}
+
+	/**
+	 * Ensure no scripts have SVN conflicts markers
+	 */
+	public function testSVNConflicts()
+	{
+		$root = ".";
+		$output = `find $root/src $root/tests -type f | xargs grep -l '^<<<<<<'`;
+		$this->assertEquals('', $output);
+		$output = `find $root/src $root/tests -type f | xargs grep -l '^>>>>>>'`;
+		$this->assertEquals('', $output);
+	}
+
+	/**
+	 * Ensure no script has an empty last line
+	 */
+	public function testEmptyLastLine()
+	{
+		$root = ".";
+		$output = `find $root/src $root/tests -name '*.php' -type f | while read i ; do [ -s \$i ] && [ -z "\$(tail -n 1 \$i)" ] && echo \$i ; done`;
+		$this->assertEquals('', $output);
+	}
+
+	/**
+	 * Validate syntax of gettextfiles
+	 */
+	public function testGettextSyntax()
+	{
+		$root = ".";
+		$output = `cd $root/src ; ./utils/manage-translations.sh check 2>&1`;
+		$this->assertEquals('', $output);
+	}
 }
+
+// Local Variables:
+// mode: php
+// c-file-style: "bsd"
+// End:

Modified: branches/messer-51/plugins/coclico/soapadmin/debian/rules
===================================================================
--- branches/messer-51/plugins/coclico/soapadmin/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/plugins/coclico/soapadmin/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -79,7 +79,7 @@
 	grep -v rpm-specific | grep -v docs/phpdoc/docs | \
 	grep -v ^./debian/ | grep -v \\.jar$$ | \
 	grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
-	cpio -o -H ustar | gzip > ../$(ORIGFILE)
+	paxcpio -M dist -oC512 -H ustar | gzip -n9 >../$(ORIGFILE)
 
 %:
 	dh  $@

Modified: branches/messer-51/plugins/templates/helloworld/debian/rules
===================================================================
--- branches/messer-51/plugins/templates/helloworld/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/plugins/templates/helloworld/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -79,7 +79,7 @@
 	grep -v rpm-specific | grep -v docs/phpdoc/docs | \
 	grep -v ^./debian/ | grep -v \\.jar$$ | \
 	grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
-	cpio -o -H ustar | gzip > ../$(ORIGFILE)
+	paxcpio -M dist -oC512 -H ustar | gzip -n9 >../$(ORIGFILE)
 
 %:
 	dh  $@

Modified: branches/messer-51/src/BuildDSC.sh
===================================================================
--- branches/messer-51/src/BuildDSC.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/BuildDSC.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -121,6 +121,9 @@
 upstreamversion=${version%%-*([!-])}
 upstreamversion=${upstreamversion#+([0-9]):}
 cd ..
+### BEGIN evolvis-5.1 PART 0
+make regress || exit 1
+### END evolvis-5.1 PART 0
 curname=${mydir##*/}
 newname=$pkgstem-$upstreamversion
 [[ $newname = $curname ]] || mv "$curname" "$newname"

Modified: branches/messer-51/src/common/advanced_search/ASFusionForgeParser.class.php
===================================================================
--- branches/messer-51/src/common/advanced_search/ASFusionForgeParser.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/advanced_search/ASFusionForgeParser.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -2,6 +2,8 @@
 /*-
  * Advanced Search
  *
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
  * Copyright © 2011
  *	Mike Esser <m.esser at tarent.de>
  * All rights reserved.
@@ -88,7 +90,7 @@
 					$curType  = $curToken->getType();
 
 					//We go a Standard field. Standard fields are not stored as extra fields!
-					$temp = $this->_generateStdFieldWhereSQL($dfiName, $curType, &$curTokenPointer, &$paramcount, &$params);
+					$temp = $this->_generateStdFieldWhereSQL($dfiName, $curType, $curTokenPointer, $paramcount, $params);
 
 					if ($temp === false) {
 						return "Invalid Syntax";

Modified: branches/messer-51/src/common/advanced_search/ASInputAnalyzer.class.php
===================================================================
--- branches/messer-51/src/common/advanced_search/ASInputAnalyzer.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/advanced_search/ASInputAnalyzer.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -40,7 +40,6 @@
 		$result = array();
 		$tokens = ASTokenizer::tokenize($input, $params);
 		$tokenCount = count($tokens);
-		$lastToken = end($tokens);
 		$forelastToken = $tokens[$tokenCount - 2];
 
 		$dfiList = $this->DFIProvider->getDFIList($params);

Modified: branches/messer-51/src/common/docman/include/vtemplate.class.php
===================================================================
--- branches/messer-51/src/common/docman/include/vtemplate.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/docman/include/vtemplate.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -206,7 +206,7 @@
 // pour débogage
 function message ($text)
 {
-	$t = ereg_replace("\n", "", $text);
+	$t = str_replace("\n", "", $text);
   if (defined("FICHIER_MESSAGES_DEBUG"))
 	{
 	  $fichier = FICHIER_MESSAGES_DEBUG;

Modified: branches/messer-51/src/common/docman/views/listfile.php
===================================================================
--- branches/messer-51/src/common/docman/views/listfile.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/docman/views/listfile.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -124,7 +124,7 @@
 		$tabletop[] = _('Actions');
 		$classth[] = 'unsortable';
 	echo '<div class="docmanDiv">';
-	echo $HTML->listTableTop($tabletop, false, 'sortable_docman_listfile', 'sortable', $classth);
+	echo $HTML->listTableTop($tabletop);
 	$time_new = 604800;
 	foreach ($nested_docs[$dirid] as $d) {
 		echo '<tr>';

Modified: branches/messer-51/src/common/frs/FRSFile.class.php
===================================================================
--- branches/messer-51/src/common/frs/FRSFile.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/frs/FRSFile.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -180,8 +180,9 @@
 			$this->FRSRelease->FRSPackage->getFileName().'/'.
 			$this->FRSRelease->getFileName().'/';
 
-		$ret = rename($file_location, $newfilelocation.$name);
-		if (!$ret) {
+		if (copy($file_location, $newfilelocation . $name)) {
+			@unlink($file_location);
+		} else {
 			$this->setError(_('File cannot be moved to the permanent location').': '.$newfilelocation.$name);
 			return false;
 		}

Modified: branches/messer-51/src/common/include/Error.class.php
===================================================================
--- branches/messer-51/src/common/include/Error.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/Error.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -71,6 +71,14 @@
 	 * @param	int	The error code
 	 */
 	function setError($string, $code=ERROR__UNCLASSIFIED_ERROR) {
+		global $sysdebug_enable;
+
+		if (util_ifsetor($sysdebug_enable) &&
+		    forge_get_config('sysdebug_backtraces')) {
+			ffDebug('error', get_class($this) . '::setError("' .
+			    $string . '", ' . $code . ')',
+			    debug_string_backtrace());
+		}
 		$this->error_state=true;
 		$this->error_message=$string;
 		$this->error_code=$code;
@@ -202,6 +210,8 @@
 	 *
 	 */
 	function setMissingParamsError($param=''){
+		ffDebug('trace', 'setMissingParamsError('.$param.')',
+		    debug_string_backtrace() . print_r(_getRequestArray(), 1));
 		if ($param) {
 			$param = ': ' . $param;
 		}

Modified: branches/messer-51/src/common/include/Group.class.php
===================================================================
--- branches/messer-51/src/common/include/Group.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/Group.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,4 +1,4 @@
-<?php   
+<?php
 /**
  * FusionForge groups
  *
@@ -83,9 +83,9 @@
 	//create a common set of group objects
 	//saves a little wear on the database
 
-	//automatically checks group_type and 
+	//automatically checks group_type and
 	//returns appropriate object
-	
+
 	global $GROUP_OBJ;
 	if (!isset($GROUP_OBJ["_".$group_id."_"])) {
 		if ($res) {
@@ -113,11 +113,11 @@
 
 function &group_get_objects($id_arr) {
 	global $GROUP_OBJ;
-	
+
 	// Note: if we don't do this, the result may be corrupted
 	$fetch = array();
 	$return = array();
-	
+
 	foreach ($id_arr as $id) {
 		//
 		//	See if this ID already has been fetched in the cache
@@ -174,14 +174,14 @@
 class Group extends Error {
 	/**
 	 * Associative array of data from db.
-	 * 
+	 *
 	 * @var array $data_array.
 	 */
 	var $data_array;
 
 	/**
 	 * array of User objects.
-	 * 
+	 *
 	 * @var array $membersArr.
 	 */
 	var $membersArr;
@@ -195,14 +195,14 @@
 
 	/**
 	 * Artifact types result handle.
-	 * 
+	 *
 	 * @var int $types_res.
 	 */
 	var $types_res;
 
 	/**
 	 * Associative array of data for plugins.
-	 * 
+	 *
 	 * @var array $plugins_data.
 	 */
 	var $plugins_data;
@@ -250,7 +250,7 @@
 				}
 			}
 		}
-		
+
 		return true;
 	}
 
@@ -274,7 +274,7 @@
 	 *	create - Create new group.
 	 *
 	 *	This method should be called on empty Group object.
-	 *  
+	 *
 	 *  @param	object	The User object.
 	 *  @param	string	The full name of the user.
 	 *  @param	string	The Unix name of the user.
@@ -328,7 +328,7 @@
 
 
 			db_begin();
-	
+
 			$res = db_query_params ('
 				INSERT INTO groups (
 					group_name,
@@ -350,8 +350,7 @@
 						       $unix_name,
 						       $description_e,
 						       $unix_name.".".forge_get_config('web_host'),
-						       util_make_url('/www/' . $unix_name . '/
-'),
+						       util_make_url('/www/' . $unix_name . '/'),
 						       'P',
 						       $unix_box,
 						       $scm_box,
@@ -365,14 +364,14 @@
 				db_rollback();
 				return false;
 			}
-	
+
 			$id = db_insertid($res, 'groups', 'group_id');
 			if (!$id) {
 				$this->setError(sprintf(_('ERROR: Could not get group id: %s'),db_error()));
 				db_rollback();
 				return false;
 			}
-			
+
 			if (!$this->fetchData($id)) {
 				db_rollback();
 				return false;
@@ -389,7 +388,7 @@
 			//
 			$res=db_query_params ('INSERT INTO user_group (user_id, group_id, admin_flags,
 				cvs_flags, artifact_flags, forum_flags, role_id)
-				VALUES ($1, $2, $3, $4, $5, $6, $7)', 
+				VALUES ($1, $2, $3, $4, $5, $6, $7)',
 					      array ($user->getID(),
 						     $id,
 						     'A',
@@ -403,14 +402,14 @@
 				return false;
 			}
 			}
-	
+
 			$hook_params = array ();
 			$hook_params['group'] = $this;
 			$hook_params['group_id'] = $this->getID();
 			$hook_params['group_name'] = $group_name;
 			$hook_params['unix_group_name'] = $unix_name;
 			plugin_hook ("group_create", $hook_params);
-			
+
 			db_commit();
 			if ($send_mail) {
 				$this->sendNewProjectNotificationEmail();
@@ -601,7 +600,7 @@
 
 		db_begin();
 
-		//XXX not yet actived logo_image_id='$logo_image_id', 
+		//XXX not yet actived logo_image_id='$logo_image_id',
 		$res = db_query_params ('UPDATE groups
 			SET group_name=$1,
 				homepage=$2,
@@ -776,7 +775,7 @@
 		$hook_params['group_id'] = $this->getID();
 		$hook_params['status'] = $status;
 		plugin_hook ("group_setstatus", $hook_params);
-		
+
 		db_commit();
 
 		// Log the audit trail
@@ -979,7 +978,7 @@
 	function getLicense() {
 		return $this->data_array['license'];
 	}
-	
+
 	/**
 	 * getLicenseName - the name of the license
 	 *
@@ -1024,7 +1023,7 @@
 	 */
 	function &getAdmins() {
 		$roles = RBACEngine::getInstance()->getRolesByAllowedAction ('project_admin', $this->getID()) ;
-		
+
 		$user_ids = array () ;
 
 		foreach ($roles as $role) {
@@ -1035,15 +1034,15 @@
 			    || $role->getHomeProject()->getID() != $this->getID()) {
 				continue ;
 			}
-			
+
 			foreach ($role->getUsers() as $u) {
 				$user_ids[] = $u->getID() ;
 			}
 		}
-			
+
 		return user_get_objects(array_unique($user_ids));
 	}
-		
+
 	/*
 
 		Common Group preferences for tools
@@ -1223,7 +1222,7 @@
 		} else {
 			return false;
 		}
-	}	   
+	}
 
 	/**
 	 *	setUseForum - Set the forum usage
@@ -1424,7 +1423,7 @@
 		} else {
 			return false;
 		}
-	}	   
+	}
 
 	/**
 	 *  usesPM - whether or not this group has opted to Project Manager.
@@ -1483,7 +1482,7 @@
 	}
 
 	/**
-	 *  usesPlugin - returns true if the group uses a particular plugin 
+	 *  usesPlugin - returns true if the group uses a particular plugin
 	 *
 	 *  @param	string	name of the plugin
 	 *  @return	boolean	whether plugin is being used or not
@@ -1523,7 +1522,7 @@
 	 *
 	 *  @param	string	name of the plugin
 	 *  @param	boolean	the new state
-	 *  @return	string	database result 
+	 *  @return	string	database result
 	 */
 	function setPluginUse($pluginname, $val=true) {
 		if ($val == $this->usesPlugin($pluginname)) {
@@ -1551,6 +1550,7 @@
 						       $plugin_id));
 			return $res ;
 		}
+		$this->normalizeAllRoles () ;
 	}
 
 	/**
@@ -1578,7 +1578,7 @@
 	 *	@return	string	homepage URL.
 	 */
 	function getHomePage() {
-		if (!ereg("^[a-zA-Z][a-zA-Z0-9+.-]*:",
+		if (!preg_match("/^[a-zA-Z][a-zA-Z0-9+.-]*:/",
 		    $this->data_array['homepage'])) {
 			$this->data_array['homepage'] = util_url_prefix() .
 			    $this->data_array['homepage'];
@@ -1675,12 +1675,12 @@
 		//
 		//	Remove all the members
 		//
-		$members =& $this->getMembers();
+		$members = $this->getMembers();
 		foreach ($members as $i) {
 			$this->removeUser($i->getID());
 		}
 		// Failsafe until user_group table is gone
-		$res = db_query_params ('DELETE FROM user_group WHERE group_id=$1', 
+		$res = db_query_params ('DELETE FROM user_group WHERE group_id=$1',
 					array ($this->getID())) ;
 
 		// unlink roles from this project
@@ -1793,7 +1793,7 @@
 			db_rollback();
 			return false;
 		}
-					
+
 		//
 		//	Delete group history
 		//
@@ -1847,7 +1847,7 @@
 		//
 		$sqf = new SurveyQuestionFactory($this);
 		$sq_arr =& $sqf->getSurveyQuestions();
-		foreach ($sq_arr as $i) {
+		if ($sq_arr) foreach ($sq_arr as $i) {
 			if (!is_object($i)) {
 				continue;
 			}
@@ -1866,7 +1866,7 @@
 			if (!is_object($i)) {
 				continue;
 			}
-			if (!$i->delete(1,1)) {
+			if (!$i->delete(2, 2)) {
 				$this->setError(_('Could not properly delete the mailing list'));
 				db_rollback();
 				return false;
@@ -1924,12 +1924,12 @@
 		if (!$res) {
 			return false;
 		}
-               
+
 		$hook_params = array ();
 		$hook_params['group'] = $this;
 		$hook_params['group_id'] = $this->getID();
 		plugin_hook ("group_delete", $hook_params);
-		
+
 		if (forge_get_config('upload_dir') != '' && $this->getUnixName()) {
 			exec('/bin/rm -rf '.forge_get_config('upload_dir').'/'.$this->getUnixName().'/');
 		}
@@ -1964,7 +1964,7 @@
 
 	/**
 	 *	addUser - controls adding a user to a group.
-	 *  
+	 *
 	 *  @param	string	Unix name of the user to add OR integer user_id.
 	 *	@param	int	The role_id this user should have.
 	 *	@return	boolean	success.
@@ -1981,7 +1981,7 @@
 			return false;
 		}
 		db_begin();
-		
+
 		/*
 			get user id for this user's unix_name
 		*/
@@ -2015,7 +2015,7 @@
 				db_rollback();
 				return false;
 			}
-			
+
 			if (USE_PFO_RBAC) {
 				$role->addUser (user_get_object ($user_id)) ;
 				if (!$SYS->sysCheckCreateGroup($this->getID())){
@@ -2038,8 +2038,8 @@
 			//
 			//	if not already a member, add them
 			//
-			$res_member = db_query_params ('SELECT user_id 
-				FROM user_group 
+			$res_member = db_query_params ('SELECT user_id
+				FROM user_group
 				WHERE user_id=$1 AND group_id=$2',
 						       array ($user_id, $this->getID())) ;
 
@@ -2047,7 +2047,7 @@
 				//
 				//	Create this user's row in the user_group table
 				//
-				$res = db_query_params ('INSERT INTO user_group 
+				$res = db_query_params ('INSERT INTO user_group
 					(user_id,group_id,admin_flags,forum_flags,project_flags,
 					doc_flags,cvs_flags,member_role,release_flags,artifact_flags)
 					VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)',
@@ -2098,7 +2098,7 @@
 			} else {
 				//
 				//  user was already a member
-				//  make sure they are set up 
+				//  make sure they are set up
 				//
 				$user= user_get_object($user_id,$res_newuser);
 				$user->fetchData($user->getID());
@@ -2143,7 +2143,7 @@
 		$hook_params['user'] = &user_get_object($user_id);
 		$hook_params['user_id'] = $user_id;
 		plugin_hook ("group_adduser", $hook_params);
-		
+
 		//
 		//	audit trail
 		//
@@ -2154,12 +2154,12 @@
 
 	/**
 	 *  removeUser - controls removing a user from a group.
-	 * 
+	 *
 	 *  Users can remove themselves.
 	 *
 	 *  @param	int		The ID of the user to remove.
 	 *	@return	boolean	success.
-	 */ 
+	 */
 	function removeUser($user_id) {
 		global $SYS;
 
@@ -2168,7 +2168,7 @@
 			$this->setPermissionDeniedError();
 			return false;
 		}
-	
+
 		db_begin();
 
 		if (USE_PFO_RBAC) {
@@ -2194,7 +2194,7 @@
 			}
 
 		} else {
-			$res = db_query_params ('DELETE FROM user_group WHERE group_id=$1 AND user_id=$2', 
+			$res = db_query_params ('DELETE FROM user_group WHERE group_id=$1 AND user_id=$2',
 						array ($this->getID(),
 						       $user_id)) ;
 			if (!$res || db_affected_rows($res) < 1) {
@@ -2208,9 +2208,9 @@
 			//	reassign open artifacts to id=100
 			//
 			$res = db_query_params ('UPDATE artifact SET assigned_to=100
-				WHERE group_artifact_id 
-				IN (SELECT group_artifact_id 
-				FROM artifact_group_list 
+				WHERE group_artifact_id
+				IN (SELECT group_artifact_id
+				FROM artifact_group_list
 				WHERE group_id=$1 AND status_id=1 AND assigned_to=$2)',
 						array ($this->getID(),
 						       $user_id)) ;
@@ -2222,13 +2222,13 @@
 
 			//
 			//	reassign open tasks to id=100
-			//	first have to purge any assignments that would cause 
+			//	first have to purge any assignments that would cause
 			//	conflict with existing assignment to 100
 			//
 			$res = db_query_params ('DELETE FROM project_assigned_to
-					WHERE project_task_id IN (SELECT pt.project_task_id 
-					FROM project_task pt, project_group_list pgl, project_assigned_to pat 
-					WHERE pt.group_project_id = pgl.group_project_id 
+					WHERE project_task_id IN (SELECT pt.project_task_id
+					FROM project_task pt, project_group_list pgl, project_assigned_to pat
+					WHERE pt.group_project_id = pgl.group_project_id
 					AND pat.project_task_id=pt.project_task_id
 					AND pt.status_id=1 AND pgl.group_id=$1
 					AND pat.assigned_to_id=$2)
@@ -2241,10 +2241,10 @@
 				return false;
 			}
 			$res = db_query_params ('UPDATE project_assigned_to SET assigned_to_id=100
-				WHERE project_task_id IN (SELECT pt.project_task_id 
-				FROM project_task pt, project_group_list pgl 
-				WHERE pt.group_project_id = pgl.group_project_id 
-				AND pt.status_id=1 AND pgl.group_id=$1) 
+				WHERE project_task_id IN (SELECT pt.project_task_id
+				FROM project_task pt, project_group_list pgl
+				WHERE pt.group_project_id = pgl.group_project_id
+				AND pt.status_id=1 AND pgl.group_id=$1)
 				AND assigned_to_id=$2',
 						array ($this->getID(),
 						       $user_id)) ;
@@ -2271,18 +2271,18 @@
 
 			//audit trail
 			$this->addHistory('Removed User',$user_id);
-		
+
 		db_commit();
 		return true;
 	}
 
-	/**	 
+	/**
 	 *  updateUser - controls updating a user's role in this group.
 	 *
 	 *  @param	int		The ID of the user.
 	 *	@param	int		The role_id to set this user to.
 	 *	@return	boolean	success.
-	 */	 
+	 */
 	function updateUser($user_id,$role_id) {
 		global $SYS;
 
@@ -2299,7 +2299,7 @@
 			} elseif ($newrole->isError()) {
 				$this->setError(sprintf(_('Role: %s'),$role->getErrorMessage()));
 				return false;
-			} elseif ($newrole->getHomeProject() == NULL 
+			} elseif ($newrole->getHomeProject() == NULL
 				  || $newrole->getHomeProject()->getID() != $this->getID()) {
 				$this->setError(_('Wrong destination role'));
 				return false;
@@ -2334,8 +2334,8 @@
 			$this->setError(sprintf(_('Role: %s'),$role->getErrorMessage()));
 			return false;
 		}
-		}		
-		
+		}
+
 		$this->addHistory('Updated User',$user_id);
 		return true;
 	}
@@ -2345,24 +2345,26 @@
 	 *
 	 *  @param	string	The name of the field.
 	 *  @param	string	The Old Value for this $field_name.
+	 *  @param	string	The New Value for this $field_name.
 	 *	@return database result handle.
 	 *	@access public
 	 */
-	function addHistory($field_name, $old_value) {
-		return db_query_params ('INSERT INTO group_history(group_id,field_name,old_value,mod_by,adddate) 
-			VALUES ($1,$2,$3,$4,$5)',
+	function addHistory($field_name, $old_value, $new_value="") {
+		return db_query_params ('INSERT INTO group_history(group_id,field_name,old_value,new_value,mod_by,adddate)
+			VALUES ($1,$2,$3,$4,$5,$6)',
 					array ($this->getID(),
 					       $field_name,
 					       $old_value,
+					       $new_value,
 					       user_getid(),
 					       time()));
-	}		  
+	}
 
 	/**
 	 *	activateUsers - Make sure that group members have unix accounts.
 	 *
 	 *	Setup unix accounts for group members. Can be called even
-	 *	if members are already active. 
+	 *	if members are already active.
 	 *
 	 *	@access private
 	 */
@@ -2370,7 +2372,7 @@
 		/*
 			Activate member(s) of the project
 		*/
-		
+
 		if (USE_PFO_RBAC) {
 		$members = $this->getUsers (true) ;
 
@@ -2384,7 +2386,7 @@
 					return false ;
 				}
 			}
-			
+
 		}
 		} else {
 			$res_member = db_query_params ('SELECT user_id,role_id FROM user_group WHERE group_id=$1',
@@ -2396,7 +2398,7 @@
 				}
 			}
 		}
-		
+
 		return true ;
 	}
 
@@ -2436,7 +2438,7 @@
 			$this->setError(_("Group already active"));
 			return false;
 		}
-		
+
 		db_begin();
 
 		// Step 1: Activate group and create LDAP entries
@@ -2503,7 +2505,7 @@
 			$adminperms = array ('project_admin' => array ($this->getID() => 1)) ;
 			$role_id = $role->create ('Admin', $adminperms, true) ;
 		}
-		
+
 		if (USE_PFO_RBAC) {
 			$roles = $this->getRoles() ;
 			foreach ($roles as $r) {
@@ -2515,7 +2517,7 @@
 				}
 			}
 		}
-		
+
 		// Temporarily switch to the submitter's identity
 		$saved_session = session_get_user () ;
 		session_set_internal ($idadmin_group) ;
@@ -2529,7 +2531,7 @@
 						$t = new ArtifactType ($this) ;
 						$t->create ($this->replaceTemplateStrings($o->getName()),$this->replaceTemplateStrings($o->getDescription()),$o->isPublic(),$o->allowsAnon(),$o->emailAll(),$o->getEmailAddress(),$o->getDuePeriod()/86400,0,$o->getSubmitInstructions(),$o->getBrowseInstructions()) ;
 						$id_mappings['tracker'][$o->getID()] = $t->getID() ;
-						$t->cloneFieldsFrom ($o->getID()) ;
+						$t->cloneFieldsFrom($template, $o->getID());
 					}
 				}
 			}
@@ -2557,7 +2559,7 @@
 					}
 				}
 			}
-			
+
 			if (forge_get_config ('use_docman')) {
 				$this->setUseDocman ($template->usesDocman()) ;
 				if ($template->usesDocman()) {
@@ -2577,7 +2579,7 @@
 					}
 				}
 			}
-			
+
 			if (forge_get_config ('use_frs')) {
 				$this->setUseFRS ($template->usesFRS()) ;
 				if ($template->usesFRS()) {
@@ -2603,7 +2605,7 @@
 				}
 			}
 
-			$this->setUseSCM ($template->usesSCM()) ;
+//			$this->setUseSCM ($template->usesSCM()) ;
 
 			foreach ($template->getPlugins() as $plugin_id => $plugin_name) {
 				$this->setPluginUse ($plugin_name) ;
@@ -2616,7 +2618,7 @@
 					$newrole->setPublic ($oldrole->isPublic()) ;
 				}
 				$oldsettings = $oldrole->getSettingsForProject ($template) ;
-				
+
 				$sections = array ('project_read', 'project_admin', 'frs', 'scm', 'docman', 'tracker_admin', 'new_tracker', 'forum_admin', 'new_forum', 'pm_admin', 'new_pm') ;
 				foreach ($sections as $section) {
 					$newrole->setSetting ($section, $this->getID(), $oldsettings[$section][$template->getID()]) ;
@@ -2635,7 +2637,7 @@
 						}
 					}
 				}
-			}	
+			}
 
 			$lm = new WidgetLayoutManager();
 			$lm->createDefaultLayoutForProject ($this->getID(), $template->getID()) ;
@@ -2669,14 +2671,14 @@
 
 		$this->sendApprovalEmail();
 		$this->addHistory('Approved', 'x');
-		
-		// 
+
+		//
 		//	Plugin can make approve operation there
 		//
-		//	
+		//
 		$params[0] = $idadmin_group ;
 		$params[1] = $this->getID();
-		plugin_hook('group_approved',$params);	
+		plugin_hook('group_approved',$params);
 
 		return true;
 	}
@@ -2731,14 +2733,16 @@
 Enjoy the system, and please tell others about %4$s. Let us know
 if there is anything we can do to help you.
 
--- the %4$s crew'), 
-						       htmlspecialchars_decode($this->getPublicName()),
-						       $this->getUnixName(), 
-						       util_make_url ('/project/admin/?group_id='.$this->getID()),
-						       forge_get_config ('forge_name'));
-	
-			util_send_message($admin->getEmail(), sprintf(_('%1$s Project Approved'), forge_get_config ('forge_name')), $message);
+-- the %4$s crew'),
+			    util_unconvert_htmlspecialchars($this->getPublicName()),
+			    $this->getUnixName(),
+			    util_make_url('/project/admin/?group_id='.$this->getID()),
+			    forge_get_config('forge_name'));
 
+			util_send_message($admin->getEmail(),
+			    sprintf(_('%1$s Project Approved'),
+			    forge_get_config('forge_name')), $message);
+
 			setup_gettext_from_context();
 		}
 
@@ -2798,7 +2802,9 @@
 					"response_text");
 			}
 
-			util_send_message($admin->getEmail(), sprintf(_('%1$s Project Denied'), forge_get_config ('forge_name')), $response);
+			util_send_message($admin->getEmail(),
+			    sprintf(_('%1$s Project Denied'),
+			    forge_get_config('forge_name')), $response);
 			setup_gettext_from_context();
 		}
 
@@ -2833,7 +2839,7 @@
 			$this->setError(_("Could not find user who has submitted the project."));
 			return false;
 		}
-		
+
 		$admins = RBACEngine::getInstance()->getUsersByAllowedAction ('approve_projects', -1) ;
 
 		if (count($admins) < 1) {
@@ -2848,45 +2854,53 @@
 			foreach ($submitters as $u) {
 				$submitter_names[] = $u->getRealName() ;
 			}
-			
+
 			$message = sprintf(_('New %1$s Project Submitted
 
 Project Full Name:  %2$s
 Submitted Description: %3$s
 '),
-					   forge_get_config ('forge_name'),
-					   htmlspecialchars_decode($this->getPublicName()),
-					   htmlspecialchars_decode($this->getRegistrationPurpose()));
-			
+			    forge_get_config('forge_name'),
+			    util_unconvert_htmlspecialchars($this->getPublicName()),
+			    util_unconvert_htmlspecialchars($this->getRegistrationPurpose()));
+
 			foreach ($submitters as $submitter) {
 				$message .= sprintf(_('Submitter: %1$s (%2$s)
 '),
-						    $submitter->getRealName(), 
-						    $submitter->getUnixName());
+				    $submitter->getRealName(),
+				    $submitter->getUnixName());
 			}
 
 			$message .= sprintf (_('
 Please visit the following URL to approve or reject this project:
 %1$s'),
-					    util_make_url ('/admin/approve-pending.php')) ;
-			util_send_message($admin_email, sprintf(_('New %1$s Project Submitted'), forge_get_config ('forge_name')), $message);
+			    util_make_url ('/admin/approve-pending.php')) ;
+			util_send_message($admin_email,
+			    sprintf(_('New %1$s Project Submitted'),
+			    forge_get_config('forge_name')), $message);
 			setup_gettext_from_context();
 		}
-		
 
+
 		$email = $submitter->getEmail() ;
 		setup_gettext_for_user ($submitter) ;
-				
+
 		$message=sprintf(_('New %1$s Project Submitted
 
 Project Full Name:  %2$s
 Submitted Description: %3$s
 
-The %1$s admin team will now examine your project submission.  You will be notified of their decision.'), forge_get_config ('forge_name'), $this->getPublicName(), util_unconvert_htmlspecialchars($this->getRegistrationPurpose()), forge_get_config('web_host'));
-				
-		util_send_message($email, sprintf(_('New %1$s Project Submitted'), forge_get_config ('forge_name')), $message);
+The %1$s admin team will now examine your project submission.  You will be notified of their decision.'),
+		    forge_get_config('forge_name'),
+		    $this->getPublicName(),
+		    util_unconvert_htmlspecialchars($this->getRegistrationPurpose()),
+		    forge_get_config('web_host'));
+
+		util_send_message($email,
+		    sprintf(_('New %1$s Project Submitted'),
+		    forge_get_config('forge_name')), $message);
 		setup_gettext_from_context();
-		
+
 		return true;
 	}
 
@@ -2922,7 +2936,7 @@
 	 */
 	function getRolesId () {
 		$role_ids = array () ;
-		
+
 		if (USE_PFO_RBAC) {
 			$res = db_query_params ('SELECT role_id FROM pfo_role WHERE home_group_id=$1',
 						array ($this->getID()));
@@ -2941,15 +2955,15 @@
 				$role_ids[] = $arr['role_id'] ;
 			}
 		}
-		
+
 		return array_unique ($role_ids) ;
 	}
-	
+
 	function getRoles () {
 		$result = array () ;
 
 		$roles = $this->getRolesId () ;
-		if (USE_PFO_RBAC) {				
+		if (USE_PFO_RBAC) {
 			$engine = RBACEngine::getInstance() ;
 			foreach ($roles as $role_id) {
 				$result[] = $engine->getRoleById ($role_id) ;
@@ -2965,7 +2979,7 @@
 
 	function normalizeAllRoles () {
 		$roles = $this->getRoles () ;
-		
+
 		foreach ($roles as $r) {
 			$r->normalizeData () ;
 		}
@@ -2979,7 +2993,7 @@
 	function getUnixStatus() {
 		return $this->data_array['unix_status'];
 	}
-	
+
 	/**
 	 *	setUnixStatus - Sets status of activation of unix account.
 	 *
@@ -2997,7 +3011,7 @@
 		$res = db_query_params ('UPDATE groups SET unix_status=$1 WHERE group_id=$2',
 					array ($status,
 					       $this->getID())) ;
-	
+
 		if (!$res) {
 			$this->setError(sprintf(_('ERROR - Could Not Update Group Unix Status: %s'),db_error()));
 			db_rollback();
@@ -3018,13 +3032,13 @@
 					}
 				}
 			}
-			
+
 			$this->data_array['unix_status']=$status;
 			db_commit();
 			return true;
 		}
 	}
-	
+
 	/**
 	 *	getUsers - Get the users of a group
 	 *
@@ -3033,11 +3047,11 @@
 	function getUsers($onlylocal = true) {
 		if (!isset($this->membersArr)) {
 			$this->membersArr = array () ;
-			
+
 			if (USE_PFO_RBAC) {
 				$ids = array () ;
 				foreach ($this->getRoles() as $role) {
-					if ($onlylocal 
+					if ($onlylocal
 					    && ($role->getHomeProject() == NULL || $role->getHomeProject()->getID() != $this->getID())) {
 						continue ;
 					}
@@ -3053,7 +3067,7 @@
 					}
 				}
 			} else {
-				
+
 				$users_group_res = db_query_params ('SELECT u.user_id FROM users u, user_group ug WHERE ug.group_id=$1 AND ug.user_id=u.user_id AND u.status=$2',
 								    array ($this->getID(),
 									   'A'));
@@ -3061,11 +3075,11 @@
 					$this->setError(_('Error: Enable to get users from group'). ' ' . $this->getID() . ' ' .db_error());
 					return false;
 				}
-				
+
 				for ($i=0; $i<db_numrows($users_group_res); $i++) {
 					$this->membersArr[$i] = new GFUser(db_result($users_group_res,$i,'user_id'),false);
 				}
-				
+
 			}
 		}
 		return $this->membersArr;
@@ -3077,7 +3091,7 @@
 		$res = db_query_params ('UPDATE groups SET use_docman_create_online=$1 WHERE group_id=$2',
 					array ($status,
 					       $this->getID())) ;
-	
+
 		if (!$res) {
 			$this->setError(sprintf(_('ERROR - Could Not Update Group DocmanCreateOnline Status: %s'),db_error()));
 			db_rollback();
@@ -3095,7 +3109,7 @@
 		$res = db_query_params ('UPDATE groups SET use_webdav=$1 WHERE group_id=$2',
 					array ($status,
 					       $this->getID())) ;
-	
+
 		if (!$res) {
 			$this->setError(sprintf(_('ERROR - Could Not Update Group UseWebdab Status: %s'),db_error()));
 			db_rollback();
@@ -3113,7 +3127,7 @@
 		$res = db_query_params ('UPDATE groups SET use_docman_search=$1, force_docman_reindex=$1 WHERE group_id=$2',
 					array ($status,
 					       $this->getID())) ;
-	
+
 		if (!$res) {
 			$this->setError(sprintf(_('ERROR - Could Not Update Group UseDocmanSearch Status: %s'),db_error()));
 			db_rollback();
@@ -3131,7 +3145,7 @@
 		$res = db_query_params ('UPDATE groups SET force_docman_reindex=$1 WHERE group_id=$2',
 					array ($status,
 					       $this->getID())) ;
-	
+
 		if (!$res) {
 			$this->setError(sprintf(_('ERROR - Could Not Update Group force_docman_reindex %s'),db_error()));
 			db_rollback();
@@ -3229,36 +3243,36 @@
 
 class ProjectComparator {
 	var $criterion = 'name' ;
+	var $reverse = false ;
 
 	function Compare ($a, $b) {
 		switch ($this->criterion) {
 		case 'name':
 		default:
-			$namecmp = strcoll ($a->getPublicName(), $b->getPublicName()) ;
-			if ($namecmp != 0) {
-				return $namecmp ;
+			$res = strcoll ($a->getPublicName(), $b->getPublicName()) ;
+			if ($res != 0) {
+				break;
 			}
 			/* If several projects share a same public name */
-			return strcoll ($a->getUnixName(), $b->getUnixName()) ;
+			$res = strcoll ($a->getUnixName(), $b->getUnixName()) ;
 			break ;
 		case 'unixname':
-			return strcmp ($a->getUnixName(), $b->getUnixName()) ;
+			$res = strcmp ($a->getUnixName(), $b->getUnixName()) ;
 			break ;
 		case 'id':
 			$aid = $a->getID() ;
 			$bid = $b->getID() ;
-			if ($a == $b) {
-				return 0;
-			}
-			return ($a < $b) ? -1 : 1;
+			$res = ($a == $b) ? 0 : ($a < $b) ? -1 : 1;
 			break ;
 		}
+		return ($this->reverse ? -$res : $res);
 	}
 }
 
-function sortProjectList (&$list, $criterion='name') {
+function sortProjectList (&$list, $criterion='name', $reverse=false) {
 	$cmp = new ProjectComparator () ;
 	$cmp->criterion = $criterion ;
+	$cmp->reverse = $reverse ;
 
 	return usort ($list, array ($cmp, 'Compare')) ;
 }
@@ -3267,5 +3281,3 @@
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/common/include/GroupJoinRequest.class.php
===================================================================
--- branches/messer-51/src/common/include/GroupJoinRequest.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/GroupJoinRequest.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -225,14 +225,19 @@
 			setup_gettext_for_user ($admins[$i]) ;
 		  
 			$email=$admins[$i]->getEmail();
-			$subject = sprintf(_('Request to Join Project %1$s'), $this->Group->getPublicName());
+			$subject = sprintf(_('Request to Join Project %1$s from %2$s (%3$s)'),
+					   $this->Group->getPublicName(),
+					   $user->getRealName(),
+					   $user->getUnixName()
+				);
 			$comments = util_unconvert_htmlspecialchars($this->data_array["comments"]);
-			$body = sprintf(_('%1$s has requested to join your project. 
-You can approve this request here: %2$s 
+			$body = sprintf(_('%1$s (%2$s) has requested to join your project. 
+You can approve this request here: %3$s 
 
 Comments by the user:
-%3$s'),
+%4$s'),
 					$user->getRealName(),
+					$user->getUnixName(),
 					util_make_url ('/project/admin/users.php?group_id='.$this->Group->getId()),
 					$comments);
 			$body = str_replace("\\n","\n",$body);

Modified: branches/messer-51/src/common/include/PluginManager.class.php
===================================================================
--- branches/messer-51/src/common/include/PluginManager.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/PluginManager.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -260,7 +260,7 @@
 	}
 
 	function getReturnedValue($hookname) {
-		return $this->returned_value[$hookname];
+		return util_ifsetor($this->returned_value[$hookname], "");
 	}
 
 	/**

Modified: branches/messer-51/src/common/include/RBAC.php
===================================================================
--- branches/messer-51/src/common/include/RBAC.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/RBAC.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -503,11 +503,6 @@
 	}
 
 	function setSetting ($section, $reference, $value) {
-		$cur = $this->getSettingRaw($section, $reference);
-		if (($value == $cur) && ($cur != NULL)) {
-			return true;
-		}
-
 		$role_id = $this->getID () ;
 
 		$res = db_query_params ('DELETE FROM pfo_role_setting WHERE role_id=$1 AND section_name=$2 AND ref_id=$3',

Modified: branches/messer-51/src/common/include/RBACEngine.class.php
===================================================================
--- branches/messer-51/src/common/include/RBACEngine.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/RBACEngine.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -116,15 +116,17 @@
 		$result[] = RoleAnonymous::getInstance() ;
 		$result[] = RoleLoggedIn::getInstance() ;
 		
+		$uid = is_object($user) ? $user->getID() : $user;
+
 		if (USE_PFO_RBAC) {
 			$res = db_query_params ('SELECT role_id FROM pfo_user_role WHERE user_id=$1',
-						array ($user->getID()));
+						array ($uid));
 			while ($arr = db_fetch_array($res)) {
 				$result[] = $this->getRoleById ($arr['role_id']) ;
 			}
 		} else {
 			$res = db_query_params ('SELECT role_id FROM user_group WHERE user_id=$1',
-						array ($user->getID()));
+						array ($uid));
 			while ($arr = db_fetch_array($res)) {
 				$result[] = $this->getRoleById ($arr['role_id']) ;
 			}
@@ -162,6 +164,11 @@
 	}
 
 	public function getRoleById ($role_id) {
+		if (($role_id = util_nat0($role_id)) === false) {
+			/* protect from non-numeric values */
+			return NULL;
+		}
+
 		if (array_key_exists ($role_id, $this->_cached_roles)) {
 			return $this->_cached_roles[$role_id] ;
 		}

Modified: branches/messer-51/src/common/include/SCMPlugin.class.php
===================================================================
--- branches/messer-51/src/common/include/SCMPlugin.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/SCMPlugin.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -43,6 +43,7 @@
 		# scm_gather_stats
 		# scm_browser_page
 		# scm_update_repolist
+		# scm_create_subrepo
 	}
 
 	function CallHook ($hookname, &$params) {
@@ -72,6 +73,10 @@
 			session_set_admin () ;
 			$this->createOrUpdateRepo ($params) ;
 			break;
+		case 'scm_create_subrepo': // Optional
+			session_set_admin () ;
+			$this->createOrUpdateSubRepo ($params) ;
+			break;
 		case 'scm_update_repolist':
 			session_set_admin () ;
 			$this->updateRepositoryList ($params) ;

Modified: branches/messer-51/src/common/include/User.class.php
===================================================================
--- branches/messer-51/src/common/include/User.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/User.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -304,7 +304,7 @@
 			// ...based on the email address:
 			$email_array = explode ('@', $email, 2) ;
 			$email_u = $email_array [0] ;
-			$l = ereg_replace ('[^a-z0-9]', '', $email_u) ;
+			$l = preg_replace('/[^a-z0-9]/', '', $email_u);
 			$l = substr ($l, 0, 15) ;
 			// Is the user part of the email address okay?
 			if (account_namevalid($l)

Modified: branches/messer-51/src/common/include/config-vars.php
===================================================================
--- branches/messer-51/src/common/include/config-vars.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/config-vars.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,130 +21,431 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-forge_define_config_item ('forge_name', 'core', $GLOBALS['sys_name']) ;
-forge_define_config_item ('force_login', 'core', $GLOBALS['sys_force_login']) ;
+require_once dirname(__FILE__).'/preutils.php';
+
+if (isset ($GLOBALS['sys_name'])) {
+	forge_define_config_item ('forge_name', 'core', $GLOBALS['sys_name']) ;
+} else {
+	forge_define_config_item ('forge_name', 'core', 'FusionForge') ;
+}
+if (isset ($GLOBALS['sys_force_login'])) {
+	forge_define_config_item ('force_login', 'core', $GLOBALS['sys_force_login']) ;
+} else {
+	forge_define_config_item ('force_login', 'core', false) ;
+}
 forge_set_config_item_bool ('force_login', 'core') ;
-forge_define_config_item ('user_registration_restricted', 'core', $GLOBALS['sys_user_reg_restricted']) ;
+if (isset ($GLOBALS['sys_user_reg_restricted'])) {
+	forge_define_config_item ('user_registration_restricted', 'core', $GLOBALS['sys_user_reg_restricted']) ;
+} else {
+	forge_define_config_item ('user_registration_restricted', 'core', false) ;
+}
 forge_set_config_item_bool ('user_registration_restricted', 'core') ;
-forge_define_config_item ('use_captcha', 'core', $GLOBALS['sys_user_reg_captcha']) ;
+forge_define_config_item ('use_captcha', 'core', util_ifsetor($GLOBALS['sys_user_reg_captcha']));
 forge_set_config_item_bool ('use_captcha', 'core');
-forge_define_config_item ('project_registration_restricted', 'core', $GLOBALS['sys_project_reg_restricted']) ;
+if (isset ($GLOBALS['sys_project_reg_restricted'])) {
+	forge_define_config_item ('project_registration_restricted', 'core', $GLOBALS['sys_project_reg_restricted']) ;
+} else {
+	forge_define_config_item ('project_registration_restricted', 'core', false) ;
+}
 forge_set_config_item_bool ('project_registration_restricted', 'core') ;
 forge_define_config_item ('project_auto_approval', 'core', false) ;
 forge_set_config_item_bool ('project_auto_approval', 'core') ;
 forge_define_config_item ('project_auto_approval_user', 'core', 'admin') ;
 forge_define_config_item ('allow_project_without_template', 'core', true) ;
 forge_set_config_item_bool ('allow_project_without_template', 'core') ;
-forge_define_config_item ('web_host', 'core', $GLOBALS['sys_default_domain']) ;
+if (isset ($GLOBALS['sys_default_domain'])) {
+	forge_define_config_item ('web_host', 'core', $GLOBALS['sys_default_domain']) ;
+} else {
+	forge_define_config_item ('web_host', 'core', '') ;
+}
 forge_define_config_item ('http_port', 'core', 80) ;
 forge_define_config_item ('https_port', 'core', 443) ;
-forge_define_config_item ('apache_user', 'core', $GLOBALS['sys_apache_user']) ;
-forge_define_config_item ('apache_group', 'core', $GLOBALS['sys_apache_group']) ;
+if (isset ($GLOBALS['sys_apache_user'])) {
+	forge_define_config_item ('apache_user', 'core', $GLOBALS['sys_apache_user']) ;
+} else {
+	forge_define_config_item ('apache_user', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_apache_group'])) {
+	forge_define_config_item ('apache_group', 'core', $GLOBALS['sys_apache_group']) ;
+} else {
+	forge_define_config_item ('apache_group', 'core', '') ;
+}
 forge_define_config_item ('scm_tarballs_path', 'core', '$core/data_path/scmtarballs') ;
 forge_define_config_item ('scm_snapshots_path', 'core', '$core/data_path/scmsnapshots') ;
 forge_define_config_item ('plugins_path', 'core', '$core/source_path/plugins') ;
 forge_define_config_item ('themes_root', 'core', '$core/source_path/www/themes') ;
-forge_define_config_item ('default_theme', 'core', $GLOBALS['sys_theme']) ;
-forge_define_config_item ('default_language', 'core', $GLOBALS['sys_lang']) ;
-forge_define_config_item ('default_timezone', 'core', $GLOBALS['sys_default_timezone']) ;
-forge_define_config_item ('default_country_code', 'core', $GLOBALS['sys_default_country_code']) ;
-forge_define_config_item ('use_scm', 'core', $GLOBALS['sys_use_scm']) ;
+if (isset ($GLOBALS['sys_theme'])) {
+	forge_define_config_item ('default_theme', 'core', $GLOBALS['sys_theme']) ;
+} else {
+	forge_define_config_item ('default_theme', 'core', 'gforge') ;
+}
+if (isset ($GLOBALS['sys_lang'])) {
+	forge_define_config_item ('default_language', 'core', $GLOBALS['sys_lang']) ;
+} else {
+	forge_define_config_item ('default_language', 'core', 'en') ;
+}
+if (isset ($GLOBALS['sys_default_timezone'])) {
+	forge_define_config_item ('default_timezone', 'core', $GLOBALS['sys_default_timezone']) ;
+} else {
+	forge_define_config_item ('default_timezone', 'core', 'UTC') ;
+}
+if (isset ($GLOBALS['sys_default_country_code'])) {
+	forge_define_config_item ('default_country_code', 'core', $GLOBALS['sys_default_country_code']) ;
+} else {
+	forge_define_config_item ('default_country_code', 'core', 'US') ;
+}
+if (isset ($GLOBALS['sys_use_scm'])) {
+	forge_define_config_item ('use_scm', 'core', $GLOBALS['sys_use_scm']) ;
+} else {
+	forge_define_config_item ('use_scm', 'core', true) ;
+}
 forge_set_config_item_bool ('use_scm', 'core') ;
-forge_define_config_item ('use_dav', 'core', @$GLOBALS['sys_use_dav']) ;
+if (isset ($GLOBALS['sys_use_dav'])) {
+	forge_define_config_item ('use_dav', 'core', $GLOBALS['sys_use_dav']) ;
+} else {
+	forge_define_config_item ('use_dav', 'core', true) ;
+}
 forge_set_config_item_bool ('use_dav', 'core') ;
-forge_define_config_item ('use_tracker', 'core', $GLOBALS['sys_use_tracker']) ;
+if (isset ($GLOBALS['sys_use_tracker'])) {
+	forge_define_config_item ('use_tracker', 'core', $GLOBALS['sys_use_tracker']) ;
+} else {
+	forge_define_config_item ('use_tracker', 'core', true) ;
+}
 forge_set_config_item_bool ('use_tracker', 'core') ;
-forge_define_config_item ('use_forum', 'core', $GLOBALS['sys_use_forum']) ;
+if (isset ($GLOBALS['sys_use_forum'])) {
+	forge_define_config_item ('use_forum', 'core', $GLOBALS['sys_use_forum']) ;
+} else {
+	forge_define_config_item ('use_forum', 'core', true) ;
+}
 forge_set_config_item_bool ('use_forum', 'core') ;
-forge_define_config_item ('use_pm', 'core', $GLOBALS['sys_use_pm']) ;
+if (isset ($GLOBALS['sys_use_pm'])) {
+	forge_define_config_item ('use_pm', 'core', $GLOBALS['sys_use_pm']) ;
+} else {
+	forge_define_config_item ('use_pm', 'core', true) ;
+}
 forge_set_config_item_bool ('use_pm', 'core') ;
-forge_define_config_item ('use_docman', 'core', $GLOBALS['sys_use_docman']) ;
+if (isset ($GLOBALS['sys_use_docman'])) {
+	forge_define_config_item ('use_docman', 'core', $GLOBALS['sys_use_docman']) ;
+} else {
+	forge_define_config_item ('use_docman', 'core', true) ;
+}
 forge_set_config_item_bool ('use_docman', 'core') ;
-forge_define_config_item ('use_diary', 'core', $GLOBALS['sys_use_diary']) ;
+if (isset ($GLOBALS['sys_use_diary'])) {
+	forge_define_config_item ('use_diary', 'core', $GLOBALS['sys_use_diary']) ;
+} else {
+	forge_define_config_item ('use_diary', 'core', false) ;
+}
 forge_set_config_item_bool ('use_diary', 'core') ;
-forge_define_config_item ('use_news', 'core', $GLOBALS['sys_use_news']) ;
+if (isset ($GLOBALS['sys_use_news'])) {
+	forge_define_config_item ('use_news', 'core', $GLOBALS['sys_use_news']) ;
+} else {
+	forge_define_config_item ('use_news', 'core', true) ;
+}
 forge_set_config_item_bool ('use_news', 'core') ;
-forge_define_config_item ('use_mail', 'core', $GLOBALS['sys_use_mail']) ;
+if (isset ($GLOBALS['sys_use_mail'])) {
+	forge_define_config_item ('use_mail', 'core', $GLOBALS['sys_use_mail']) ;
+} else {
+	forge_define_config_item ('use_mail', 'core', true) ;
+}
 forge_set_config_item_bool ('use_mail', 'core') ;
-forge_define_config_item ('use_survey', 'core', $GLOBALS['sys_use_survey']) ;
+if (isset ($GLOBALS['sys_use_survey'])) {
+	forge_define_config_item ('use_survey', 'core', $GLOBALS['sys_use_survey']) ;
+} else {
+	forge_define_config_item ('use_survey', 'core', true) ;
+}
 forge_set_config_item_bool ('use_survey', 'core') ;
-forge_define_config_item ('use_frs', 'core', $GLOBALS['sys_use_frs']) ;
+if (isset ($GLOBALS['sys_use_frs'])) {
+	forge_define_config_item ('use_frs', 'core', $GLOBALS['sys_use_frs']) ;
+} else {
+	forge_define_config_item ('use_frs', 'core', true) ;
+}
 forge_set_config_item_bool ('use_frs', 'core') ;
-forge_define_config_item ('use_project_tags', 'core', $GLOBALS['sys_use_project_tags']) ;
+if (isset ($GLOBALS['sys_use_project_tags'])) {
+	forge_define_config_item ('use_project_tags', 'core', $GLOBALS['sys_use_project_tags']) ;
+} else {
+	forge_define_config_item ('use_project_tags', 'core', true) ;
+}
 forge_set_config_item_bool ('use_project_tags', 'core') ;
-forge_define_config_item ('use_project_full_list', 'core', $GLOBALS['sys_use_project_full_list']) ;
+if (isset ($GLOBALS['sys_use_project_full_list'])) {
+	forge_define_config_item ('use_project_full_list', 'core', $GLOBALS['sys_use_project_full_list']) ;
+} else {
+	forge_define_config_item ('use_project_full_list', 'core', true) ;
+}
 forge_set_config_item_bool ('use_project_full_list', 'core') ;
-forge_define_config_item ('use_fti', 'core', $GLOBALS['sys_use_fti']) ;
+if (isset ($GLOBALS['sys_use_fti'])) {
+	forge_define_config_item ('use_fti', 'core', $GLOBALS['sys_use_fti']) ;
+} else {
+	forge_define_config_item ('use_fti', 'core', true) ;
+}
 forge_set_config_item_bool ('use_fti', 'core') ;
-forge_define_config_item ('use_ftp', 'core', $GLOBALS['sys_use_ftp']) ;
+if (isset ($GLOBALS['sys_use_ftp'])) {
+	forge_define_config_item ('use_ftp', 'core', $GLOBALS['sys_use_ftp']) ;
+} else {
+	forge_define_config_item ('use_ftp', 'core', false) ;
+}
 forge_set_config_item_bool ('use_ftp', 'core') ;
-forge_define_config_item ('use_trove', 'core', $GLOBALS['sys_use_trove']) ;
+if (isset ($GLOBALS['sys_use_trove'])) {
+	forge_define_config_item ('use_trove', 'core', $GLOBALS['sys_use_trove']) ;
+} else {
+	forge_define_config_item ('use_trove', 'core', true) ;
+}
 forge_set_config_item_bool ('use_trove', 'core') ;
-forge_define_config_item ('use_snippet', 'core', $GLOBALS['sys_use_snippet']) ;
+if (isset ($GLOBALS['sys_use_snippet'])) {
+	forge_define_config_item ('use_snippet', 'core', $GLOBALS['sys_use_snippet']) ;
+} else {
+	forge_define_config_item ('use_snippet', 'core', true) ;
+}
 forge_set_config_item_bool ('use_snippet', 'core') ;
-forge_define_config_item ('use_ssl', 'core', $GLOBALS['sys_use_ssl']) ;
+if (isset ($GLOBALS['sys_use_ssl'])) {
+	forge_define_config_item ('use_ssl', 'core', $GLOBALS['sys_use_ssl']) ;
+} else {
+	forge_define_config_item ('use_ssl', 'core', true) ;
+}
 forge_set_config_item_bool ('use_ssl', 'core') ;
-forge_define_config_item ('use_people', 'core', $GLOBALS['sys_use_people']) ;
+if (isset ($GLOBALS['sys_use_people'])) {
+	forge_define_config_item ('use_people', 'core', $GLOBALS['sys_use_people']) ;
+} else {
+	forge_define_config_item ('use_people', 'core', false) ;
+}
 forge_set_config_item_bool ('use_people', 'core') ;
-forge_define_config_item ('use_shell', 'core', $GLOBALS['sys_use_shell']) ;
+if (isset ($GLOBALS['sys_use_shell'])) {
+	forge_define_config_item ('use_shell', 'core', $GLOBALS['sys_use_shell']) ;
+} else {
+	forge_define_config_item ('use_shell', 'core', true) ;
+}
 forge_set_config_item_bool ('use_shell', 'core') ;
-forge_define_config_item ('use_ratings', 'core', $GLOBALS['sys_use_ratings']) ;
+if (isset ($GLOBALS['sys_use_ratings'])) {
+	forge_define_config_item ('use_ratings', 'core', $GLOBALS['sys_use_ratings']) ;
+} else {
+	forge_define_config_item ('use_ratings', 'core', true) ;
+}
 forge_set_config_item_bool ('use_ratings', 'core') ;
-forge_define_config_item ('use_ftp_uploads', 'core', $GLOBALS['sys_use_ftpuploads']) ;
+if (isset ($GLOBALS['sys_use_ftpuploads'])) {
+	forge_define_config_item ('use_ftp_uploads', 'core', $GLOBALS['sys_use_ftpuploads']) ;
+} else {
+	forge_define_config_item ('use_ftp_uploads', 'core', true) ;
+}
 forge_set_config_item_bool ('use_ftp_uploads', 'core') ;
-forge_define_config_item ('ftp_upload_dir', 'core', $GLOBALS['sys_ftp_upload_dir']) ;
-forge_define_config_item ('upload_dir', 'core', $GLOBALS['sys_upload_dir']) ;
+if (isset ($GLOBALS['sys_ftp_upload_dir'])) {
+	forge_define_config_item ('ftp_upload_dir', 'core', $GLOBALS['sys_ftp_upload_dir']) ;
+} else {
+	forge_define_config_item ('ftp_upload_dir', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_upload_dir'])) {
+	forge_define_config_item ('upload_dir', 'core', $GLOBALS['sys_upload_dir']) ;
+} else {
+	forge_define_config_item ('upload_dir', 'core', '') ;
+}
 forge_define_config_item ('use_manual_uploads', 'core', isset ($GLOBALS['sys_use_manual_uploads']) ? $GLOBALS['sys_use_manual_uploads'] : false) ;
 forge_set_config_item_bool ('use_manual_uploads', 'core') ;
-forge_define_config_item ('use_gateways', 'core', $GLOBALS['sys_use_gateways']) ;
+if (isset ($GLOBALS['sys_use_gateways'])) {
+	forge_define_config_item ('use_gateways', 'core', $GLOBALS['sys_use_gateways']) ;
+} else {
+	forge_define_config_item ('use_gateways', 'core', true) ;
+}
 forge_set_config_item_bool ('use_gateways', 'core') ;
-forge_define_config_item ('use_project_vhost', 'core', $GLOBALS['sys_use_project_vhost']) ;
+if (isset ($GLOBALS['sys_use_project_vhost'])) {
+	forge_define_config_item ('use_project_vhost', 'core', $GLOBALS['sys_use_project_vhost']) ;
+} else {
+	forge_define_config_item ('use_project_vhost', 'core', true) ;
+}
 forge_set_config_item_bool ('use_project_vhost', 'core') ;
-forge_define_config_item ('use_project_database', 'core', $GLOBALS['sys_use_project_database']) ;
+if (isset ($GLOBALS['sys_use_project_database'])) {
+	forge_define_config_item ('use_project_database', 'core', $GLOBALS['sys_use_project_database']) ;
+} else {
+	forge_define_config_item ('use_project_database', 'core', false) ;
+}
 forge_set_config_item_bool ('use_project_database', 'core') ;
-forge_define_config_item ('use_project_multimedia', 'core', $GLOBALS['sys_use_project_multimedia']) ;
+if (isset ($GLOBALS['sys_use_project_multimedia'])) {
+	forge_define_config_item ('use_project_multimedia', 'core', $GLOBALS['sys_use_project_multimedia']) ;
+} else {
+	forge_define_config_item ('use_project_multimedia', 'core', false) ;
+}
 forge_set_config_item_bool ('use_project_multimedia', 'core') ;
-forge_define_config_item ('download_host', 'core', $GLOBALS['sys_download_host']) ;
-forge_define_config_item ('shell_host', 'core', $GLOBALS['sys_shell_host']) ;
-forge_define_config_item ('users_host', 'core', $GLOBALS['sys_users_host']) ;
-forge_define_config_item ('lists_host', 'core', $GLOBALS['sys_lists_host']) ;
-forge_define_config_item ('scm_host', 'core', $GLOBALS['sys_scm_host']) ;
-forge_define_config_item ('forum_return_domain', 'core', $GLOBALS['sys_forum_return_domain']) ;
-forge_define_config_item ('use_jabber', 'core', $GLOBALS['sys_use_jabber']) ;
+if (isset ($GLOBALS['sys_download_host'])) {
+	forge_define_config_item ('download_host', 'core', $GLOBALS['sys_download_host']) ;
+} else {
+	forge_define_config_item ('download_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_shell_host'])) {
+	forge_define_config_item ('shell_host', 'core', $GLOBALS['sys_shell_host']) ;
+} else {
+	forge_define_config_item ('shell_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_users_host'])) {
+	forge_define_config_item ('users_host', 'core', $GLOBALS['sys_users_host']) ;
+} else {
+	forge_define_config_item ('users_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_lists_host'])) {
+	forge_define_config_item ('lists_host', 'core', $GLOBALS['sys_lists_host']) ;
+} else {
+	forge_define_config_item ('lists_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_scm_host'])) {
+	forge_define_config_item ('scm_host', 'core', $GLOBALS['sys_scm_host']) ;
+} else {
+	forge_define_config_item ('scm_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_forum_return_domain'])) {
+	forge_define_config_item ('forum_return_domain', 'core', $GLOBALS['sys_forum_return_domain']) ;
+} else {
+	forge_define_config_item ('forum_return_domain', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_use_jabber'])) {
+	forge_define_config_item ('use_jabber', 'core', $GLOBALS['sys_use_jabber']) ;
+} else {
+	forge_define_config_item ('use_jabber', 'core', false) ;
+}
 forge_set_config_item_bool ('use_jabber', 'core') ;
-forge_define_config_item ('jabber_host', 'core', $GLOBALS['sys_jabber_server']) ;
-forge_define_config_item ('jabber_port', 'core', $GLOBALS['sys_jabber_port']) ;
-forge_define_config_item ('jabber_user', 'core', $GLOBALS['sys_jabber_user']) ;
+if (isset ($GLOBALS['sys_jabber_server'])) {
+	forge_define_config_item ('jabber_host', 'core', $GLOBALS['sys_jabber_server']) ;
+} else {
+	forge_define_config_item ('jabber_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_jabber_port'])) {
+	forge_define_config_item ('jabber_port', 'core', $GLOBALS['sys_jabber_port']) ;
+} else {
+	forge_define_config_item ('jabber_port', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_jabber_user'])) {
+	forge_define_config_item ('jabber_user', 'core', $GLOBALS['sys_jabber_user']) ;
+} else {
+	forge_define_config_item ('jabber_user', 'core', '') ;
+}
 forge_define_config_item ('jabber_password', 'core', isset($GLOBALS['sys_jabber_pass']) ? $GLOBALS['sys_jabber_pass'] : '') ;
-forge_define_config_item ('ldap_host', 'core', $GLOBALS['sys_ldap_host']) ;
-forge_define_config_item ('ldap_port', 'core', $GLOBALS['sys_ldap_port']) ;
-forge_define_config_item ('ldap_version', 'core', $GLOBALS['sys_ldap_version']) ;
-forge_define_config_item ('ldap_base_dn', 'core', $GLOBALS['sys_ldap_base_dn']) ;
-forge_define_config_item ('ldap_bind_dn', 'core', $GLOBALS['sys_ldap_bind_dn']) ;
-forge_define_config_item ('ldap_admin_dn', 'core', $GLOBALS['sys_ldap_admin_dn']) ;
+if (isset ($GLOBALS['sys_ldap_host'])) {
+	forge_define_config_item ('ldap_host', 'core', $GLOBALS['sys_ldap_host']) ;
+} else {
+	forge_define_config_item ('ldap_host', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_ldap_port'])) {
+	forge_define_config_item ('ldap_port', 'core', $GLOBALS['sys_ldap_port']) ;
+} else {
+	forge_define_config_item ('ldap_port', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_ldap_version'])) {
+	forge_define_config_item ('ldap_version', 'core', $GLOBALS['sys_ldap_version']) ;
+} else {
+	forge_define_config_item ('ldap_version', 'core', 3) ;
+}
+if (isset ($GLOBALS['sys_ldap_base_dn'])) {
+	forge_define_config_item ('ldap_base_dn', 'core', $GLOBALS['sys_ldap_base_dn']) ;
+} else {
+	forge_define_config_item ('ldap_base_dn', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_ldap_bind_dn'])) {
+	forge_define_config_item ('ldap_bind_dn', 'core', $GLOBALS['sys_ldap_bind_dn']) ;
+} else {
+	forge_define_config_item ('ldap_bind_dn', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_ldap_admin_dn'])) {
+	forge_define_config_item ('ldap_admin_dn', 'core', $GLOBALS['sys_ldap_admin_dn']) ;
+} else {
+	forge_define_config_item ('ldap_admin_dn', 'core', '') ;
+}
 forge_define_config_item ('ldap_password', 'core', isset($GLOBALS['sys_ldap_passwd']) ? $GLOBALS['sys_ldap_passwd'] : '') ;
-forge_define_config_item ('news_group', 'core', $GLOBALS['sys_news_group']) ;
-forge_define_config_item ('stats_group', 'core', $GLOBALS['sys_stats_group']) ;
-forge_define_config_item ('peer_rating_group', 'core', $GLOBALS['sys_peer_rating_group']) ;
-forge_define_config_item ('template_group', 'core', $GLOBALS['sys_template_group']) ;
-forge_define_config_item ('sendmail_path', 'core', $GLOBALS['sys_sendmail_path']) ;
-forge_define_config_item ('mailman_path', 'core', $GLOBALS['sys_path_to_mailman']) ;
-forge_define_config_item ('jpgraph_path', 'core', $GLOBALS['sys_path_to_jpgraph']) ;
-forge_define_config_item ('account_manager_type', 'core', $GLOBALS['sys_account_manager_type']) ;
-forge_define_config_item ('unix_cipher', 'core', $GLOBALS['unix_cipher']) ;
-forge_define_config_item ('homedir_prefix', 'core', $GLOBALS['homedir_prefix']) ;
-forge_define_config_item ('groupdir_prefix', 'core', $GLOBALS['groupdir_prefix']) ;
-forge_define_config_item ('url_root', 'core', $GLOBALS['sys_urlroot']) ;
-forge_define_config_item ('url_prefix', 'core', $GLOBALS['sys_urlprefix']) ;
-forge_define_config_item ('images_url', 'core', $GLOBALS['sys_images_url']) ;
-forge_define_config_item ('images_secure_url', 'core', $GLOBALS['sys_images_secure_url']) ;
-forge_define_config_item ('admin_email', 'core', $GLOBALS['sys_admin_email']) ;
-forge_define_config_item ('session_key', 'core', $GLOBALS['sys_session_key']) ;
-forge_define_config_item ('session_expire', 'core', $GLOBALS['sys_session_expire']) ;
-forge_define_config_item ('show_source', 'core', $GLOBALS['sys_show_source']) ;
+if (isset ($GLOBALS['sys_news_group'])) {
+	forge_define_config_item ('news_group', 'core', $GLOBALS['sys_news_group']) ;
+} else {
+	forge_define_config_item ('news_group', 'core', 2) ;
+}
+if (isset ($GLOBALS['sys_stats_group'])) {
+	forge_define_config_item ('stats_group', 'core', $GLOBALS['sys_stats_group']) ;
+} else {
+	forge_define_config_item ('stats_group', 'core', 3) ;
+}
+if (isset ($GLOBALS['sys_peer_rating_group'])) {
+	forge_define_config_item ('peer_rating_group', 'core', $GLOBALS['sys_peer_rating_group']) ;
+} else {
+	forge_define_config_item ('peer_rating_group', 'core', 4) ;
+}
+if (isset ($GLOBALS['sys_sendmail_path'])) {
+	forge_define_config_item ('sendmail_path', 'core', $GLOBALS['sys_sendmail_path']) ;
+} else {
+	forge_define_config_item ('sendmail_path', 'core', '/usr/sbin/sendmail') ;
+}
+if (isset ($GLOBALS['sys_path_to_mailman'])) {
+	forge_define_config_item ('mailman_path', 'core', $GLOBALS['sys_path_to_mailman']) ;
+} else {
+	forge_define_config_item ('mailman_path', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_path_to_jpgraph'])) {
+	forge_define_config_item ('jpgraph_path', 'core', $GLOBALS['sys_path_to_jpgraph']) ;
+} else {
+	forge_define_config_item ('jpgraph_path', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_account_manager_type'])) {
+	forge_define_config_item ('account_manager_type', 'core', $GLOBALS['sys_account_manager_type']) ;
+} else {
+	forge_define_config_item ('account_manager_type', 'core', '') ;
+}
+if (isset ($GLOBALS['unix_cipher'])) {
+	forge_define_config_item ('unix_cipher', 'core', $GLOBALS['unix_cipher']) ;
+} else {
+	forge_define_config_item ('unix_cipher', 'core', '') ;
+}
+if (isset ($GLOBALS['homedir_prefix'])) {
+	forge_define_config_item ('homedir_prefix', 'core', $GLOBALS['homedir_prefix']) ;
+} else {
+	forge_define_config_item ('homedir_prefix', 'core', '') ;
+}
+if (isset ($GLOBALS['groupdir_prefix'])) {
+	forge_define_config_item ('groupdir_prefix', 'core', $GLOBALS['groupdir_prefix']) ;
+} else {
+	forge_define_config_item ('groupdir_prefix', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_urlroot'])) {
+	forge_define_config_item ('url_root', 'core', $GLOBALS['sys_urlroot']) ;
+} else {
+	forge_define_config_item ('url_root', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_urlprefix'])) {
+	forge_define_config_item ('url_prefix', 'core', $GLOBALS['sys_urlprefix']) ;
+} else {
+	forge_define_config_item ('url_prefix', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_images_url'])) {
+	forge_define_config_item ('images_url', 'core', $GLOBALS['sys_images_url']) ;
+} else {
+	forge_define_config_item ('images_url', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_images_secure_url'])) {
+	forge_define_config_item ('images_secure_url', 'core', $GLOBALS['sys_images_secure_url']) ;
+} else {
+	forge_define_config_item ('images_secure_url', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_admin_email'])) {
+	forge_define_config_item ('admin_email', 'core', $GLOBALS['sys_admin_email']) ;
+} else {
+	forge_define_config_item ('admin_email', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_session_key'])) {
+	forge_define_config_item ('session_key', 'core', $GLOBALS['sys_session_key']) ;
+} else {
+	forge_define_config_item ('session_key', 'core', '') ;
+}
+if (isset ($GLOBALS['sys_session_expire'])) {
+	forge_define_config_item ('session_expire', 'core', $GLOBALS['sys_session_expire']) ;
+} else {
+	forge_define_config_item ('session_expire', 'core', 0) ;
+}
+if (isset ($GLOBALS['sys_show_source'])) {
+	forge_define_config_item ('show_source', 'core', $GLOBALS['sys_show_source']) ;
+} else {
+	forge_define_config_item ('show_source', 'core', true) ;
+}
 forge_set_config_item_bool ('show_source', 'core') ;
-forge_define_config_item ('default_trove_cat', 'core', $GLOBALS['default_trove_cat']) ;
-forge_define_config_item ('user_registration_accept_conditions', 'core', $GLOBALS['sys_require_accept_conditions']);
+if (isset ($GLOBALS['default_trove_cat'])) {
+	forge_define_config_item ('default_trove_cat', 'core', $GLOBALS['default_trove_cat']) ;
+} else {
+	forge_define_config_item ('default_trove_cat', 'core', 18) ;
+}
+if (isset ($GLOBALS['sys_require_accept_conditions'])) {
+	forge_define_config_item ('user_registration_accept_conditions', 'core', $GLOBALS['sys_require_accept_conditions']);
+} else {
+	forge_define_config_item ('user_registration_accept_conditions', 'core', false);
+}
 forge_set_config_item_bool ('user_registration_accept_conditions', 'core') ;
 forge_define_config_item ('host_uuid', 'core', '') ;
 if (isset($GLOBALS['sys_default_task_categories']))

Modified: branches/messer-51/src/common/include/constants.php
===================================================================
--- branches/messer-51/src/common/include/constants.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/constants.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -68,7 +68,6 @@
 define('GROUP_IS_STATS', forge_get_config('stats_group'));
 define('GROUP_IS_NEWS', forge_get_config('news_group'));
 define('GROUP_IS_PEER_RATINGS', forge_get_config('peer_rating_group'));
-define('GROUP_IS_TEMPLATE', forge_get_config('template_group'));
 
 /* Admin */
 define('ADMIN_CRONMAN_ROWS', 30);

Modified: branches/messer-51/src/common/include/datepick.php
===================================================================
--- branches/messer-51/src/common/include/datepick.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/datepick.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -130,7 +130,6 @@
 function datepick_prepare() {
 	global $HTML;
 
-	$HTML->addJavascript('/js/prototype.js');
 	$HTML->addStylesheet('/themes/css/datepicker.css');
 	$HTML->addJavascript('/js/prototype-base-extensions.js');
 	$HTML->addJavascript('/js/prototype-date-extensions.js');

Modified: branches/messer-51/src/common/include/descriptive.php
===================================================================
--- branches/messer-51/src/common/include/descriptive.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/descriptive.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -32,6 +32,8 @@
  * careful as usual. We decide to only pass around unencoded strings
  * except once formatted for display, and the accessor and database
  * functions for compatibility.
+ * Except that htmlspecialchars_decode() is not enough, and we must
+ * call util_unconvert_htmlspecialchars() on the contents instead…
  *
  * Details and Comments further can have formatting attributes and
  * links. The format for that is:
@@ -110,6 +112,7 @@
 		$rname = $row[$keys['realname']];
 		$mdate = $row[$keys['msgdate']];
 		$mbody = $row[$keys['msgbody']];
+		$mmail = $row[$keys['msgmail']];
 
 		/* I hate FusionForge plugin hooks */
 		ob_start();
@@ -121,14 +124,14 @@
 		ob_end_clean();
 
 		if ($uid == 100) {
-			$firstlines = util_html_secure($rname);
+			$firstlines = util_html_secure($mmail);
 		} else {
 			$firstlines = util_make_link_u($uname, $uid,
 			    util_html_secure($rname));
 		}
 		$firstlines = html_e('tt', array(), _('Date') . ': ' .
 		    date(_('Y-m-d H:i'), $mdate) . "<br />\n" .
-		    _('Sender') . ': ' . $firstlines);
+		    _('From') . ': ' . $firstlines);
 
 		if ($userlogo) {
 			$firstlines = html_e('table', array(
@@ -141,7 +144,7 @@
 		}
 
 		$t->tr()->td()->setraw($firstlines .
-		    showmess_fmt(htmlspecialchars_decode($mbody)));
+		    showmess_fmt(util_unconvert_htmlspecialchars($mbody)));
 	}
 	echo $t->emit() . html_ac($spos) . "\n";
 }
@@ -155,7 +158,7 @@
  *		XHTML encoded item summary text (no tag)
  */
 function emit_summary($inst) {
-	$txt = htmlspecialchars_decode($inst->getSummary());
+	$txt = util_unconvert_htmlspecialchars($inst->getSummary());
 	return util_html_encode($txt);
 }
 
@@ -172,7 +175,7 @@
  *		XHTML form field
  */
 function emit_summary_field($inst, $name, $id, $class=false, $title=false) {
-	$txt = $inst ? htmlspecialchars_decode($inst->getSummary()) : "";
+	$txt = $inst ? util_unconvert_htmlspecialchars($inst->getSummary()) : "";
 	return html_e('input', array(
 		'type' => 'text',
 		'name' => $name,
@@ -199,7 +202,7 @@
  * @todo add formatting
  */
 function emit_details($inst, $headline="", $editable=false) {
-	$txt = htmlspecialchars_decode($inst->getDetails());
+	$txt = util_unconvert_htmlspecialchars($inst->getDetails());
 
 	$ftx = html_e('div', array(
 		'class' => array(
@@ -255,7 +258,7 @@
  *		XHTML form field
  */
 function emit_details_field($inst, $name, $id=false, $title=false) {
-	$txt = $inst ? htmlspecialchars_decode($inst->getDetails()) : "";
+	$txt = $inst ? util_unconvert_htmlspecialchars($inst->getDetails()) : "";
 	return html_e('textarea', array(
 		'class' => array(
 			'small',
@@ -300,7 +303,7 @@
  * showmess_fmt() - render message body for display
  *
  * @param	string	$mess
- *			already htmlspecialchars_decode()d text body
+ *			already util_unconvert_htmlspecialchars()d text body
  * @return	string
  *		XHTML rendition of the message body
  */

Modified: branches/messer-51/src/common/include/env.inc.php
===================================================================
--- branches/messer-51/src/common/include/env.inc.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/env.inc.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -44,6 +44,9 @@
 } elseif (file_exists('/etc/gforge/local.inc')) {
 	$gfcgfile = '/etc/gforge/local.inc';
 	$gfconfig = '/etc/gforge/';
+} elseif (file_exists('/etc/fusionforge/config.ini')) {
+	$gfcgfile = '/etc/fusionforge/local.inc';
+	$gfconfig = '/etc/fusionforge/';
 } else {
 	$gfcgfile = 'local.inc';
 	$gfconfig = '';

Modified: branches/messer-51/src/common/include/exit.php
===================================================================
--- branches/messer-51/src/common/include/exit.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/exit.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -32,7 +32,7 @@
  * @param	string  toptab for navigation bar
  */
 function exit_error($text="", $toptab='') {
-	global $HTML, $group_id, $forge_exit_handler;
+	global $HTML, $group_id, $sysdebug_enable, $forge_exit_handler;
 
 	if ($forge_exit_handler) {
 		$forge_exit_handler($text);
@@ -40,6 +40,10 @@
 	}
 	$HTML->header(array('title'=>_('Exiting with error'), 'group'=>$group_id, 'toptab'=>$toptab));
 	echo $HTML->error_msg(htmlspecialchars($text));
+	if ($sysdebug_enable) echo html_e('div', array(
+		'id' => 'ffBacktrace',
+	    ), str_replace("<br />", '</tt></p><p><tt>', /* suboptimal */
+	    util_ttwrap(htmlspecialchars(debug_string_backtrace()))));
 	$HTML->footer(array());
 	exit;
 }

Modified: branches/messer-51/src/common/include/extras-debug.php
===================================================================
--- branches/messer-51/src/common/include/extras-debug.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/extras-debug.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -190,7 +190,8 @@
 
 	/* generate buffer for checking */
 	$cbuf = str_ireplace('http://www.w3.org/TR/xhtml1/DTD/',
-	    'file://' . $dtdpath, $buffer);
+	    'file://' . $dtdpath, str_ireplace('http://evolvis.org/DTD/',
+	    'file://' . $dtdpath, $buffer));
 	if ($has_div) {
 		$cbuf .= "\n</div></div>";
 	}
@@ -240,38 +241,12 @@
 		}
 	}
 
-	$sysdebug_akelos = forge_get_config('sysdebug_akelos');
-	if ($sysdebug_akelos) {
-		/* Akelos XHTML Validator (most other stuff) */
-		require_once($gfcommon . "include/XhtmlValidator.php");
-		$XhtmlValidator = new XhtmlValidator();
-		$sbuf = explode("<html", $cbuf, 2);
-		$sbuf[1] = "<html" . $sbuf[1];
-		$vbuf = $sbuf[1];
-		if ($XhtmlValidator->validate($vbuf) === false) {
-			//$vbuf = $XhtmlValidator->highlightErrors($sbuf[1]);
-			$errs = '<ul><li>' . join("</li>\n<li>",
-			    $XhtmlValidator->getErrors()) . '</li></ul>';
-			$valck[] = array(
-				'msg' => "Akelos XHTML Validator found some errors on this document!",
-				'extra' => $errs,
-				'type' => "error",
-			    );
-			$appsrc = true;
-		}
-	}
-
 	/* append XHTML source code, if validation failed */
 	if ($appsrc) {
-		if (!$sysdebug_akelos || $vbuf == $sbuf[1]) {
-			$vbuf = "<ol><li>" . $pre_tag .
-			    join(" </pre></li>\n<li>" . $pre_tag,
-			    explode("\n", htmlentities(rtrim($cbuf)))) .
-			    " </pre></li></ol>";
-		} else {
-			$vbuf = $pre_tag . htmlentities(rtrim($sbuf[0])) .
-			    "</pre>" . $vbuf;
-		}
+		$vbuf = "<ol><li>" . $pre_tag .
+		    join(" </pre></li>\n<li>" . $pre_tag,
+		    explode("\n", htmlentities(rtrim($cbuf)))) .
+		    " </pre></li></ol>";
 		$valck[] = array(
 			'msg' => "Since XHTML validation failed, here’s the checked document for you to look at:",
 			'extra' => $vbuf,

Modified: branches/messer-51/src/common/include/jpgraph.php
===================================================================
--- branches/messer-51/src/common/include/jpgraph.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/jpgraph.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -40,6 +40,8 @@
 /* error formatter producing an image */
 $forge_jpgraph_error_fmt_called = false;
 function forge_jpgraph_error_fmt($text) {
+	global $forge_jpgraph_error_fmt_called;
+
 	$w = 640; $h = 480;
 
 	if ($forge_jpgraph_error_fmt_called || headers_sent()) {
@@ -63,7 +65,8 @@
 	$i->Rectangle(0, 0, $w - 1, $h - 1);
 	$i->SetFont(FF_FONT1, FS_BOLD);
 	$i->SetColor("darkred");
-	$i->StrokeText(12, 12, sprintf(_("%s Error:"), $ff->software_name));
+	$i->StrokeText(12, 12, sprintf(_("%s Error:"), $ff->software_name),
+	    0, "left");
 	$i->SetFont(FF_FONT1, FS_NORMAL);
 	$i->SetColor("black");
 	$t = new Text(wordwrap($text, 80), 12, 24);

Modified: branches/messer-51/src/common/include/minijson.php
===================================================================
--- branches/messer-51/src/common/include/minijson.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/minijson.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -2,7 +2,7 @@
 /**
  * Minimal JSON generator and parser for FusionForge
  *
- * Copyright © 2010, 2011
+ * Copyright © 2010, 2011, 2012
  *	Thorsten “mirabilos” Glaser <t.glaser at tarent.de>
  * All rights reserved.
  *
@@ -188,6 +188,7 @@
 		$rs = "{";
 		if ($ri !== false)
 			$rs .= "\n";
+		sort($k, SORT_STRING);
 		foreach ($k as $v) {
 			if (!isset($x[$v])) {
 				continue;
@@ -630,5 +631,3 @@
 	$ov = (float)$s;
 	return true;
 }
-
-?>

Modified: branches/messer-51/src/common/include/pre.php
===================================================================
--- branches/messer-51/src/common/include/pre.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/pre.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -148,8 +148,6 @@
 forge_set_config_item_bool ('sysdebug_dbquery', 'core') ;
 forge_define_config_item ('sysdebug_xmlstarlet', 'core', 'false') ;
 forge_set_config_item_bool ('sysdebug_xmlstarlet', 'core') ;
-forge_define_config_item ('sysdebug_akelos', 'core', 'false') ;
-forge_set_config_item_bool ('sysdebug_akelos', 'core') ;
 // Load extra func to add extras func like debug
 $sysdebug_enable = forge_get_config('sysdebug_enable');
 
@@ -311,7 +309,8 @@
 		if (getStringFromServer('REQUEST_URI')!='/' && $expl_pathinfo[1]!='account' && $expl_pathinfo[1]!='export' ) exit_not_logged_in();
 		// Show proj* export even if not logged in when force login
 		// If not default web project page would be broken
-		if ($expl_pathinfo[1]=='export' && !ereg("^proj", $expl_pathinfo[2])) exit_not_logged_in();
+		if ($expl_pathinfo[1]=='export' && !preg_match("/^proj/", $expl_pathinfo[2]))
+			exit_not_logged_in();
 	}
 
 	// Insert this page view into the database

Copied: branches/messer-51/src/common/include/preutils.php (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/common/include/preutils.php)
===================================================================
--- branches/messer-51/src/common/include/preutils.php	                        (rev 0)
+++ branches/messer-51/src/common/include/preutils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,31 @@
+<?php
+/*-
+ * FusionForge miscellaneous utils, included very early
+ *
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * All rights reserved.
+ *
+ * This file is part of FusionForge. FusionForge 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 Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge 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 FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *-
+ * This is like utils.php, except it’s included so early that it can be
+ * used by any other early/core module, such as the configuration system.
+ */
+
+/* return $1 if $1 is set, ${2:-false} otherwise */
+function util_ifsetor(&$val, $default = false) {
+	return (isset($val) ? $val : $default);
+}

Modified: branches/messer-51/src/common/include/session.php
===================================================================
--- branches/messer-51/src/common/include/session.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/session.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -387,15 +387,26 @@
 }
 
 /**
+ *	session_redirect_uri() - Redirect browser
+ *
+ *	@param		string	Absolute URI
+ *	@return never returns
+ */
+function session_redirect_uri($loc) {
+	sysdebug_off("Status: 301 Moved Permanently", true, 301);
+	header("Location: ${loc}", true);
+	echo "\nPlease go to ${loc} instead!\n";
+	exit;
+}
+
+/**
  *	session_redirect() - Redirect browser within the site
  *
  *	@param		string	Absolute path within the site
  *	@return never returns
  */
 function session_redirect($loc) {
-	sysdebug_off('Location: '.util_make_url ($loc));
-	print("\n\n");
-	exit;
+	session_redirect_uri(util_make_url($loc));
 }
 
 /**
@@ -555,7 +566,19 @@
 	if (count ($admins) == 0) {
 		exit_error(_('No admin users ?'),'');
 	}
-	session_set_new ($admins[0]->getID());
+	/*
+	 * Use the user with the lowest numerical user ID.
+	 * This is to prevent complaints from real humans
+	 * if the system is doing something in their stead
+	 * (for example by populate_template_project.php).
+	 * Usually, “admin” has the ID 101.
+	 */
+	$admin_ids = array();
+	foreach ($admins as $admin) {
+		$admin_ids[] = $admin->getID();
+	}
+	sort($admin_ids);
+	session_set_new($admin_ids[0]);
 }
 
 /**

Modified: branches/messer-51/src/common/include/utils.php
===================================================================
--- branches/messer-51/src/common/include/utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/include/utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -25,6 +25,8 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+require_once dirname(__FILE__).'/preutils.php';
+
 /**
  * htpasswd_apr1_md5($plainpasswd) - generate htpasswd md5 format password
  *
@@ -1300,7 +1302,7 @@
 if (!function_exists('json_encode')) {
 	require_once $gfcommon.'include/minijson.php' ;
 	function json_encode ($a1) {
-		return minijson_encode ($a1) ;
+		return minijson_encode($a1, false);
 	}
 }
 
@@ -1485,11 +1487,6 @@
 	return $postfile;
 }
 
-/* return $1 if $1 is set, ${2:-false} otherwise */
-function util_ifsetor(&$val, $default = false) {
-	return (isset($val) ? $val : $default);
-}
-
 function util_randbytes($num=6) {
 	$f = fopen("/dev/urandom", "rb");
 	$b = fread($f, $num);
@@ -1735,10 +1732,25 @@
 	return ($ashtml ? util_html_encode($rv) : $rv);
 }
 
+/**
+ * util_sanitise_multiline_submission() – Convert text to ASCII CR-LF
+ *
+ * @param	string	$text
+ *			input string to sanitise
+ * @return	string
+ *		sanitised string: CR, LF or CR-LF converted to CR-LF
+ */
+function util_sanitise_multiline_submission($text) {
+	/* convert all CR-LF into LF */
+	$text = preg_replace("/\015+\012+/m", "\012", $text);
+	/* convert all CR or LF into CR-LF */
+	$text = preg_replace("/[\012\015]/m", "\015\012", $text);
 
+	return $text;
+}
+
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/common/mail/MailingList.class.php
===================================================================
--- branches/messer-51/src/common/mail/MailingList.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/mail/MailingList.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -384,7 +384,8 @@
 	function delete($sure,$really_sure) {
 		$mn = $this->getName();
 		$gn = $this->Group->getUnixName();
-		if ($mn == $gn."-commits" || $mn == $gn."-discuss") {
+		if (($mn == $gn."-commits" || $mn == $gn."-discuss") &&
+		    $sure != 2) {
 			$this->setError(_('Sorry, this mailing list is special and must not be deleted.'), ERROR__PERMISSION_DENIED_ERROR);
 			return false;
 		}

Modified: branches/messer-51/src/common/pm/ProjectModel.class.php
===================================================================
--- branches/messer-51/src/common/pm/ProjectModel.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/pm/ProjectModel.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -59,7 +59,7 @@
 
 		$arrInfo = array();
 		if ($result && db_numrows($result) > 0) {
-			for ($i = 0; i < db_numrows($result); $i++) {
+			for ($i = 0; $i < db_numrows($result); $i++) {
 				$info = db_fetch_array($result, $i);
 				$arrInfo[$i] = $info;
 			}

Modified: branches/messer-51/src/common/pm/ProjectTask.class.php
===================================================================
--- branches/messer-51/src/common/pm/ProjectTask.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/pm/ProjectTask.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -405,6 +405,11 @@
 	 *	an id, for example an ID generated by MS Project, which needs to be restored later
 	 */
 	function setExternalID($id) {
+		if (!$id && $id !== 0) {
+			/* easy skip */
+			return;
+		}
+
 		$res = db_query_params ('UPDATE project_task_external_order SET external_id=$1
 			WHERE project_task_id=$2',
 					array ($id,
@@ -687,10 +692,11 @@
 	 *
 	 * @param	string  The field name.
 	 * @param	string  The old value.
+	 * @param	string  The new value.
 	 * @param	array	Specific data for import (user id and time)
 	 * @returns	boolean	success.
 	 */
-	function addHistory ($field_name,$old_value,$importData=array()) {
+	function addHistory($field_name, $old_value, $new_value="", $importData=array()) {
 		//Uses importData
 		if(array_key_exists('user', $importData)){
 			$uid = $importData['user'];
@@ -702,10 +708,11 @@
 		} else {
 			$time = time();
 		}
-		$result = db_query_params ('INSERT INTO project_history (project_task_id,field_name,old_value,mod_by,mod_date) VALUES ($1,$2,$3,$4,$5)',
+		$result = db_query_params('INSERT INTO project_history (project_task_id,field_name,old_value,new_value,mod_by,mod_date) VALUES ($1,$2,$3,$4,$5,$6)',
 					   array ($this->getID(),
 						  $field_name,
 						  $old_value,
+						  $new_value,
 						  $uid,
 						  $time)) ;
 		if (!$result) {
@@ -755,6 +762,8 @@
 	function setDependentOn(&$arr_) {
 		if (!$arr_ || empty($arr_)) {
 			$arr_=array('100'=>PM_LINK_DEFAULT);
+		} else {
+			unset($arr_['100']);
 		}
 		$arr = array_keys($arr_);
 		//get existing dependencies to diff against
@@ -853,12 +862,17 @@
 	 * @returns	boolean	success.
 	 */
 	function setAssignedTo(&$arr) {
-		$arr2 = $this->getAssignedTo();
+		$arr2 = $this->getAssignedTo(true);
 		$this->assignedto =& $arr;
 
 		//If no one is assigned, then assign it to "100" - NOBODY
 		if (!$arr || count($arr) < 1 || ((count($arr)==1) && ($arr[0]==''))) {
 			$arr=array('100');
+		} else {
+			$x = array_keys($arr, '100');
+			foreach ($x as $y) {
+				unset($arr[$y]);
+			}
 		}
 		if (count($arr) || count($arr2)) {
 			$add_arr = array_values(array_diff ($arr, $arr2));
@@ -894,13 +908,20 @@
 	 *
 	 *	@return	array	The array of user_id's.
 	 */
-	function getAssignedTo() {
+	function getAssignedTo($rawres=false) {
 		if (!$this->getID()) {
 			return array();
 		}
 		if (!$this->assignedto) {
-			$this->assignedto =& util_result_column_to_array(db_query_params('SELECT assigned_to_id FROM project_assigned_to WHERE project_task_id=$1',
-											 array ($this->getID()))) ;
+			$this->assignedto =& util_result_column_to_array(db_query_params(
+			    'SELECT assigned_to_id
+				FROM project_assigned_to
+				WHERE project_task_id=$1' .
+			    ($rawres ? '' : ' AND assigned_to_id <> 100'),
+			    array($this->getID())));
+			if (!$this->assignedto) {
+				$this->assignedto = array(100);
+			}
 		}
 		return $this->assignedto;
 	}
@@ -1029,7 +1050,8 @@
 			$arrChangedAndInNotice['summary'] = ">";
 		}
 
-		if ($this->getDetails() != htmlspecialchars($details)) {
+		if (!$massupdate &&
+		    ($this->getDetails() != htmlspecialchars($details))) {
 			$this->addHistory('details',$this->getDetails());
 			$has_changes = true;
 			$arrChangedAndInNotice['details'] = ">";

Modified: branches/messer-51/src/common/pm/import_utils.php
===================================================================
--- branches/messer-51/src/common/pm/import_utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/pm/import_utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -76,6 +76,7 @@
 		//
 		//  Create a linked list based on the msproj_id
 		//
+		$msprojid = array();
 		for ($i=0; $i<$count; $i++) {
 			$msprojid[$tasks[$i]['msproj_id']] =& $tasks[$i];
 			$resrc = $tasks[$i]['resources'];
@@ -173,8 +174,8 @@
 						}
 
 						if (!$pt->create(
-							addslashes($tasks[$i]['name']),
-							addslashes($tasks[$i]['notes']),
+							$tasks[$i]['name'],
+							$tasks[$i]['notes'],
 							$priority,
 							$hours,
 							strtotime($tasks[$i]['start_date']),
@@ -258,9 +259,10 @@
 							$category_id = $pt->getCategoryID();
 						}
 
+						$pdo = $pt->getDependentOn();
 						if (!$pt->update(
-							addslashes($tasks[$i]['name']),
-							addslashes($tasks[$i]['notes']),
+							$tasks[$i]['name'],
+							$tasks[$i]['notes'],
 							$priority,
 							$hours,
 							strtotime($tasks[$i]['start_date']),
@@ -269,7 +271,7 @@
 							$category_id,
 							$percent_complete,
 							$assignees,
-							$pt->getDependentOn(),
+							$pdo,
 							$pg->getID(),
 							$tasks[$i]['duration'],
 							$tasks[$i]['parent_id'])) {

Modified: branches/messer-51/src/common/search/ForumsSearchQuery.class.php
===================================================================
--- branches/messer-51/src/common/search/ForumsSearchQuery.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/search/ForumsSearchQuery.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -137,7 +137,7 @@
 	function getSearchByIdQuery() {
 		$qpa = db_construct_qpa () ;
 		$qpa = db_construct_qpa ($qpa,
-					 'SELECT msg_id FROM forum, forum_group_list WHERE msg_id=$1 AND forum_group_list.group_forum_id=forum.group_forum_id AND group_forum_id=$2',
+					 'SELECT msg_id FROM forum, forum_group_list WHERE msg_id=$1 AND forum_group_list.group_forum_id=forum.group_forum_id AND forum.group_forum_id=$2',
 					 array ($this->searchId,
 						$this->forumId)) ;
 		if (!$this->showNonPublic) {

Modified: branches/messer-51/src/common/tracker/Artifact.class.php
===================================================================
--- branches/messer-51/src/common/tracker/Artifact.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/Artifact.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -51,11 +51,11 @@
 
 // This string is used when sending the notification mail for identifying the
 // user response
-define('ARTIFACT_MAIL_MARKER', '#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+');	
+define('ARTIFACT_MAIL_MARKER', '#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+#+');
 
 	/**
 	*	Factory method which creates an Artifact from an artifact ID
-	*	
+	*
 	*	@param int	The artifact ID
 	*	@param array	The result array, if it's passed in
 	*	@return	object	Artifact object
@@ -78,7 +78,7 @@
 			$ARTIFACT_OBJ["_".$artifact_id."_"]= new Artifact($ArtifactType,$data);
 		}
 		return $ARTIFACT_OBJ["_".$artifact_id."_"];
-	}	
+	}
 
 class Artifact extends Error {
 
@@ -94,7 +94,7 @@
 	 *
 	 * @var		object	$ArtifactType.
 	 */
-	var $ArtifactType; 
+	var $ArtifactType;
 
 	/**
 	 * Array of artifact data.
@@ -115,7 +115,7 @@
 	 *
 	 * @var		array	$files
 	 */
-	var $files; 
+	var $files;
 
 	/**
 	 * Database result set of related tasks
@@ -123,17 +123,17 @@
 	 * @var     result $relatedtasks
 	 */
 	var $relatedtasks;
-    
+
 	/**
 	 *  Artifact - constructor.
 	 *
 	 *	@param	object	The ArtifactType object.
-	 *  @param	integer	(primary key from database OR complete assoc array) 
+	 *  @param	integer	(primary key from database OR complete assoc array)
 	 *		ONLY OPTIONAL WHEN YOU PLAN TO IMMEDIATELY CALL ->create()
 	 *  @return	boolean	success.
 	 */
 	function Artifact(&$ArtifactType, $data=false) {
-		$this->Error(); 
+		$this->Error();
 
 		$this->ArtifactType =& $ArtifactType;
 
@@ -176,7 +176,7 @@
 			}
 		}
 	}
-	
+
 	/**
 	 *	create - construct a new Artifact in the database.
 	 *
@@ -185,7 +185,7 @@
 	 *	@param	int		The ID of the user to which this artifact is to be assigned.
 	 *	@param	int		The artifacts priority.
 	 *	@param	array	Array of extra fields like: array(15=>'foobar',22=>'1');
-	 *	@param	array	Array of data to change submitter and time of submit like: array('user' => 127, 'time' => 1234556789)	
+	 *	@param	array	Array of data to change submitter and time of submit like: array('user' => 127, 'time' => 1234556789)
 	 *  @return id on success / false on failure.
 	 */
 	function create( $summary, $details, $assigned_to=100, $priority=3, $extra_fields=array(), $importData = array()) {
@@ -193,7 +193,7 @@
 		//
 		//	get the user_id
 		//
-		
+
 		if(array_key_exists('user', $importData)){
 				$user = $importData['user'];
 		} else {
@@ -207,9 +207,9 @@
 					return false;
 				}
 			}
-		}	
-			
+		}
 
+
 		//
 		//	data validation
 		//
@@ -221,6 +221,7 @@
 			$this->setError(_('Artifact: Message Body Is Required'));
 			return false;
 		}
+		$details = util_sanitise_multiline_submission($details);
 		if (!$assigned_to) {
 			$assigned_to=100;
 		}
@@ -247,9 +248,9 @@
 		} else {
 			$time = time();
 		}
-		$res = db_query_params ('INSERT INTO artifact 
+		$res = db_query_params ('INSERT INTO artifact
 			(group_artifact_id,status_id,priority,
-			submitted_by,assigned_to,open_date,summary,details) 
+			submitted_by,assigned_to,open_date,summary,details)
 			VALUES ($1,$2,$3,$4,$5,$6,$7,$8)',
 					array ($this->ArtifactType->getID(),
 					       $status_id,
@@ -264,7 +265,7 @@
 			db_rollback();
 			return false;
 		}
-		
+
 		$artifact_id=db_insertid($res,'artifact','artifact_id');
 
 		if (!$res || !$artifact_id) {
@@ -296,7 +297,7 @@
 			return $artifact_id;
 		}
 	}
-	
+
 	/**
 	 *	fetchData - re-fetch the data for this Artifact from the database.
 	 *
@@ -324,7 +325,7 @@
 	function &getArtifactType() {
 		return $this->ArtifactType;
 	}
-	
+
 	/**
 	 *	getID - get this ArtifactID.
 	 *
@@ -536,7 +537,7 @@
 			db_rollback();
 			return false;
 		}
-		
+
 		if ($this->getStatusID() == 1) {
 			$res = db_query_params ('UPDATE artifact_counts_agg SET count=count-1,open_count=open_count-1
 				WHERE group_artifact_id=$1',
@@ -602,7 +603,7 @@
 			}
 		} else {
 			//already monitoring - remove their monitor
-			db_query_params ('DELETE FROM artifact_monitor 
+			db_query_params ('DELETE FROM artifact_monitor
 				WHERE artifact_id=$1
 				AND user_id=$2',
 					 array ($this->getID(),
@@ -688,7 +689,7 @@
 		if (!isset($this->files)) {
 			$res = db_query_params ('SELECT id,artifact_id,description,filename,filesize,' .
 					'filetype,adddate,submitted_by,user_name,realname
-					 FROM artifact_file_user_vw WHERE artifact_id=$1',
+					 FROM artifact_file_user_vw WHERE artifact_id=$1 ORDER BY adddate,id',
 						array ($this->getID())) ;
 			$rows=db_numrows($res);
 			if ($rows > 0) {
@@ -735,6 +736,7 @@
 			$this->setMissingParamsError();
 			return false;
 		}
+		$body = util_sanitise_multiline_submission($body);
 		if (session_loggedin()) {
 			$user_id=user_getid();
 			$user =& user_get_object($user_id);
@@ -742,7 +744,7 @@
 				$this->setError('ERROR - Logged In User But Could Not Get User Object');
 				return false;
 			}
-			//	we'll store this email even though it will likely never be used - 
+			//	we'll store this email even though it will likely never be used -
 			//	since we have their correct user_id, we can join the USERS table to get email
 			$by=$user->getEmail();
 		} elseif (!$this->ArtifactType->allowsAnon()) {
@@ -776,11 +778,12 @@
 	 *
 	 *  @param	string	The name of the field in the database being modified.
 	 *  @param	string	The former value of this field.
+	 *  @param	string	The new value of this field.
 	 *  @param      array   Array of data to change submitter and time of submit like: array('user' => 127, 'time' => 1234556789)
 	 *  @access private
 	 *  @return	boolean	success.
 	 */
-	function addHistory($field_name,$old_value, $importData = array()) {
+	function addHistory($field_name, $old_value, $new_value="", $importData=array()) {
 		if (array_key_exists('user', $importData)){
 			$user = $importData['user'];
 		} else {
@@ -795,10 +798,11 @@
 		} else {
 			$time = time();
 		}
-		return db_query_params ('INSERT INTO artifact_history(artifact_id,field_name,old_value,mod_by,entrydate) VALUES ($1,$2,$3,$4,$5)',
+		return db_query_params ('INSERT INTO artifact_history(artifact_id,field_name,old_value,new_value,mod_by,entrydate) VALUES ($1,$2,$3,$4,$5,$6)',
 					array ($this->getID(),
 					       $field_name,
 					       $old_value,
+					       $new_value,
 					       $user,
 					       $time)) ;
 	}
@@ -833,8 +837,8 @@
 				return false;
 			}
 		}
-               
-               
+
+
 		//commiting changes
 		db_commit();
 		return true;
@@ -864,29 +868,29 @@
 		if (!forge_check_perm ('tracker', $this->ArtifactType->getID(), 'manager')) {
 			// Non-managers cannot modify these fields
 			$priority=$this->getPriority();
-			$summary=htmlspecialchars_decode($this->getSummary());
-			$description=htmlspecialchars_decode($this->getDetails());
+			$summary=util_unconvert_htmlspecialchars($this->getSummary());
+			$description=util_unconvert_htmlspecialchars($this->getDetails());
 			$canned_response=100;
 			$new_artifact_type_id=$this->ArtifactType->getID();
 			$assigned_to=$this->getAssignedTo();
+			$status_id = $this->getStatusID();
 
 			if (!forge_check_perm ('tracker', $this->ArtifactType->getID(), 'tech')) {
 				$this->setPermissionDeniedError();
 				return false;
 			}
-		}
+		} else if (count($extra_fields) > 0) {
 		//
 		//	They may be using an extra field "status" box so we have to remap
 		//	the status_id based on the extra field - this keeps the counters
 		//	accurate
 		//
-		if (count($extra_fields) > 0) {
 			$status_id=$this->ArtifactType->remapStatus($status_id,$extra_fields);
 		}
-		if (!$this->getID() 
-			|| !$assigned_to 
-			|| !$status_id 
-			|| !$canned_response 
+		if (!$this->getID()
+			|| !$assigned_to
+			|| !$status_id
+			|| !$canned_response
 			|| !$new_artifact_type_id) {
 			$this->setMissingParamsError();
 			return false;
@@ -895,7 +899,7 @@
 
 		// Check that assigned_to is a tech for the tracker
 		if ($assigned_to != 100) {
-			if (!forge_check_perm ('tracker', $this->ArtifactType->getID(), 'tech')) {
+			if (!forge_check_perm_for_user ($assigned_to, 'tracker', $this->ArtifactType->getID(), 'tech')) {
 				$this->setError("Invalid assigned_to (assigned person is not a technician)");
 				return false;
 			}
@@ -904,7 +908,7 @@
 		// Array to record which properties were changed
 		$changes = array();
 		$update  = false;
-		
+
 		db_begin();
 
 		//
@@ -930,7 +934,7 @@
 				db_rollback();
 				return false;
 			}
-			
+
 			// Add a message to explain that the tracker was moved.
 			$message = 'Moved from '.$this->ArtifactType->getName().' to '.$newArtifactType->getName();
 			$this->addHistory('type', $this->ArtifactType->getName());
@@ -988,7 +992,7 @@
 					}
 				}
 			}
-			
+
 			// Special case if moving to a tracker with custom status (previous has not).
 			$custom_status_id = $newArtifactType->getCustomStatusField();
 			if ($custom_status_id && !util_ifsetor($new_extra_fields[$custom_status_id])) {
@@ -1059,6 +1063,7 @@
 			$changes['summary'] = 1;
 			$update = true;
 		}
+		$description = util_sanitise_multiline_submission($description);
  		if ($description && ($this->getDetails() != htmlspecialchars($description))) {
  			$this->addHistory('details', $this->getDetails());
  			$qpa = db_construct_qpa($qpa, ' details=$1,', array(htmlspecialchars($description)));
@@ -1100,7 +1105,7 @@
 			db_rollback();
 			return false;
 		}
-		
+
 		/*
 			handle canned responses
 
@@ -1142,7 +1147,7 @@
 			db_rollback();
 			return false;
 		}
-	
+
 	}
 
 	/**
@@ -1166,7 +1171,7 @@
 			$this->setPermissionDeniedError();
 			return false;
 		}
-		
+
 		$user_id = user_getid();
 		$res = db_query_params ('UPDATE artifact SET assigned_to=$1 WHERE artifact_id=$2',
 								array ($user_id, $this->getID())) ;
@@ -1175,7 +1180,7 @@
 			return false;
 		}
 		$this->fetchData($this->getID());
-		
+
 		return true;
 	}
 
@@ -1190,28 +1195,29 @@
 	function updateExtraFields($extra_fields,&$changes){
 /*
 	This is extremely complex code - we have take the passed array
-	and see if we need to insert it into the db, and may have to 
+	and see if we need to insert it into the db, and may have to
 	add history rows for the audit trail
 
 	start by getting all the available extra fields from ArtifactType
-		For each field from ArtifacType, check the passed array - 
+		For each field from ArtifacType, check the passed array -
 			This prevents someone from passing bogus extra field entries - they will be ignored
 			if the passed entry is blank, may have to force a default value
-			if the passed array is different from the existing data in db, 
+			if the passed array is different from the existing data in db,
 				delete old entry and insert new entries, along with possible audit trail
 			else
 				skip it and continue to next item
 
 */
-		if (empty($extra_fields)) {
-			return true;
-		}
 		$update = false;
 
 		//get a list of extra fields for this artifact_type
 		$ef = $this->ArtifactType->getExtraFields();
 		$efk=array_keys($ef);
 
+		if (empty($extra_fields) && empty($ef)) {
+			return true;
+		}
+
 		// If there is a status field, then check against the workflow.
 		for ($i=0; $i<count($efk); $i++) {
 			$efid=$efk[$i];
@@ -1233,7 +1239,7 @@
 				}
 			}
 		}
-		
+
 		//now we'll update this artifact for each extra field
 		for ($i=0; $i<count($efk); $i++) {
 			$efid=$efk[$i];
@@ -1304,16 +1310,16 @@
 				//
 				//	Compare for history purposes
 				//
-				
+
 				// these types have arrays associated to them, so they need
 				// special handling to check for differences
 				if ($type == ARTIFACT_EXTRAFIELDTYPE_MULTISELECT || $type == ARTIFACT_EXTRAFIELDTYPE_CHECKBOX) {
 					// check the differences between the old values and the new values
 					$old_values = util_result_column_to_array($resd,"field_data");
-					
+
 					$added_values = array_diff($extra_fields[$efid], $old_values);
 					$deleted_values = array_diff($old_values, $extra_fields[$efid]);
-					
+
 					if (!empty($added_values) || !empty($deleted_values))	{	// there are differences...
 						$field_name = $ef[$efid]['field_name'];
 						if (!preg_match('/^@/', $ef[$efid]['alias'])) {
@@ -1486,7 +1492,7 @@
 		} else {
 			return '';
 		}
-	}				
+	}
 
 	/**
 	 *	mailFollowup - send out an email update for this artifact.
@@ -1504,27 +1510,17 @@
 		if (!$changes) {
 			$changes=array();
 		}
-		
+
 		$sess = session_get_user() ;
-		if ($type == 1) { // Initial opening
-			if ($sess) {
-				$body = $this->ArtifactType->getName() ." item #". $this->getID() .", was opened at ". date( _('Y-m-d H:i'), $this->getOpenDate() ) . " by " . $sess->getRealName () ;
-			} else {
-				$body = $this->ArtifactType->getName() ." item #". $this->getID() .", was opened at ". date( _('Y-m-d H:i'), $this->getOpenDate() ) ;
-			}
-		} else {
-			if ($sess) {
-				$body = $this->ArtifactType->getName() ." item #". $this->getID() .", was changed at ". date( _('Y-m-d H:i'), $this->getOpenDate() ) . " by " . $sess->getRealName ();
-			} else {
-				$body = $this->ArtifactType->getName() ." item #". $this->getID() .", was changed at ". date( _('Y-m-d H:i'), $this->getOpenDate() ) ;
-			}
-		}
-			      
+		$body = $this->ArtifactType->Group->getUnixName() . '-' .
+		    $this->ArtifactType->getName() . ' item [#' .
+		    $this->getID() . '] was ' .
+		    ($type == 1 ? 'opened' : 'changed') . ' at ' .
+		    date(_('Y-m-d H:i'), $type == 1 ? $this->getOpenDate() : time()) .
+		    ($sess ? ' by ' . $sess->getRealName() : ' anonymously');
 
 		$body .= "\nYou can respond by visiting: ".
-			"\n".util_make_url ('/tracker/?func=detail&atid='. $this->ArtifactType->getID() .
-					    "&aid=". $this->getID() .
-					    "&group_id=". $this->ArtifactType->Group->getID()) .
+			"\n".util_make_url('/tracker/t_follow.php/'. $this->getID()) .
 			"\n\n".
 			$this->marker('status',$changes).
 			 "Status: ". $this->getStatusName() ."\n".
@@ -1537,16 +1533,16 @@
 			 " (". $this->getAssignedUnixName(). ")"."\n".
 			$this->marker('summary',$changes).
 			 "Summary: ". util_unconvert_htmlspecialchars( $this->getSummary() )." \n";
-			 
+
 		// Now display the extra fields
 		$efd = $this->getExtraFieldDataText();
 		foreach ($efd as $efid => $ef) {
 			$body .= $this->marker('extra_fields', $changes, $efid);
 			$body .= $ef["name"].": ".util_unconvert_htmlspecialchars($ef["value"])."\n";
 		}
-			
-		$subject='['. $this->ArtifactType->Group->getUnixName() . '-' . $this->ArtifactType->getName() . '][' . $this->getID() .'] '. util_unconvert_htmlspecialchars( $this->getSummary() );
 
+		$subject='['. $this->ArtifactType->Group->getUnixName() . '-' . $this->ArtifactType->getName() . '][#' . $this->getID() .'] '. util_unconvert_htmlspecialchars( $this->getSummary() );
+
 		if ($type > 1) {
 			// get all the email addresses that are monitoring this request or the ArtifactType
 			$monitor_ids = $this->getMonitorIds();
@@ -1591,11 +1587,11 @@
 			$result2=$this->getMessages();
 
 			$rows=db_numrows($result2);
-		
+
 			if ($result2 && $rows > 0) {
 				for ($i=0; $i<$rows; $i++) {
 					//
-					//	for messages posted by non-logged-in users, 
+					//	for messages posted by non-logged-in users,
 					//	we grab the email they gave us
 					//
 					//	otherwise we use the confirmed one from the users table
@@ -1616,7 +1612,7 @@
 					"\n\nMessage:".
 					"\n".util_unconvert_htmlspecialchars( db_result($result2,$i,'body') ).
 					"\n\n----------------------------------------------------------------------";
-				}	   
+				}
 			}
 
 		}
@@ -1636,10 +1632,10 @@
 		} else {
 			$monitor_ids=array_unique($monitor_ids);
 		}
-		
+
 		$from = $this->ArtifactType->getReturnEmailAddress();
 		$extra_headers = 'Reply-to: '.$from;
-		
+
 		// load the e-mail addresses of the users
 		$users =& user_get_objects($monitor_ids);
 		if (count($users) > 0) {
@@ -1649,21 +1645,21 @@
 				}
 			}
 		}
-		
+
 		//now remove all duplicates from the email list
 		if (count($emails) > 0) {
 			$BCC=implode(',',array_unique($emails));
-			util_send_message('',$subject,$body,$from,$BCC,'',$extra_headers);			
+			util_send_message('',$subject,$body,$from,$BCC,'',$extra_headers);
 		}
-		
+
 		$this->sendSubjectMsg = $subject;
 		$this->sendBodyMsg = $body;
-		
+
 		//util_handle_message($monitor_ids,$subject,$body,$BCC);
-		
+
 		return true;
 	}
-	
+
 	/**
 	* getExtraFieldDataText - Return the extra fields' data in a human-readable form.
 	*
@@ -1675,16 +1671,16 @@
 		// associated to the fields
 		$efs = $this->ArtifactType->getExtraFields();
 		$efd = $this->getExtraFieldData();
-		
+
 		$return = array();
 
 		foreach ($efs as $efid => $ef) {
 			$name = $ef["field_name"];
 			$type = $ef["field_type"];
-			
+
 			// Get the value according to the type
 			switch ($type) {
-				
+
 				// for these types, the associated value comes straight
 				case ARTIFACT_EXTRAFIELDTYPE_TEXT:
 				case ARTIFACT_EXTRAFIELDTYPE_TEXTAREA:
@@ -1696,7 +1692,7 @@
 						$value = '';
 					}
 					break;
-	
+
 				// the other types have and ID or an array of IDs associated to them
 				default:
 					if (isset($efd[$efid])) {
@@ -1705,10 +1701,10 @@
 						$value = 'None';
 					}
 			}
-			
+
 			$return[$efid] = array("name" => $name, "value" => $value, 'type' => $type);
 		}
-		
+
 		return $return;
 	}
 
@@ -1725,23 +1721,29 @@
 
 		switch ($this->criterion) {
 		case 'artifact_id':
+		case 'id':
 			/* see below */
 			break;
 		case 'summary':
-			$namecmp = strcoll ($a->getSummary(),
-					    $b->getSummary()) ;
-			if ($namecmp != 0) {
-				return $namecmp ;
+			$astr = $a->getSummary();
+			$bstr = $b->getSummary();
+			if (($scmp = strcasecmp($astr, $bstr)) != 0) {
+				return $scmp;
 			}
-			break ;
+			break;
 		case 'assigned_to':
-			$namecmp = strcoll (user_get_object($a->getAssignedTo())->getRealName(),
-					    user_get_object($b->getAssignedTo())->getRealName()) ;
-			if ($namecmp != 0) {
-				return $namecmp ;
+		case 'assigned_unixname':
+			$astr = user_get_object($a->getAssignedTo())->getUnixName();
+			$bstr = user_get_object($b->getAssignedTo())->getUnixName();
+			// if one of them is None, sort him up,
+			// but how to reach this code? couldn't see it…
+//ffDebug('trace','strs',print_r(array('astr'=>$astr,'bstr'=>$bstr),1));
+			if (($scmp = strcasecmp($astr, $bstr)) != 0) {
+				return $scmp;
 			}
-			break ;
+			break;
 		case 'submitted_by':
+		case 'submitted_unixname':
 			$namecmp = strcoll (user_get_object($a->getSubmittedBy())->getRealName(),
 					    user_get_object($b->getSubmittedBy())->getRealName()) ;
 			if ($namecmp != 0) {
@@ -1768,12 +1770,17 @@
 			$b_prority = $b->getPriority() ;
 			return ($a_prority < $b_prority) ? -1 : 1;
 			break;
+		case 'status_id':
+			$a_sid = $a->getStatusID();
+			$b_sid = $b->getStatusID();
+			return ($a_sid < $b_sid) ? -1 : 1;
+			break;
 		default:
 			$aa=$a->getExtraFieldDataText();
 			$ba=$b->getExtraFieldDataText();
 			$af=$aa[$this->criterion]['value'];
 			$bf=$ba[$this->criterion]['value'];
-			$namecmp = strcoll ($af,$bf) ;
+			$namecmp = strcasecmp ($af,$bf) ;
 			if ($namecmp != 0) {
 				return $namecmp ;
 			}

Modified: branches/messer-51/src/common/tracker/ArtifactExtraField.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactExtraField.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactExtraField.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -35,6 +35,18 @@
 define('ARTIFACT_EXTRAFIELDTYPE_RELATION',9);
 define('ARTIFACT_EXTRAFIELDTYPE_INTEGER',10);
 
+function &ArtifactExtraField_getAvailableValues($id) {
+	$rv = array();
+	$res = db_query_params('SELECT * FROM artifact_extra_field_elements
+		WHERE extra_field_id = $1
+		ORDER BY element_pos ASC, element_id ASC',
+	    array($id));
+	while (($row = db_fetch_array($res))) {
+		$rv[] = $row;
+	}
+	return ($rv);
+}
+
 class ArtifactExtraField extends Error {
 
 	/** 
@@ -121,7 +133,7 @@
 					array($name,
 					      $this->ArtifactType->getID()));
 		if (db_numrows($res) > 0) {
-			$this->setError(_('Field name already exists'));
+			$this->setError(sprintf(_('Field name "%s" already exists'), $name));
 			return false;
 		}
 		if ($field_type == ARTIFACT_EXTRAFIELDTYPE_TEXT || $field_type == ARTIFACT_EXTRAFIELDTYPE_INTEGER) {
@@ -172,29 +184,6 @@
 				if (!$this->ArtifactType->setCustomStatusField($id)) {
 					db_rollback();
 					return false;
-				} else {
-					//
-					//	Must insert some default statuses for each artifact
-					//
-					$ao = new ArtifactExtraFieldElement($this);
-					if (!$ao || !is_object($ao)) {
-						$feedback .= 'Unable to create ArtifactExtraFieldElement Object';
-						db_rollback();
-						return false;
-					} else {
-						if (!$ao->create('Open', '1')) {
-							$feedback .= _('Error inserting an element').': '.$ao->getErrorMessage();
-							$ao->clearError();
-							db_rollback();
-							return false;
-						}
-						if (!$ao->create('Closed', '2')) {
-							$feedback .= _('Error inserting an element').': '.$ao->getErrorMessage();
-							$ao->clearError();
-							db_rollback();
-							return false;
-						}
-					}
 				}
 			} elseif (strstr(ARTIFACT_EXTRAFIELD_FILTER_INT,$field_type) !== false) {
 //
@@ -344,12 +333,7 @@
 	 *	@return array
 	 */
 	function getAvailableValues() {
-		$res = db_query_params ('SELECT * FROM artifact_extra_field_elements WHERE extra_field_id=$1',
-					array ($this->getID()));
-		$return = array();
-		while ($row = db_fetch_array($res)) {
-			$return[] = $row;
-		}
+		$return =& ArtifactExtraField_getAvailableValues($this->getID());
 		return $return;
 	}
 
@@ -384,7 +368,7 @@
 				$this->ArtifactType->getID(),
 				$this->getID()));
 		if (db_numrows($res) > 0) {
-			$this->setError(_('Field name already exists'));
+			$this->setError(sprintf(_('Field name "%s" already exists'), $name));
 			return false;
 		}
 		if ($is_required) {
@@ -575,30 +559,42 @@
 	}
 
 	function reorderValues($element_id, $new_pos) {
-
-		$res = db_query_params ('SELECT element_id FROM artifact_extra_field_elements WHERE extra_field_id=$1 ORDER BY element_pos ASC, element_id ASC',
-			array($this->getID()));
-		$max = db_numrows($res);
+		$res =& ArtifactExtraField_getAvailableValues($this->getID());
+		$max = count($res);
 		if ($new_pos < 1 || $new_pos > $max) {
 			$this->setError(_('Out of range value'));
 			return false;
 		}
-		$i = 1;
-		while ($i <= $max) {
-			if ($i == $new_pos) {
-				$data[] = $element_id;
-				$i++;
+		$new_pos--;
+		$cur_pos = -1;
+		for ($i = 0; $i < $max; ++$i) {
+			if ($res[$i]['element_id'] == $element_id) {
+				$cur_pos = $i;
 			}
-			if (($row = db_fetch_array($res)) && $row['element_id'] != $element_id) {
-				$data[] = $row['element_id'];
-				$i++;
+		}
+		if ($cur_pos == -1 || $cur_pos == $new_pos) {
+			/* element not found or already at right position */
+			return true;
+		}
+		$nd = array();
+		$nc = 0;
+		for ($i = 0; $i < $max; ++$i) {
+			if ($i == $cur_pos) {
+				$np = $new_pos;
+			} else {
+				if ($nc == $new_pos) {
+					$nc++;
+				}
+				$np = $nc++;
 			}
+			$nd[$np] = array($i, $res[$i]['element_id']);
 		}
-		for ($i = 0; $i < count($data); $i++) {
-			if (! $this->updateOrder($data[$i], $i + 1))
+		for ($i = 0; $i < $max; ++$i) {
+			if ($nd[$i][0] != $i &&
+			    !$this->updateOrder($nd[$i][1], $i + 1)) {
 				return false;
+			}
 		}
-
 		return true;
 	}
 

Modified: branches/messer-51/src/common/tracker/ArtifactFactory.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactFactory.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactFactory.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -125,7 +125,7 @@
 							/* try JSON encoded preferences */
 							$pref_arr = array();
 							if (minijson_decode($custom_pref,
-							    &$pref_arr)) {
+							    $pref_arr)) {
 								$_assigned_to = util_ifsetor($pref_arr['assigned_to']);
 								$_status = util_ifsetor($pref_arr['status']);
 								$order_col = util_ifsetor($pref_arr['order_col']);
@@ -183,7 +183,7 @@
 			if ($this->query_type == 'query') {
 				$aq = new ArtifactQuery($this->ArtifactType, $this->query_id);
 				$_assigned_to=$aq->getAssignee();
-				$_submitted_by = 0;
+				$_submitted_by = $aq->getCreator();
 				$_status=$aq->getStatus();
 				$_extra_fields=$aq->getExtraFields();
 				$this->moddaterange = $aq->getModDateRange();
@@ -201,13 +201,24 @@
 		//  validate the column names and sort order passed in from user
 		//  before saving it to prefs
 		//
-		$allowed_order_col = array ('artifact_id',
-					   'summary',
-					   'open_date',
-					   'close_date',
-					   'assigned_unixname',
-					   'submitted_unixname',
-					   'priority') ;
+		switch ($order_col) {
+		case 'assigned_to':
+			$order_col = 'assigned_unixname';
+			break;
+		case 'submitted_by':
+			$order_col = 'submitted_unixname';
+			break;
+		}
+		$allowed_order_col = array(
+			'artifact_id',
+			'summary',
+			'open_date',
+			'close_date',
+			'assigned_unixname',
+			'submitted_unixname',
+			'priority',
+			'status_id',
+		    );
 		$efarr = $this->ArtifactType->getExtraFields(array(ARTIFACT_EXTRAFIELDTYPE_TEXT,
 						    ARTIFACT_EXTRAFIELDTYPE_TEXTAREA,
 						    ARTIFACT_EXTRAFIELDTYPE_INTEGER,
@@ -233,6 +244,7 @@
 				if (is_array($_assigned_to)) {
 					$_assigned_to='';
 				}
+				//XXX same as ↑ for submitted_by?
 				$aux_extra_fields = array();
 				if (is_array($_extra_fields)){
 					//print_r($_extra_fields);
@@ -299,32 +311,7 @@
 		else
 			return '';
 	}
-	
-	function getArtifacts_helper_getsubmittedby(&$sb) {
-		if (!isset($sb) || !$sb) {
-			return '';
-		}
 
-		if (!is_array($sb)) {
-			$num = util_nat0($sb);
-			if ($num === false) {
-				return '';
-			}
-			return "submitted_by=$num";
-		}
-
-		$res = "";
-		foreach ($sb as $v) {
-			$q = $this->getArtifacts_helper_getsubmittedby($v);
-			if ($res) {
-				$res .= " OR " . $q;
-			} else {
-				$res = $q;
-			}
-		}
-		return $res;
-	}
-
 	/**
 	 *	getArtifacts - get an array of Artifact objects.
 	 *
@@ -393,10 +380,22 @@
 			}
 		}
 
-		if ($this->submitted_by && ($this->submitted_by != 0)) {
+		if ($this->submitted_by) {
 			//for open tasks, add status=100 to make sure we show all
-			$wheresql .= ' AND submitted_by=$'.$paramcount++ ;
-			$params[] = $this->submitted_by;
+			if (is_array($this->submitted_by)) {
+				$wheresql .= ' AND submitted_by = ANY ($' . $paramcount++;
+				$params[] = db_int_array_to_any_clause($this->submitted_by);
+				/*
+				 * eh. why is this a separate string
+				 * concatenation? and why does this
+				 * not use db_construct_qpa, anyway?
+				 * --mirabilos
+				 */
+				$wheresql .= ')';
+			} else {
+				$wheresql .= ' AND submitted_by = $' . $paramcount++;
+				$params[] = $this->submitted_by;
+			}
 		}
 
 		if ($this->last_changed > 0) {
@@ -450,23 +449,25 @@
 		}
 		//add constraint on the followups string.
 		if ($this->followups) {
-			$wheresql .= 'LEFT OUTER JOIN artifact_message am USING (artifact_id)
-						WHERE am.body LIKE $'.$paramcount++;
+			$selectsql .= ' LEFT OUTER JOIN artifact_message am USING (artifact_id)';
+			$wheresql .= ' AND am.body LIKE $'.$paramcount++;
 			$params[] = $this->followups;
 		}
 
 		$sortorder = util_ensure_value_in_set ($this->sort,
 						       array ('ASC', 'DESC')) ;
 		
-		$sortcol = util_ensure_value_in_set ($this->order_col,
-						     array ('extra',
-							    'artifact_id',
-							    'summary',
-							    'open_date',
-							    'close_date',
-							    'assigned_unixname',
-							    'submitted_unixname',
-							    'priority'));
+		$sortcol = util_ensure_value_in_set($this->order_col, array(
+			'extra',
+			'artifact_id',
+			'summary',
+			'open_date',
+			'close_date',
+			'assigned_unixname',
+			'submitted_unixname',
+			'priority',
+			'status_id',
+		    ));
 
 		if ($sortcol != 'extra') {
 			$ordersql = " ORDER BY Artifacts.group_artifact_id $sortorder, Artifacts.$sortcol $sortorder";

Modified: branches/messer-51/src/common/tracker/ArtifactFile.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactFile.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactFile.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -200,7 +200,8 @@
 	 *	@return	boolean	success.
 	 */
 	function delete() {
-		if (!forge_check_perm ('tracker', $this->Artifact->ArtifactType->getID(), 'tech')) {
+		if (!forge_check_perm('tracker', $this->Artifact->ArtifactType->getID(), 'tech') &&
+		    !forge_check_perm('tracker', $this->Artifact->ArtifactType->getID(), 'manager')) {
 			$this->setPermissionDeniedError();
 			return false;
 		}

Modified: branches/messer-51/src/common/tracker/ArtifactQuery.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactQuery.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactQuery.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -128,7 +128,7 @@
 	 *  @return 	true on success / false on failure.
 	 */
 	function create($name,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange=0,$closedaterange=0,
-		$summary,$description,$followups,$query_type=0,$query_options=array()) {
+		$summary,$description,$followups,$query_type=0,$query_options=array(),$_submitted_by=0) {
 		//
 		//	data validation
 		//
@@ -175,7 +175,7 @@
 				db_rollback();
 				return false;
 			} else {
-				if (!$this->insertElements($id,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups)) {
+				if (!$this->insertElements($id,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups,$_submitted_by)) {
 					db_rollback();
 					return false;
 				}
@@ -241,7 +241,7 @@
 	 *
 	 *
 	 */
-	function insertElements($id,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups) {
+	function insertElements($id,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups,$_submitted_by=0) {
 		$res = db_query_params ('DELETE FROM artifact_query_fields WHERE artifact_query_id=$1',
 					array ($id)) ;
 		if (!$res) {
@@ -267,7 +267,8 @@
 		} else {
 			$assignee = intval($assignee);
 		}	
-		
+
+
 		if (preg_match("/[^[:alnum:]_]/", $sort_col)) {
 			$this->setError('ArtifactQuery: not valid sort_col');
 			return false;
@@ -386,6 +387,26 @@
 			return false;
 		}
 		
+		if (is_array($_submitted_by)) {
+				for ($e = 0; $e < count($_submitted_by); $e++) {
+					$_submitted_by[$e] = intval($_submitted_by[$e]);
+				}
+				$_submitted_by=implode(',',$_submitted_by);
+		} else {
+			$_submitted_by = intval($_submitted_by);
+		}	
+
+		$res = db_query_params ('INSERT INTO artifact_query_fields
+			(artifact_query_id,query_field_type,query_field_id,query_field_values)
+			VALUES ($1,$2,0,$3)',
+					array ($id,
+					       ARTIFACT_QUERY_CREATOR,
+					       $_submitted_by));
+		if (!$res) {
+			$this->setError('Setting Creator: '.db_error());
+			return false;
+		}
+
 		// Saving the followups value.
 		$res=db_query_params ('INSERT INTO artifact_query_fields
 			(artifact_query_id,query_field_type,query_field_id,query_field_values)
@@ -417,6 +438,8 @@
 					$vals[$i][$e]=intval($vals[$i][$e]);
 				}
 				$vals[$i]=implode(',',$vals[$i]);
+			} else {
+				$vals[$i] = intval($vals[$i]);
 			}
 
 			$aef = new ArtifactExtraField($this->ArtifactType, $keys[$i]);
@@ -498,9 +521,7 @@
 	 *	@return	string	The column name.
 	 */
 	function getSortCol() {
-		if (!isset($this->element_array))
-			return false;
-		return $this->element_array[ARTIFACT_QUERY_SORTCOL][0];
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_SORTCOL][0]);
 	}
 
 	/**
@@ -509,9 +530,7 @@
 	 *	@return	string	ASC or DESC
 	 */
 	function getSortOrd() {
-		if (!isset($this->element_array))
-			return false;
-		return $this->element_array[ARTIFACT_QUERY_SORTORD][0];
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_SORTORD][0]);
 	}
 
 	/**
@@ -520,13 +539,7 @@
 	 *	@return	string	mod date range.
 	 */
 	function getModDateRange() {
-		if (!isset($this->element_array))
-			return false;
-		if ($this->element_array[ARTIFACT_QUERY_MODDATE][0]) {
-			return $this->element_array[ARTIFACT_QUERY_MODDATE][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_MODDATE][0]);
 	}
 
 	/**
@@ -535,13 +548,7 @@
 	 *	@return	string	Open date range.
 	 */
 	function getOpenDateRange() {
-		if (!isset($this->element_array))
-			return false;
-		if ($this->element_array[ARTIFACT_QUERY_OPENDATE][0]) {
-			return $this->element_array[ARTIFACT_QUERY_OPENDATE][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_OPENDATE][0]);
 	}
 
 	/**
@@ -550,13 +557,7 @@
 	 *	@return	string	Close date range.
 	 */
 	function getCloseDateRange() {
-		if (!isset($this->element_array))
-			return false;
-		if ($this->element_array[ARTIFACT_QUERY_CLOSEDATE][0]) {
-			return $this->element_array[ARTIFACT_QUERY_CLOSEDATE][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_CLOSEDATE][0]);
 	}
 
 	/**
@@ -565,11 +566,7 @@
 	 *	@return	string	Summary string.
 	 */
 	function getSummary() {
-		if ($this->element_array[ARTIFACT_QUERY_SUMMARY][0]) {
-			return $this->element_array[ARTIFACT_QUERY_SUMMARY][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_SUMMARY][0]);
 	}
 
 	/**
@@ -578,11 +575,7 @@
 	 *	@return	string	Description string.
 	 */
 	function getDescription() {
-		if ($this->element_array[ARTIFACT_QUERY_DESCRIPTION][0]) {
-			return $this->element_array[ARTIFACT_QUERY_DESCRIPTION][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_DESCRIPTION][0]);
 	}
 
 	/**
@@ -591,11 +584,7 @@
 	 *	@return	string	Folowups string.
 	 */
 	function getFollowups() {
-		if ($this->element_array[ARTIFACT_QUERY_FOLLOWUPS][0]) {
-			return $this->element_array[ARTIFACT_QUERY_FOLLOWUPS][0];
-		} else {
-			return false;
-		}
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_FOLLOWUPS][0]);
 	}
 
 	/**
@@ -604,9 +593,7 @@
 	 *	@return	string	Assignee ID
 	 */
 	function getAssignee() {
-		if (!isset($this->element_array))
-			return false;
-		return $this->element_array[ARTIFACT_QUERY_ASSIGNEE][0];
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_ASSIGNEE][0]);
 	}
         
         /**
@@ -628,9 +615,7 @@
 	 *	@return	string	Status ID
 	 */
 	function getStatus() {
-		if (!isset($this->element_array))
-			return false;
-		return $this->element_array[ARTIFACT_QUERY_STATE][0];
+		return util_ifsetor($this->element_array[ARTIFACT_QUERY_STATE][0]);
 	}
 
 	/**
@@ -665,7 +650,7 @@
 	 *  @return	boolean	success.
 	 */
 	function update($name,$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange='',$closedaterange='',
-		$summary,$description,$followups,$query_type=0,$query_options=array()) {
+		$summary,$description,$followups,$query_type=0,$query_options=array(),$_submitted_by=0) {
 		if (!$name) {
 			$this->setMissingParamsError();
 			return false;
@@ -703,7 +688,7 @@
 						  join('|', $query_options),
 						  $this->getID())) ;
 		if ($result && db_affected_rows($result) > 0) {
-			if (!$this->insertElements($this->getID(),$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups)) {
+			if (!$this->insertElements($this->getID(),$status,$assignee,$moddaterange,$sort_col,$sort_ord,$extra_fields,$opendaterange,$closedaterange,$summary,$description,$followups,$_submitted_by)) {
 				db_rollback();
 				return false;
 			} else {

Modified: branches/messer-51/src/common/tracker/ArtifactType.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactType.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactType.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -26,6 +26,7 @@
  */
 
 require_once $gfcommon.'include/Error.class.php';
+require_once $gfcommon.'tracker/ArtifactExtraField.class.php';
 require_once $gfcommon.'tracker/ArtifactExtraFieldElement.class.php';
 
 	/**
@@ -510,7 +511,7 @@
 				$status_id=db_result($res,0,'status_id');
 			} else {
 				// custom status was not passed... use the first status from the database
-				$res = db_query_params ('SELECT status_id FROM artifact_extra_field_elements WHERE extra_field_id=$1 ORDER BY element_id ASC LIMIT 1 OFFSET 0',
+				$res = db_query_params ('SELECT status_id FROM artifact_extra_field_elements WHERE extra_field_id=$1 ORDER BY element_pos ASC, element_id ASC LIMIT 1 OFFSET 0',
 						       array ($csfield)) ;
 				if (db_numrows($res) == 0) {		// No values available
 					$this->setError('Error Remapping Status');
@@ -645,16 +646,7 @@
 	 *
 	 *	@return	boolean	true/false on success
 	 */
-	function cloneFieldsFrom($clone_tracker_id) {
-
-		$g =& group_get_object(forge_get_config('template_group'));
-		if (!$g || !is_object($g)) {
-			$this->setError('Could Not Get Template Group');
-			return false;
-		} elseif ($g->isError()) {
-			$this->setError('Template Group Error '.$g->getErrorMessage());
-			return false;
-		}
+	function cloneFieldsFrom($g, $clone_tracker_id) {
 		$at = new ArtifactType($g,$clone_tracker_id);
 		if (!$at || !is_object($at)) {
 			$this->setError('Could Not Get Tracker To Clone');
@@ -664,8 +656,8 @@
 			return false;
 		}
 		$efs = $at->getExtraFields();
+		ksort($efs);
 
-
 		//
 		//	Iterate list of extra fields
 		//
@@ -673,7 +665,7 @@
 		foreach ($efs as $ef) {
 			//new field in this tracker
 			$nef = new ArtifactExtraField($this);
-			if (!$nef->create( addslashes(util_unconvert_htmlspecialchars($ef['field_name'])), $ef['field_type'], $ef['attribute1'], $ef['attribute2'], $ef['is_required'], $ef['alias'])) {
+			if (!$nef->create(util_unconvert_htmlspecialchars($ef['field_name']), $ef['field_type'], $ef['attribute1'], $ef['attribute2'], $ef['is_required'], $ef['alias'])) {
 				$this->setError('Error Creating New Extra Field: '.$nef->getErrorMessage());
 				db_rollback();
 				return false;
@@ -681,12 +673,11 @@
 			//
 			//	Iterate the elements
 			//
-			$resel = db_query_params ('SELECT * FROM artifact_extra_field_elements WHERE extra_field_id=$1',
-						  array ($ef['extra_field_id'])) ;
-			while ($el = db_fetch_array($resel)) {
+			$resel =& ArtifactExtraField_getAvailableValues($ef['extra_field_id']);
+			foreach ($resel as $el) {
 				//new element
 				$nel = new ArtifactExtraFieldElement($nef);
-				if (!$nel->create( addslashes(util_unconvert_htmlspecialchars($el['element_name'])), $el['status_id'] )) {
+				if (!$nel->create(util_unconvert_htmlspecialchars($el['element_name']), $el['status_id'] )) {
 					db_rollback();
 					$this->setError('Error Creating New Extra Field Element: '.$nel->getErrorMessage());
 					return false;
@@ -723,16 +714,7 @@
 			return false;
 		}
 		if (!isset($this->extra_field[$id])) {
-			$this->extra_field[$id] = array();
-			$res = db_query_params  ('SELECT element_id,element_name,status_id
-				FROM artifact_extra_field_elements
-				WHERE extra_field_id = $1
-				ORDER BY element_pos ASC, element_id ASC',
-						 array ($id)) ;
-			$i=0;
-			while($arr = db_fetch_array($res)) {
-				$this->extra_field[$id][$i++] = $arr;
-			}
+			$this->extra_field[$id] =& ArtifactExtraField_getAvailableValues($id);
 //			if (count($this->extra_field[$id]) == 0) {
 //				return;
 //			}
@@ -938,7 +920,7 @@
 	 * @return	string	name.
 	 */
 	function getStatusName($id) {
-		$result = db_query_params ('select status_name from artifact_status WHERE id=$1',
+		$result = db_query_params('SELECT status_name FROM artifact_status WHERE id=$1',
 					   array ($id)) ;
 		if ($result && db_numrows($result) > 0) {
 			return db_result($result,0,'status_name');
@@ -959,10 +941,11 @@
 	 *  @param	bool	(1) true (0) false - whether the resolution box should be shown.
 	 *  @param	string	Free-form string that project admins can place on the submit page.
 	 *  @param	string	Free-form string that project admins can place on the browse page.
+	 *  @param	bool	(1) true (0) false - whether non-logged-in users can submit.
 	 *  @return true on success, false on failure.
 	 */
 	function update($name,$description,$email_all,$email_address,
-		$due_period, $status_timeout,$use_resolution,$submit_instructions,$browse_instructions) {
+		$due_period, $status_timeout,$use_resolution,$submit_instructions,$browse_instructions,$allow_anon) {
 
 		if (!forge_check_perm ('tracker_admin', $this->Group->getID())) {
 			$this->setPermissionDeniedError();
@@ -998,6 +981,7 @@
 			}
 		}
 
+		$allow_anon = ((!$allow_anon) ? 0 : $allow_anon);
 		$email_all = ((!$email_all) ? 0 : $email_all);
 		$use_resolution = ((!$use_resolution) ? 0 : $use_resolution);
 
@@ -1009,6 +993,7 @@
 			due_period=$5,
 			status_timeout=$6,
 			submit_instructions=$7,
+			allow_anon=$11,
 			browse_instructions=$8
 			WHERE group_artifact_id=$9 AND group_id=$10',
 					 array (
@@ -1021,7 +1006,9 @@
 						 htmlspecialchars($submit_instructions),
 						 htmlspecialchars($browse_instructions),
 						 $this->getID(),
-						 $this->Group->getID())) ;
+						 $this->Group->getID(),
+						$allow_anon,
+			    )) ;
 
 		if (!$res || db_affected_rows($res) < 1) {
 			$this->setError('ArtifactType::Update(): '.db_error());

Modified: branches/messer-51/src/common/tracker/ArtifactWorkflow.class.php
===================================================================
--- branches/messer-51/src/common/tracker/ArtifactWorkflow.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/ArtifactWorkflow.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -87,6 +87,9 @@
 	 * When a new element is created, add all the new events in the workflow.
 	 */
 	function addNode($element_id) {
+		/* flush cache used by getExtraFieldElements */
+		unset($this->ath->extra_field[$this->field_id]);
+
 		$elearray = $this->ath->getExtraFieldElements($this->field_id);
 		foreach ($elearray as $e) {
 			if ($element_id !== $e['element_id']) {

Modified: branches/messer-51/src/common/tracker/artifact_type_definitions.php
===================================================================
--- branches/messer-51/src/common/tracker/artifact_type_definitions.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/tracker/artifact_type_definitions.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,7 +3,7 @@
  * FusionForge trackers
  *
  * Copyright 2005, GForge, LLC
- * Copyright © 2011
+ * Copyright © 2011, 2012
  *	Thorsten Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -26,7 +26,8 @@
 //	Here is where you define different sets of default elements
 //
 
-$oss=array('All',
+$oss = array(
+	'All',
 	/* Desktop Microsoft */
 	'Windows 3.1',
 	'Windows 95',
@@ -61,6 +62,7 @@
 
 	/* Mostly Unix */
 	'Linux',
+	'ÆrieBSD',
 	'BSDi BSD/OS',
 	'DragonFly BSD',
 	'FreeBSD',
@@ -75,7 +77,8 @@
 	'Hurd',
 	'IRIX',
 	'Minix',
-	'QNX/Neutrino',
+	'SCO OpenServer',
+	'SCO UnixWare',
 	'Solaris',
 	'SunOS',
 	'Tru64 (OSF/1)',
@@ -99,7 +102,9 @@
 	'EPOC32 (Psion)',
 	'Maemo',
 	'MeeGo',
+	'Mer',
 	'Symbian',
+	'Tizen',
 	'Windows CE',
 	'Windows Mobile',
 	'Windows Phone 7',
@@ -114,6 +119,7 @@
 	'Contiki',
 	'LynxOS',
 	'MenuetOS',
+	'QNX/Neutrino',
 	'RTEMS',
 	'VxWorks',
 
@@ -128,8 +134,8 @@
 	/* Old Unix */
 	'A/UX',
 	'BS2000/OSD',
+	'Dell UNIX (SVR4)',
 	'DomainOS / Aegis',
-	'SCO OpenServer/Unixware',
 	'SINIX',
 	'DEC ULTRIX',
 	'Xenix',
@@ -156,32 +162,32 @@
 	'TRS-DOS (Tandy)',
 	'TSX-32',
 
-	'other'
+	'other',
 );
 
 $severities = array(
-	'blocker',
-	'critical',
-	'major',
-	'normal',
-	'minor',
+	'enhancement',
 	'trivial',
-	'enhancement'
+	'minor',
+	'normal',
+	'major',
+	'critical',
+	'blocker',
 );
 
 $resolutions = array(
-	'Accepted As Bug',
-	'Fixed',
-	'Won\'t Fix',
-	'Invalid',
-	'Awaiting Response',
-	'Works for me',
-	'Duplicate',
-	'Reopen',
-	'New',
-	'Spec out of Date',
-	'PM-Verified',
-	'QA-Verified',
+	array('New', 1),
+	array('Accepted As Bug', 1),
+	array('Fixed', 2),
+	array('Won\'t Fix', 2),
+	array('Invalid', 3),
+	array('Awaiting Response', 1),	/* should be PENDING not OPEN */
+	array('Works for me', 2),
+	array('Duplicate', 2),
+	array('Reopen', 1),
+	array('Spec out of Date', 1),
+	array('PM-Verified', 1),
+	array('QA-Verified', 2),
 );
 
 
@@ -194,12 +200,13 @@
 
 $os=array('Operating System',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0,0,$oss);
 $url=array('URL',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,100,0,array());
-$component=array('Component',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,100,0,array());
-$browser=array('Browser',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,100,0,array());
-$verfound=array('Version Found',ARTIFACT_EXTRAFIELDTYPE_TEXT,20,64,0,array());
-$verfixed=array('Version Fixed',ARTIFACT_EXTRAFIELDTYPE_TEXT,20,64,0,array());
-$resolution=array('Resolution',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0,0,$resolutions);
+$component=array('Component',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,127,0,array());
+$browser=array('Browser',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,127,0,array());
+$verfound=array('Version Found',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,64,0,array());
+$verfixed=array('Version Fixed',ARTIFACT_EXTRAFIELDTYPE_TEXT,40,64,0,array());
+$resolution=array('Resolution',ARTIFACT_EXTRAFIELDTYPE_STATUS,0,0,1,$resolutions);
 $severity=array('Severity',ARTIFACT_EXTRAFIELDTYPE_SELECT,0,0,0,$severities);
+$relitem=array('Linked Bugs',ARTIFACT_EXTRAFIELDTYPE_RELATION,40,255,0,array());
 
 //
 //	Here is where you define which trackers to create
@@ -221,66 +228,18 @@
 	$verfixed,
 	$resolution,
 	$severity,
+	$relitem,
 );
-$evolvis_renderer = '
-	<!-- Start Extra Fields Rendering (Evolvis Template: Bugs) -->
-	<!-- COLUMN NAMES MUST BE PRESERVED EXACTLY, INCLUDING CASE! -->
-	<tr>
-		<td width="50%" valign="top"><strong>Severity:<br /></strong><!--Severity--></td>
-		<td width="50%" valign="top"><strong>Resolution:<br /></strong><!--Resolution--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>Operating System:<br /></strong><!--Operating System--></td>
-		<td width="50%" valign="top"><strong>Browser</strong>:<br /><!--Browser--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>URL</strong>:<br /><!--URL--></td>
-		<td width="50%" valign="top"><strong>Component</strong>:<br /><!--Component--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>Version Found</strong>:<br /><!--Version Found--></td>
-		<td width="50%" valign="top"><strong>Version Fixed</strong>:<br /><!--Version Fixed--></td>
-	</tr>
-	<!-- End Extra Fields Rendering (Evolvis Template) -->
-';
 
-$trackers[]=array('Bugs','Bug Tracking System',1,0,'','',30,0,'','',1, $evolvis_fields, $evolvis_renderer);
+$trackers[]=array('Bugs','Bug Tracking System',1,0,'','',30,0,'','',1, $evolvis_fields);
 
-$trackers[]=array('Support','Tech Support Tracking System',1,0,'','',30,0,'','',2, $evolvis_fields, $evolvis_renderer);
+$trackers[]=array('Support','Tech Support Tracking System',1,0,'','',30,0,'','',2, $evolvis_fields);
 
 $trackers[]=array('Patches','Patch Tracking System',1,0,'','',30,0,'','',3,
-	array($component, $verfound, $verfixed, $resolution, $severity, $url), '
-	<!-- Start Extra Fields Rendering (Evolvis Template: Patches) -->
-	<!-- COLUMN NAMES MUST BE PRESERVED EXACTLY, INCLUDING CASE! -->
-	<tr>
-		<td width="50%" valign="top"><strong>Severity:<br /></strong><!--Severity--></td>
-		<td width="50%" valign="top"><strong>Resolution:<br /></strong><!--Resolution--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>URL</strong>:<br /><!--URL--></td>
-		<td width="50%" valign="top"><strong>Component</strong>:<br /><!--Component--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>Version Found</strong>:<br /><!--Version Found--></td>
-		<td width="50%" valign="top"><strong>Version Fixed</strong>:<br /><!--Version Fixed--></td>
-	</tr>
-	<!-- End Extra Fields Rendering (Evolvis Template) -->
-');
+    array($component, $verfound, $verfixed, $resolution, $severity, $url, $relitem));
 
 $trackers[]=array('Feature Requests','Feature Request Tracking System',1,0,'','',30,0,'','',4,
-	array($url, $component, $browser, $os), '
-	<!-- Start Extra Fields Rendering (Evolvis Template: FRs) -->
-	<!-- COLUMN NAMES MUST BE PRESERVED EXACTLY, INCLUDING CASE! -->
-	<tr>
-		<td width="50%" valign="top"><strong>Operating System:<br /></strong><!--Operating System--></td>
-		<td width="50%" valign="top"><strong>Browser</strong>:<br /><!--Browser--></td>
-	</tr>
-	<tr>
-		<td width="50%" valign="top"><strong>URL</strong>:<br /><!--URL--></td>
-		<td width="50%" valign="top"><strong>Component</strong>:<br /><!--Component--></td>
-	</tr>
-	<!-- End Extra Fields Rendering (Evolvis Template) -->
-');
+    array($url, $component, $browser, $os, $relitem));
 
 
 /* Funktionsreferenz: https://evolvis.org/tracker/t_follow.php/1073 */
@@ -335,37 +294,10 @@
 		array('abgenommen', 2),
 		array('gelöscht', 3),
 	    )),
-    ), '
-	<!-- Start Extra Fields Rendering (Evolvis Template: Funktionsreferenz) -->
-	<!-- COLUMN NAMES MUST BE PRESERVED EXACTLY, INCLUDING CASE! -->
-	<tr>
-		<td width="50%" valign="top"><strong>Anforderungstyp:<br /></strong><!--Anforderungstyp--></td>
-		<td width="50%" valign="top"><strong>Spezifikationsreferenz</strong>:<br /><!--Spezifikationsreferenz--></td>
-	</tr><tr>
-		<td width="50%" valign="top"><strong>Kundenwert</strong>:<br /><!--Kundenwert--></td>
-		<td width="50%" valign="top"><strong>Zielversion:<br /></strong><!--Zielversion--></td>
-	</tr><tr>
-		<td width="50%" valign="top"><strong>Komplexität</strong>:<br /><!--Komplexität--></td>
-		<td width="50%" valign="top"><strong>Meilenstein:<br /></strong><!--Meilenstein--></td>
-	</tr><tr>
-		<td width="50%" valign="top"><strong>Kategorie/Komponente:<br /></strong><!--Kategorie/Komponente--></td>
-		<td width="50%" valign="top"><strong>Abschlußsprint:<br /></strong><!--Abschlußsprint--></td>
-	</tr><tr>
-		<td width="50%" valign="top"><strong>Funktionsgruppe:<br /></strong><!--Funktionsgruppe--></td>
-		<td width="50%" valign="top"><strong>Fortschritt:<br /></strong><!--Fortschritt--></td>
-	</tr><tr>
-		<td width="50%" valign="top"><table>
-			<tr><td valign="top"><strong>Status</strong>:</td><td><!--Status--></td></tr>
-			<tr><td valign="bottom"><strong>URL</strong>:</td><td><!--URL--></td></tr>
-		</table></td>
-		<td width="50%" valign="top"><strong>Freigabe:<br /></strong><!--Freigabe--></td>
-	</tr>
-	<!-- End Extra Fields Rendering (Evolvis Template) -->
-');
+	$relitem,
+    ));
 
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/common/widget/WidgetLayoutManager.class.php
===================================================================
--- branches/messer-51/src/common/widget/WidgetLayoutManager.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/widget/WidgetLayoutManager.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -115,7 +115,7 @@
 				}
 				break;
 			case self::OWNER_TYPE_GROUP:
-				if (UserManager::instance()->getCurrentUser()->is_super_user==true || forge_check_perm('project_admin', $owner_id, NULL)) { //Only project admin
+				if (forge_check_perm('project_admin', $owner_id, NULL)) { //Only project admin
 					$readonly = false;
 				}
 				break;

Modified: branches/messer-51/src/common/widget/Widget_MyArtifacts.class.php
===================================================================
--- branches/messer-51/src/common/widget/Widget_MyArtifacts.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/widget/Widget_MyArtifacts.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -96,7 +96,18 @@
 		$atf = new ArtifactsForUser(@UserManager::instance()->getCurrentUser());
 		$assigned = $atf->getAssignedArtifactsByGroup();
 		$submitted = $atf->getSubmittedArtifactsByGroup();
-		$all = $atf->getArtifactsFromSQLWithParams('SELECT * FROM artifact_vw av where (av.submitted_by=$1 OR  av.assigned_to=$1) AND av.status_id=1 ORDER BY av.group_artifact_id, av.priority DESC, av.artifact_id DESC',array( UserManager::instance()->getCurrentUser()->getID()));
+		$all = $atf->getArtifactsFromSQLwithParams('
+			SELECT av.*
+			FROM artifact_vw av, artifact_group_list agl
+			WHERE (av.submitted_by=$1 OR av.assigned_to=$1)
+			    AND av.status_id=1
+			    AND agl.group_artifact_id=av.group_artifact_id
+			ORDER BY
+			    agl.group_id,
+			    agl.name,
+			    av.priority DESC,
+			    av.artifact_id DESC',
+		    array(UserManager::instance()->getCurrentUser()->getID()));
 		if($this->_artifact_show == 'AS'){
 			$my_artifacts=$all;
 		}

Modified: branches/messer-51/src/common/widget/Widget_MyMonitoredForums.class.php
===================================================================
--- branches/messer-51/src/common/widget/Widget_MyMonitoredForums.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/widget/Widget_MyMonitoredForums.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -90,7 +90,7 @@
 
 		list($hide_now,$count_diff,$hide_url) = my_hide_url('forum',$group_id,$hide_item_id,$rows2,$hide_forum);
 
-		$html_hdr = ($j ? '<tr class="boxitem"><td colspan="2">' : '').
+		$html_hdr = ($j ? '' : '<tr class="boxitem"><td colspan="2">').
 			$hide_url.'<a href="/forum/?group_id='.$group_id.'">'.
 			db_result($result,$j,'group_name').'</a>    ';
 
@@ -112,7 +112,7 @@
 					<tr class="'. $class .'"><td width="99%">'.
 					'   - <a href="/forum/forum.php?forum_id='.$group_forum_id.'">'.
 					stripslashes(db_result($result2,$i,'forum_name')).'</a></td>'.
-					'<td align="center"><a href="/my/stop_monitor.php?forum_id='.$group_forum_id.
+					'<td align="center"><a href="/forum/monitor.php?forum_id='.$group_forum_id.'&group_id='.$group_id.'&stop=1' .
 					'" onclick="return confirm(\''._("Stop monitoring this Forum?").'\')">'.
 					'<img src="'.$GLOBALS['HTML']->imgroot.'ic/trash.png" height="16" width="16" '.
 					'border="0" alt="'._("Stop monitoring").'" /></a></td></tr>';

Modified: branches/messer-51/src/common/widget/Widget_MyTasks.class.php
===================================================================
--- branches/messer-51/src/common/widget/Widget_MyTasks.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/widget/Widget_MyTasks.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -36,16 +36,28 @@
         $this->content = '';
         $this->setOwner(user_getid(), WidgetLayoutManager::OWNER_TYPE_USER);
         $last_group=0;
-    
-        $sql = 'SELECT groups.group_id, groups.group_name, project_group_list.group_project_id, project_group_list.project_name '.
-            'FROM groups,project_group_list,project_task,project_assigned_to '.
-            'WHERE project_task.project_task_id=project_assigned_to.project_task_id '.
-            'AND project_assigned_to.assigned_to_id=$1'.
-            ' AND project_task.status_id IN (1, 4, 5, 6) AND project_group_list.group_id=groups.group_id '.
-            "AND project_group_list.is_public!='9' ".
-          'AND project_group_list.group_project_id=project_task.group_project_id GROUP BY groups.group_id, groups.group_name, project_group_list.project_name, project_group_list.group_project_id';
-    
-        $result=db_query_params($sql,array(user_getid()));
+
+        $result = db_query_params("
+	    SELECT
+		groups.group_id, groups.group_name,
+		project_group_list.group_project_id,
+		project_group_list.project_name
+	    FROM
+		groups, project_group_list, project_task, project_assigned_to
+	    WHERE
+		project_task.project_task_id=project_assigned_to.project_task_id
+	    AND project_assigned_to.assigned_to_id=$1
+	    AND project_task.status_id IN (1, 4, 5, 6)
+	    AND project_group_list.group_id=groups.group_id
+	    AND project_group_list.is_public!='9'
+	    AND project_group_list.group_project_id=project_task.group_project_id
+	    GROUP BY
+		groups.group_id, groups.group_name,
+		project_group_list.project_name,
+		project_group_list.group_project_id
+	    ORDER BY
+		groups.group_id, project_group_list.project_name
+	    ", array(user_getid()));
         $rows=db_numrows($result);
     
         if ($result && $rows >= 1) {
@@ -55,19 +67,33 @@
     
                 $group_id = db_result($result,$j,'group_id');
                 $group_project_id = db_result($result,$j,'group_project_id');
-        
-                $sql2 = 'SELECT project_task.project_task_id, project_task.priority, project_task.summary,project_task.percent_complete '.
-                    'FROM groups,project_group_list,project_task,project_assigned_to '.
-                    'WHERE project_task.project_task_id=project_assigned_to.project_task_id '.
-                    "AND project_assigned_to.assigned_to_id=$1 AND project_task.status_id IN (1, 4, 5, 6)  ".
-                    'AND project_group_list.group_id=groups.group_id '.
-                    "AND groups.group_id=$2 ".
-                    'AND project_group_list.group_project_id=project_task.group_project_id '.
-                    "AND project_group_list.is_public!='9' ".
-                   "AND project_group_list.group_project_id= $3 LIMIT 100";
-        
-        
-                $result2 = db_query_params($sql2,array(user_getid(),$group_id,$group_project_id));
+
+                $result2 = db_query_params("
+		    SELECT
+			project_task.project_task_id,
+			project_task.priority,
+			project_task.summary,
+			project_task.percent_complete
+		    FROM
+			groups, project_group_list, project_task,
+			project_assigned_to
+		    WHERE
+			project_task.project_task_id=project_assigned_to.project_task_id
+		    AND project_assigned_to.assigned_to_id=$1
+		    AND project_task.status_id IN (1, 4, 5, 6)
+		    AND project_group_list.group_id=groups.group_id
+		    AND groups.group_id=$2
+		    AND project_group_list.group_project_id=project_task.group_project_id
+		    AND project_group_list.is_public!='9'
+		    AND project_group_list.group_project_id=$3
+		    ORDER BY
+			project_task.priority DESC,
+			project_task.project_task_id DESC
+		    ", array(
+			user_getid(),
+			$group_id,
+			$group_project_id,
+		    ));
                 $rows2 = db_numrows($result2);
 
                 $vItemId = new Valid_UInt('hide_item_id');
@@ -100,12 +126,14 @@
                     if (!$hide_now) {
         
                     $html .= '
-                    <tr class="priority'.db_result($result2,$i,'priority').
-                        '"><td class="small"><a href="/pm/task.php/?func=detailtask&project_task_id='.
+			<tr class="' . ($i % 2 ? "bgcolor-white" : "bgcolor-grey") .
+			'"><td class="priority' . db_result($result2,$i,'priority') .
+			'">' . db_result($result2,$i,'priority') . '</td>
+			<td><a href="/pm/task.php/?func=detailtask&project_task_id='.
                         db_result($result2, $i, 'project_task_id').'&group_id='.
                         $group_id.'&group_project_id='.$group_project_id.
                         '">'. "[#" . db_result($result2, $i, 'project_task_id') . "] " . stripslashes(db_result($result2,$i,'summary')).'</a></td>'.
-                        '<td class="small">'.(db_result($result2,$i,'percent_complete')).'%</td></tr>';
+                        '<td>'.(db_result($result2,$i,'percent_complete')).'%</td></tr>';
         
                     }
                 }

Modified: branches/messer-51/src/common/widget/Widget_ProjectMembers.class.php
===================================================================
--- branches/messer-51/src/common/widget/Widget_ProjectMembers.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/common/widget/Widget_ProjectMembers.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -109,6 +109,8 @@
 				if ($u->getID() == user_getid()) {
 					$iam_member = true ;
 				}
+			}
+			if ($seen_member) {
 				echo "</div>\n"; // /#klappendevs
 			}
 		}

Modified: branches/messer-51/src/cronjobs/auth_unix.php
===================================================================
--- branches/messer-51/src/cronjobs/auth_unix.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/auth_unix.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -32,7 +32,7 @@
  * the /etc/passwd, /etc/shadow and /etc/group files
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'/include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/backup_site.php
===================================================================
--- branches/messer-51/src/cronjobs/backup_site.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/backup_site.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/calculate_user_metric.php
===================================================================
--- branches/messer-51/src/cronjobs/calculate_user_metric.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/calculate_user_metric.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -57,7 +57,7 @@
 		what we want - a list of the top users on the site.
 
 */
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/check_stale_tracker_items.php
===================================================================
--- branches/messer-51/src/cronjobs/check_stale_tracker_items.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/check_stale_tracker_items.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,10 @@
  * with FusionForge; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
+/* disabled, we do not have status 4 */
+exit(0);
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/create_scm_repos.php
===================================================================
--- branches/messer-51/src/cronjobs/create_scm_repos.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/create_scm_repos.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -4,6 +4,8 @@
  * FusionForge source control management
  *
  * Copyright 2009, Roland Mas
+ * Copyright © 2011
+ *	Thorsten Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -21,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
         
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 
@@ -46,6 +48,21 @@
 	plugin_hook ('scm_create_repo', $hook_params) ;
 }
 
+$res = db_query_params('SELECT * FROM scm_subrepos', array());
+if (!$res) {
+	$this->setError('Unable to get list of projects using SCM: '.db_error());
+	return false;
+}
+
+while ($data = db_fetch_array($res)) {
+	$hook_params = array(
+		'group_id' => $data['group_id'],
+		'newrepo' => $data['newrepo'],
+	    );
+	plugin_hook('scm_create_subrepo', $hook_params);
+	db_query_params('DELETE FROM scm_subrepos WHERE did=$1', array($data['did']));
+}
+
 $hook_params = array () ;
 plugin_hook ('scm_update_repolist', $hook_params) ;
 

Modified: branches/messer-51/src/cronjobs/daily_task_email.php
===================================================================
--- branches/messer-51/src/cronjobs/daily_task_email.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/daily_task_email.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -22,7 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'pm/ProjectTasksForUser.class.php';
 require_once $gfcommon.'include/cron_utils.php';

Modified: branches/messer-51/src/cronjobs/db_project_sums.php
===================================================================
--- branches/messer-51/src/cronjobs/db_project_sums.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/db_project_sums.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/db_stats_agg.php
===================================================================
--- branches/messer-51/src/cronjobs/db_stats_agg.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/db_stats_agg.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/db_trove_maint.php
===================================================================
--- branches/messer-51/src/cronjobs/db_trove_maint.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/db_trove_maint.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -20,7 +20,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/forum_gateway.php
===================================================================
--- branches/messer-51/src/cronjobs/forum_gateway.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/forum_gateway.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/Group.class.php';
 require_once $gfcommon.'include/MailParser.class.php';

Modified: branches/messer-51/src/cronjobs/gather_scm_stats.php
===================================================================
--- branches/messer-51/src/cronjobs/gather_scm_stats.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/gather_scm_stats.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
         
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/generate_scm_snapshots.php
===================================================================
--- branches/messer-51/src/cronjobs/generate_scm_snapshots.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/generate_scm_snapshots.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
         
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/homedirs.php
===================================================================
--- branches/messer-51/src/cronjobs/homedirs.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/homedirs.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -50,7 +50,7 @@
 	</IfModule>
 </VirtualHost> 
 */
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/mail/mailaliases.php
===================================================================
--- branches/messer-51/src/cronjobs/mail/mailaliases.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/mail/mailaliases.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -22,7 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/mail/mailing_lists_create.php
===================================================================
--- branches/messer-51/src/cronjobs/mail/mailing_lists_create.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/mail/mailing_lists_create.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,7 +7,7 @@
 //	The /var/lib/gforge/dumps/mailman-aliases file will then be read by the mailaliases.php file
 //
 
-require dirname(__FILE__).'/../../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/massmail.php
===================================================================
--- branches/messer-51/src/cronjobs/massmail.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/massmail.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -28,7 +28,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/project_cleanup.php
===================================================================
--- branches/messer-51/src/cronjobs/project_cleanup.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/project_cleanup.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/project_weekly_metric.php
===================================================================
--- branches/messer-51/src/cronjobs/project_weekly_metric.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/project_weekly_metric.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -20,7 +20,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/rating_stats.php
===================================================================
--- branches/messer-51/src/cronjobs/rating_stats.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/rating_stats.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/reporting_cron.php
===================================================================
--- branches/messer-51/src/cronjobs/reporting_cron.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/reporting_cron.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 require $gfcommon.'reporting/ReportSetup.class.php';

Modified: branches/messer-51/src/cronjobs/rotate_activity.php
===================================================================
--- branches/messer-51/src/cronjobs/rotate_activity.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/rotate_activity.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/site_stats.php
===================================================================
--- branches/messer-51/src/cronjobs/site_stats.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/site_stats.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/cronjobs/tracker_gateway.php
===================================================================
--- branches/messer-51/src/cronjobs/tracker_gateway.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/tracker_gateway.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -28,7 +28,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/Group.class.php';
 require_once $gfcommon.'include/MailParser.class.php';

Modified: branches/messer-51/src/cronjobs/update_docdata_dataword.php
===================================================================
--- branches/messer-51/src/cronjobs/update_docdata_dataword.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/update_docdata_dataword.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'docman/Parsedata.class.php';
 require_once $gfcommon.'docman/Document.class.php';

Modified: branches/messer-51/src/cronjobs/vacuum.php
===================================================================
--- branches/messer-51/src/cronjobs/vacuum.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/cronjobs/vacuum.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/db/20010304-4-artifact-convert-files.php
===================================================================
--- branches/messer-51/src/db/20010304-4-artifact-convert-files.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20010304-4-artifact-convert-files.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 #! /usr/bin/php
 <?php
 
-require_once (dirname(__FILE__)).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 db_begin();

Modified: branches/messer-51/src/db/20021213-2-doc_data-migrate.php
===================================================================
--- branches/messer-51/src/db/20021213-2-doc_data-migrate.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20021213-2-doc_data-migrate.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,7 +7,7 @@
  * Copyright 2002 (c) GFORGE LLC
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 @ini_set('memory_limit', '128M');

Modified: branches/messer-51/src/db/20040826_migrateforum.php
===================================================================
--- branches/messer-51/src/db/20040826_migrateforum.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20040826_migrateforum.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 //
@@ -42,7 +42,7 @@
 for ($i=0; $i<db_numrows($res); $i++) {
 
 	$res2 = db_query_params ('UPDATE forum_group_list SET forum_name=$1 WHERE group_forum_id=$2',
-				 array (ereg_replace('[^_\.0-9a-z-]','-', strtolower(db_result($res,$i,'forum_name'))),
+				 array (preg_replace('/[^_\.0-9a-z-]/','-', strtolower(db_result($res,$i,'forum_name'))),
 					db_result($res,$i,'group_forum_id'))) ;
 	if (!$res2) {
 		echo db_error();

Modified: branches/messer-51/src/db/20040826_migraterbac.php
===================================================================
--- branches/messer-51/src/db/20040826_migraterbac.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20040826_migraterbac.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 //system library

Modified: branches/messer-51/src/db/20041211-syncmail.php
===================================================================
--- branches/messer-51/src/db/20041211-syncmail.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20041211-syncmail.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 #! /usr/bin/php
 <?php
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'mail/MailingList.class.php';
 require_once $gfcommon.'include/Group.class.php';

Modified: branches/messer-51/src/db/20041222-1-delete-task-artifact.php
===================================================================
--- branches/messer-51/src/db/20041222-1-delete-task-artifact.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20041222-1-delete-task-artifact.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 #! /usr/bin/php
 <?php
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'pm/ProjectTask.class.php';
 

Modified: branches/messer-51/src/db/20050127-frs-reorg.php
===================================================================
--- branches/messer-51/src/db/20050127-frs-reorg.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20050127-frs-reorg.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -22,7 +22,7 @@
  * with this program; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'frs/FRSFile.class.php';
 require_once $gfcommon.'frs/FRSRelease.class.php';

Modified: branches/messer-51/src/db/20050325-3.php
===================================================================
--- branches/messer-51/src/db/20050325-3.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20050325-3.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'tracker/ArtifactExtraField.class.php';
 require_once $gfcommon.'tracker/ArtifactExtraFieldElement.class.php';

Modified: branches/messer-51/src/db/20050617.php
===================================================================
--- branches/messer-51/src/db/20050617.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20050617.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,7 +23,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 // these names can't be assigned to an extra field's alias because they are already

Modified: branches/messer-51/src/db/20050804-2.php
===================================================================
--- branches/messer-51/src/db/20050804-2.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20050804-2.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 
 $res = db_query_params('SELECT docid,filesize FROM doc_data',

Modified: branches/messer-51/src/db/20090507-install_workflow.php
===================================================================
--- branches/messer-51/src/db/20090507-install_workflow.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20090507-install_workflow.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 <?php
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'tracker/Artifact.class.php';
 require_once $gfcommon.'tracker/ArtifactFile.class.php';

Modified: branches/messer-51/src/db/20100518-pfo-rbac.sql
===================================================================
--- branches/messer-51/src/db/20100518-pfo-rbac.sql	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20100518-pfo-rbac.sql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -191,7 +191,6 @@
 			   PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 1) ;
 			END IF ;
 
-			PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 1) ;
 			PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 1) ;
 		END LOOP ;
 		
@@ -413,7 +412,7 @@
 
 	INSERT INTO pfo_role (SELECT nextval ('pfo_role_seq'), role_name, 1, group_id, false, role_id FROM role) ;
 
-	INSERT INTO pfo_user_role (SELECT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id) ;
+	INSERT INTO pfo_user_role (SELECT DISTINCT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id) ;
 
 	PERFORM migrate_rbac_permissions_to_pfo_rbac () ;
 	PERFORM migrate_role_observer_to_pfo_rbac () ;

Modified: branches/messer-51/src/db/20100926-pfo-rbac.sql
===================================================================
--- branches/messer-51/src/db/20100926-pfo-rbac.sql	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20100926-pfo-rbac.sql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -251,7 +251,7 @@
 
 	INSERT INTO pfo_role (SELECT nextval ('pfo_role_seq'), role_name, 1, group_id, false, role_id FROM role) ;
 
-	INSERT INTO pfo_user_role (SELECT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id AND r.old_role_id != 1) ;
+	INSERT INTO pfo_user_role (SELECT DISTINCT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id AND r.old_role_id != 1) ;
 
 	PERFORM migrate_rbac_permissions_to_pfo_rbac () ;
 	PERFORM migrate_role_observer_to_pfo_rbac () ;

Modified: branches/messer-51/src/db/20100927-pfo-rbac.sql
===================================================================
--- branches/messer-51/src/db/20100927-pfo-rbac.sql	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/20100927-pfo-rbac.sql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -200,38 +200,55 @@
 		   PERFORM insert_pfo_role_setting (2, 'scm', g.group_id, 1) ;
 		END IF ;
 
-		FOR t IN SELECT * FROM artifact_group_list WHERE group_id = g.group_id AND is_public = 1
+		FOR t IN SELECT * FROM artifact_group_list WHERE group_id = g.group_id
 		LOOP
-			IF t.allow_anon = 1 THEN
-			   PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 1) ;
+			IF t.is_public = 1 THEN
+			   IF t.allow_anon = 1 THEN
+			      PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 1) ;
+			   ELSE
+			      PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 0) ;
+			   END IF ;
+
+			   PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 1) ;
+			ELSE
+			   PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 0) ;
 			END IF ;
-
-			PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 1) ;
 		END LOOP ;
 		
-		FOR p IN SELECT * FROM project_group_list WHERE group_id = g.group_id AND is_public = 1
+		FOR p IN SELECT * FROM project_group_list WHERE group_id = g.group_id
 		LOOP
-			PERFORM insert_pfo_role_setting (1, 'pm', p.group_project_id, 1) ;
-			PERFORM insert_pfo_role_setting (2, 'pm', p.group_project_id, 1) ;
+			IF p.is_public = 1 THEN
+			   PERFORM insert_pfo_role_setting (1, 'pm', p.group_project_id, 1) ;
+			   PERFORM insert_pfo_role_setting (2, 'pm', p.group_project_id, 1) ;
+			ELSE
+			   PERFORM insert_pfo_role_setting (1, 'pm', p.group_project_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'pm', p.group_project_id, 0) ;
+			END IF ;
 		END LOOP ;
 		
 		FOR f IN SELECT * FROM forum_group_list WHERE group_id = g.group_id AND is_public = 1
 		LOOP
-			IF f.allow_anonymous = 1 THEN
+			IF f.is_public = 1 THEN
+			   IF f.allow_anonymous = 1 THEN
+			      IF f.moderation_level = 0 THEN
+			         PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 3) ;
+			      ELSE
+			         PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 2) ;
+			      END IF ;
+			   ELSE
+			      PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 1) ;
+			   END IF ;
+			   
 			   IF f.moderation_level = 0 THEN
-			      PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 3) ;
+			      PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 3) ;
 			   ELSE
-			      PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 2) ;
+			      PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 2) ;
 			   END IF ;
 			ELSE
-			   PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 1) ;
+			   PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 0) ;
 			END IF ;
-
-			IF f.moderation_level = 0 THEN
-			   PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 3) ;
-			ELSE
-			   PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 2) ;
-			END IF ;
 		END LOOP ;
 		
 	END LOOP ;
@@ -267,7 +284,7 @@
 
 	INSERT INTO pfo_role (SELECT nextval ('pfo_role_seq'), role_name, 1, group_id, false, role_id FROM role) ;
 
-	INSERT INTO pfo_user_role (SELECT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id AND r.old_role_id != 1) ;
+	INSERT INTO pfo_user_role (SELECT DISTINCT ug.user_id, r.role_id FROM user_group ug, pfo_role r WHERE ug.role_id = r.old_role_id AND r.old_role_id != 1) ;
 
 	PERFORM migrate_rbac_permissions_to_pfo_rbac () ;
 	PERFORM migrate_role_observer_to_pfo_rbac () ;

Copied: branches/messer-51/src/db/20120321-add-news-in-activity_vw.sql (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/db/20120321-add-news-in-activity_vw.sql)
===================================================================
--- branches/messer-51/src/db/20120321-add-news-in-activity_vw.sql	                        (rev 0)
+++ branches/messer-51/src/db/20120321-add-news-in-activity_vw.sql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,29 @@
+CREATE OR REPLACE VIEW activity_vw AS
+SELECT
+agl.group_id, 'trackeropen'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.open_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id),
+users u WHERE u.user_id=a.submitted_by
+UNION
+SELECT
+agl.group_id, 'trackerclose'::text AS section, agl.group_artifact_id AS ref_id,
+a.artifact_id as subref_id, a.summary as description, a.close_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM artifact_group_list agl JOIN artifact a using (group_artifact_id), users u WHERE u.user_id=a.assigned_to
+--actually should join against
+AND a.close_date > 0
+UNION
+SELECT
+frsp.group_id, 'frsrelease'::text as section,frsp.package_id as ref_id,
+frsr.release_id as subref_id, frsr.name AS description, frsr.release_date AS activity_date,
+u.user_id, u.user_name, u.realname FROM frs_package frsp JOIN frs_release frsr USING (package_id), users u WHERE
+u.user_id=frsr.released_by
+UNION
+SELECT
+fgl.group_id, 'forumpost'::text as section,fgl.group_forum_id as ref_id, forum.msg_id
+as subref_id, forum.subject AS description, forum.post_date AS activity_date, u.user_id,
+u.user_name, u.realname FROM forum_group_list fgl JOIN forum USING (group_forum_id), users u WHERE
+u.user_id=forum.posted_by
+UNION
+SELECT news_bytes.group_id,'news' AS section,news_bytes.id AS ref_id,news_bytes.forum_id AS subref_id,
+news_bytes.summary AS description, news_bytes.post_date AS activity_date, u.user_id, u.user_name, u.realname
+FROM news_bytes, users u WHERE u.user_id = news_bytes.submitted_by;

Copied: branches/messer-51/src/db/20120329-pfo-rbac.sql (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/db/20120329-pfo-rbac.sql)
===================================================================
--- branches/messer-51/src/db/20120329-pfo-rbac.sql	                        (rev 0)
+++ branches/messer-51/src/db/20120329-pfo-rbac.sql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,87 @@
+-- this is a copy of part of 20100927-pfo-rbac.sql
+-- the function fixed in FF SVN r15238 only, to ensure the
+-- fixed function is available on already upgraded systems
+
+CREATE OR REPLACE FUNCTION migrate_role_observer_to_pfo_rbac () RETURNS void AS $$
+DECLARE
+	g groups%ROWTYPE ;
+	t artifact_group_list%ROWTYPE ;
+	f forum_group_list%ROWTYPE ;
+	p project_group_list%ROWTYPE ;
+	need_loggedin boolean := false ;
+BEGIN
+	FOR g IN SELECT * FROM groups WHERE is_public = 1
+	LOOP
+		INSERT INTO role_project_refs VALUES (1, g.group_id) ;
+		INSERT INTO role_project_refs VALUES (2, g.group_id) ;
+		PERFORM insert_pfo_role_setting (1, 'project_read', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (1, 'new_tracker', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (1, 'new_pm', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (1, 'new_forum', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (1, 'frs', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (2, 'project_read', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (2, 'new_tracker', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (2, 'new_pm', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (2, 'new_forum', g.group_id, 1) ;
+		PERFORM insert_pfo_role_setting (2, 'frs', g.group_id, 1) ;
+
+		IF g.enable_anonscm = 1 THEN
+		   PERFORM insert_pfo_role_setting (1, 'scm', g.group_id, 1) ;
+		   PERFORM insert_pfo_role_setting (2, 'scm', g.group_id, 1) ;
+		END IF ;
+
+		FOR t IN SELECT * FROM artifact_group_list WHERE group_id = g.group_id
+		LOOP
+			IF t.is_public = 1 THEN
+			   IF t.allow_anon = 1 THEN
+			      PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 1) ;
+			   ELSE
+			      PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 0) ;
+			   END IF ;
+
+			   PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 1) ;
+			ELSE
+			   PERFORM insert_pfo_role_setting (1, 'tracker', t.group_artifact_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'tracker', t.group_artifact_id, 0) ;
+			END IF ;
+		END LOOP ;
+		
+		FOR p IN SELECT * FROM project_group_list WHERE group_id = g.group_id
+		LOOP
+			IF p.is_public = 1 THEN
+			   PERFORM insert_pfo_role_setting (1, 'pm', p.group_project_id, 1) ;
+			   PERFORM insert_pfo_role_setting (2, 'pm', p.group_project_id, 1) ;
+			ELSE
+			   PERFORM insert_pfo_role_setting (1, 'pm', p.group_project_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'pm', p.group_project_id, 0) ;
+			END IF ;
+		END LOOP ;
+		
+		FOR f IN SELECT * FROM forum_group_list WHERE group_id = g.group_id AND is_public = 1
+		LOOP
+			IF f.is_public = 1 THEN
+			   IF f.allow_anonymous = 1 THEN
+			      IF f.moderation_level = 0 THEN
+			         PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 3) ;
+			      ELSE
+			         PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 2) ;
+			      END IF ;
+			   ELSE
+			      PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 1) ;
+			   END IF ;
+			   
+			   IF f.moderation_level = 0 THEN
+			      PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 3) ;
+			   ELSE
+			      PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 2) ;
+			   END IF ;
+			ELSE
+			   PERFORM insert_pfo_role_setting (1, 'forum', f.group_forum_id, 0) ;
+			   PERFORM insert_pfo_role_setting (2, 'forum', f.group_forum_id, 0) ;
+			END IF ;
+		END LOOP ;
+		
+	END LOOP ;
+
+END ;
+$$ LANGUAGE plpgsql ;

Modified: branches/messer-51/src/db/startpoint.php
===================================================================
--- branches/messer-51/src/db/startpoint.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/startpoint.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 #! /usr/bin/php
 <?php
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 if (!$gfconn) {

Modified: branches/messer-51/src/db/upgrade-db.php
===================================================================
--- branches/messer-51/src/db/upgrade-db.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/db/upgrade-db.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,7 +5,7 @@
 // upgrade-db.php all      => Upgrade the main database and active plugins.
 // upgrade-db.php <plugin> => Upgrade only the database of the given active plugin.
 
-require_once dirname(__FILE__).'/../www/env.inc.php';
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 /** 

Modified: branches/messer-51/src/deb-specific/create-mailing-lists.pl
===================================================================
--- branches/messer-51/src/deb-specific/create-mailing-lists.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/create-mailing-lists.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -17,7 +17,6 @@
 sub debug ( $ ) ;
 
 require ("/usr/share/gforge/lib/include.pl") ; # Include all the predefined functions 
-require ("/etc/gforge/local.pl") ;
 
 &db_connect ;
 
@@ -71,6 +70,17 @@
 	open CONFIG, ">>$tmp" ;
 	print CONFIG "description = \"$description\"\n" ;
 	print CONFIG "host_name = '$sys_lists_host'\n" ;
+	if ($listname =~ /-commits$/) {
+		# Set default maximum message size to unlimited
+		# for commit lists
+		print CONFIG "max_message_size = 0\n";
+		# Accept commits from svn from everyone by default
+		print CONFIG "accept_these_nonmembers = ['^.+\@$sys_default_domain']\n";
+	}
+	if ($listname =~ /-discuss$/) {
+		# Accept mails from Tasks and Tracker areas by default
+		print CONFIG "accept_these_nonmembers = ['^.+\@$sys_default_domain']\n";
+	}
 	print CONFIG "archive = True\n" ;
 	if (!$is_public) {
 	    print CONFIG "archive_private = True\n" ;

Modified: branches/messer-51/src/deb-specific/db-upgrade.pl
===================================================================
--- branches/messer-51/src/deb-specific/db-upgrade.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/db-upgrade.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,6 @@
     $server_admin $domain_name $newsadmin_groupid $statsadmin_groupid
     $libdir $sqldir/ ;
 
-require ("/etc/gforge/local.pl") ; 
 $libdir="/usr/share/gforge/lib";
 $sqldir="/usr/share/gforge/db";
 require ("$libdir/sqlparser.pm") ; # Our magic SQL parser
@@ -117,8 +116,6 @@
 	  if (&is_lesser ($version, $target)) {
 	      &debug ("Adding local data.") ;
 
-	      do "/etc/gforge/local.pl" or die "Cannot read /etc/gforge/local.pl" ;
-
 	      my ($login, $md5pwd, $unixpwd, $email, $noreplymail, $date) ;
 
 	      $login = 'admin' ;
@@ -2481,6 +2478,37 @@
 	$dbh->commit();
     }
 
+    $version = &get_db_version;
+    $target = "5.1-11+evolvis-8";
+    if (&is_lesser($version, $target)) {
+	&debug("Redescribe Site Admin group");
+	@reqlist = (
+	    q{
+		UPDATE groups
+		    SET
+			short_description='Site Admin permissions now use the global "Forge Administrators" role instead of membership in this group!',
+			register_purpose='Do not forget to run /usr/share/gforge/bin/normalize_roles.php as root after major upgrades!'
+		    WHERE unix_group_name='siteadmin';
+	    },
+	    );
+
+	foreach my $s (@reqlist) {
+	    $query = $s;
+	    # debug $query;
+	    $sth = $dbh->prepare($query);
+	    $sth->execute();
+	    $sth->finish();
+	}
+	@reqlist = ();
+
+	&update_db_version($target);
+	&debug("Committing.");
+	$dbh->commit();
+    }
+
+    &update_with_sql("20120321-add-news-in-activity_vw","5.1-12");
+    &update_with_sql("20120329-pfo-rbac", "5.1-12+ev1");
+
     ########################### INSERT HERE #################################
 
     # There should be a commit at the end of every block above.
@@ -2581,6 +2609,7 @@
 sub update_with_sql ( $$ ) {
     my $sqlfile = shift or die "Not enough arguments" ;
     my $target = shift or die "Not enough arguments" ;
+    $sqlfile =~ s/\.sql$//;
     my $version = &get_db_version ;
     if (&is_lesser ($version, $target)) {
         &debug ("Upgrading database with $sqlfile.sql") ;

Modified: branches/messer-51/src/deb-specific/fileforge.pl
===================================================================
--- branches/messer-51/src/deb-specific/fileforge.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/fileforge.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -11,7 +11,7 @@
 delete @ENV{qw(IFS CDPATH ENV BASH_ENV PATH)};
 
 # Check access to secret
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 unless ( (defined $sys_dbpasswd)
 	 and (defined $ENV{'sys_dbpasswd'})
 	 and ($sys_dbpasswd eq $ENV{'sys_dbpasswd'}) ) {

Modified: branches/messer-51/src/deb-specific/fix-mailing-lists.pl
===================================================================
--- branches/messer-51/src/deb-specific/fix-mailing-lists.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/fix-mailing-lists.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -14,7 +14,6 @@
 
 sub debug ( $ ) ;
 
-require ("/etc/gforge/local.pl") ;
 require("/usr/share/gforge/lib/include.pl");  # Include all the predefined functions
 
 &db_connect ;

Modified: branches/messer-51/src/deb-specific/install-chroot.sh
===================================================================
--- branches/messer-51/src/deb-specific/install-chroot.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/install-chroot.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -16,7 +16,7 @@
 
 case $1 in
 configure)
-	echo "Installing chroot environnement at $CHROOTDIR"
+	echo "Installing chroot environment at $CHROOTDIR"
 	test -d "$CHROOTDIR" || install -d -m 755 "$CHROOTDIR"
 	test -d "$CHROOTDIR" || exit 1
 	for dir in \
@@ -78,7 +78,7 @@
 		fi
 	done \
 	    | sort -u \
-	    | cpio --quiet -pdumVLB "$CHROOTDIR/"
+	    | paxcpio -pdumVLB "$CHROOTDIR/"
 
 	for i in \
 	    /etc/nss-pgsql-root.conf \
@@ -135,8 +135,8 @@
 		shadow:		files pgsql
 FIN
 	# Copy miscellaneous files
-	[ -d /etc/ssh ] && find /etc/ssh | cpio --quiet -pdumLB "$CHROOTDIR/"
-	[ -d /etc/ssh-nonfree ] && find /etc/ssh-nonfree | cpio --quiet -pdumLB "$CHROOTDIR/"
+	[ -d /etc/ssh ] && find /etc/ssh | paxcpio -pdumLB "$CHROOTDIR/"
+	[ -d /etc/ssh-nonfree ] && find /etc/ssh-nonfree | paxcpio -pdumLB "$CHROOTDIR/"
 
 #	# Libnss-ldap related stuffs
 #	for binary in \
@@ -147,7 +147,7 @@
 #	  fi
 #	done \
 #	    | sort -u \
-#	    | cpio --quiet -pdumVLB $CHROOTDIR
+#	    | paxcpio -pdumVLB $CHROOTDIR
 #
 #	#cp -r /etc/ldap $CHROOTDIR/etc
 #	[ -e /etc/libnss-ldap.conf ] && cp /etc/libnss-ldap.conf $CHROOTDIR/etc


Property changes on: branches/messer-51/src/deb-specific/install-chroot.sh
___________________________________________________________________
Deleted: svn:executable
   - *

Modified: branches/messer-51/src/deb-specific/install-db.sh
===================================================================
--- branches/messer-51/src/deb-specific/install-db.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/install-db.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -116,7 +116,7 @@
 	rm -f $cur
 	
 	cur=$(mktemp /tmp/$pattern)
-	perl -e "open F, \"${pg_hba_dir}/pg_hba.conf.gforge-new\" or die \$!; undef \$/; \$l=<F>; \$l=~ s/^### BEGIN GFORGE BLOCK -- DO NOT EDIT.*### END GFORGE BLOCK -- DO NOT EDIT\$/### BEGIN GFORGE BLOCK -- DO NOT EDIT\n# user which is used by libnss to access the DB (see \/etc\/nss-pgsql.conf)\nlocal $db_name ${db_user}_nss trust\nlocal $db_name list ident\nlocal $db_name ${db_user}_mta md5\n### END GFORGE BLOCK -- DO NOT EDIT/ms; print \$l;" > $cur
+	perl -e "open F, \"${pg_hba_dir}/pg_hba.conf.gforge-new\" or die \$!; undef \$/; \$l=<F>; \$l=~ s/^### BEGIN GFORGE BLOCK -- DO NOT EDIT.*### END GFORGE BLOCK -- DO NOT EDIT\$/### BEGIN GFORGE BLOCK -- DO NOT EDIT\n# user which is used by libnss to access the DB (see \/etc\/nss-pgsql.conf)\nlocal $db_name ${db_user} md5\nlocal $db_name ${db_user}_nss trust\nlocal $db_name list ident\nlocal $db_name ${db_user}_mta md5\n### END GFORGE BLOCK -- DO NOT EDIT/ms; print \$l;" > $cur
 	cat $cur > ${pg_hba_dir}/pg_hba.conf.gforge-new
 	rm -f $cur
 	

Modified: branches/messer-51/src/deb-specific/install-exim.sh
===================================================================
--- branches/messer-51/src/deb-specific/install-exim.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/install-exim.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -14,8 +14,8 @@
     configure-files)
 	cp -a /etc/aliases /etc/aliases.gforge-new
 	# Redirect "noreply" mail to the bit bucket (if need be)
-	noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-	if [ "$noreply_to_bitbucket" = "true" ] ; then
+	noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+	if [ "$noreply_to_bitbucket" != "no" ] ; then
 	    if ! grep -q "^noreply:" /etc/aliases.gforge-new ; then
 		echo "### Next line inserted by GForge install" >> /etc/aliases.gforge-new
 		echo "noreply: /dev/null" >> /etc/aliases.gforge-new
@@ -23,7 +23,7 @@
 	fi
 
 	# Redirect "gforge" mail to the site admin
-	server_admin=$(perl -e'require "/etc/gforge/local.pl"; print "$server_admin\n";')
+	server_admin=$(/usr/share/gforge/bin/forge_get_config admin_email)
 	if ! grep -q "^gforge:" /etc/aliases.gforge-new ; then
 	    echo "### Next line inserted by GForge install" >> /etc/aliases.gforge-new
 	    echo "gforge: $server_admin" >> /etc/aliases.gforge-new
@@ -35,7 +35,7 @@
 	tmp1=$(mktemp /tmp/$pattern)
 	# First, get the list of local domains right
 	perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 $seen_sf_domains = 0 ;
 while (($l = <>) !~ /^\s*local_domains/) {
   print $l;
@@ -51,7 +51,7 @@
 	tmp2=$(mktemp /tmp/$pattern)
 	# Second, insinuate our forwarding rules in the directors section
 	perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 
 $sf_block = "# BEGIN SOURCEFORGE BLOCK -- DO NOT EDIT #
 # You may move this block around to accomodate your local needs as long as you
@@ -210,8 +210,8 @@
 	tmp1=$(mktemp /tmp/$pattern)
 	cp -a /etc/aliases /etc/aliases.gforge-new
 	# Redirect "noreply" mail to the bit bucket (if need be)
-	noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-	if [ "$noreply_to_bitbucket" = "true" ] ; then
+	noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+	if [ "$noreply_to_bitbucket" != "no" ] ; then
 	    grep -v "^noreply:" /etc/aliases.gforge-new > $tmp1
 	    cat $tmp1 > /etc/aliases.gforge-new
 	fi

Modified: branches/messer-51/src/deb-specific/install-exim4.sh
===================================================================
--- branches/messer-51/src/deb-specific/install-exim4.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/install-exim4.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -40,8 +40,8 @@
     cp -a $cfg_aliases $cfg_aliases_gforge
 
     # Redirect "noreply" mail to the bit bucket (if need be)
-    noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-    if [ "$noreply_to_bitbucket" = "true" ] ; then
+    noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+    if [ "$noreply_to_bitbucket" != "no" ] ; then
       if ! grep -q "^noreply:" $cfg_aliases_gforge; then
 	echo "### Next line inserted by GForge install" >> $cfg_aliases_gforge
 	echo "noreply: :blackhole:" >> $cfg_aliases_gforge
@@ -49,7 +49,7 @@
     fi
 
     # Redirect "gforge" mail to the site admin
-    server_admin=$(perl -e'require "/etc/gforge/local.pl"; print "$server_admin\n";')
+    server_admin=$(/usr/share/gforge/bin/forge_get_config admin_email)
     if ! grep -q "^gforge:" $cfg_aliases_gforge; then
       echo "### Next line inserted by GForge install" >> $cfg_aliases_gforge
       echo "gforge: $server_admin" >> $cfg_aliases_gforge
@@ -67,7 +67,7 @@
       cp -a $m $cfg_gforge_main
 
       perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 $seen_gf_domains = 0;
 while (($l = <>) !~ /^\s*domainlist\s*local_domains/) {
   print $l;
@@ -89,7 +89,7 @@
     # Second, insinuate our forwarding rules in the directors section
 
     perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 
 my $gf_block = "# BEGIN GFORGE BLOCK -- DO NOT EDIT #
 # You may move this block around to accomodate your local needs as long as you
@@ -252,8 +252,8 @@
 
     grep -v "^gforge:" $cfg_aliases_gforge > $tmp1
     # Redirect "noreply" mail to the bit bucket (if need be)
-    noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-    if [ "$noreply_to_bitbucket" = "true" ] ; then
+    noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+    if [ "$noreply_to_bitbucket" != "no" ] ; then
       grep -v "^noreply:" $tmp1 > $cfg_aliases_gforge
     else
       cat $tmp1 > $cfg_aliases_gforge

Modified: branches/messer-51/src/deb-specific/install-postfix.sh
===================================================================
--- branches/messer-51/src/deb-specific/install-postfix.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/install-postfix.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -16,8 +16,8 @@
     configure-files)
 	cp -a /etc/aliases /etc/aliases.gforge-new
 	# Redirect "noreply" mail to the bit bucket (if need be)
-	noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-	if [ "$noreply_to_bitbucket" = "true" ] ; then
+	noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+	if [ "$noreply_to_bitbucket" != "no" ] ; then
 	    if ! grep -q "^noreply:" /etc/aliases.gforge-new ; then
 		echo "### Next line inserted by GForge install" >> /etc/aliases.gforge-new
 		echo "noreply: /dev/null" >> /etc/aliases.gforge-new
@@ -25,7 +25,7 @@
 	fi
 
 	# Redirect "gforge" mail to the site admin
-	server_admin=$(perl -e'require "/etc/gforge/local.pl"; print "$server_admin\n";')
+	server_admin=$(/usr/share/gforge/bin/forge_get_config admin_email)
 	if ! grep -q "^gforge:" /etc/aliases.gforge-new ; then
 	    echo "### Next line inserted by GForge install" >> /etc/aliases.gforge-new
 	    echo "gforge: $server_admin" >> /etc/aliases.gforge-new
@@ -41,10 +41,10 @@
 	tmp1=$(mktemp /tmp/$pattern)
 	# First, get the list of local domains right - add gforge domains to 'mydestination'
 	perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 my $l;
 while ($l = <>) { 
-  last if l =~ /^\s*mydestination/ ;
+  last if $l =~ /^\s*mydestination/ ;
   print $l;
 };
 chomp $l;
@@ -58,7 +58,7 @@
 ' < /etc/postfix/main.cf.gforge-new > $tmp1
 	grep -q '^[[:space:]]*relay_domains' $tmp1 || echo 'relay_domains = $mydestination' >>$tmp1
 	perl -i -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 my $l;
 while (($l = <>) !~ /^\s*relay_domains/) { print $l; };
 chomp $l;
@@ -67,15 +67,24 @@
 while ($l = <>) { print $l; };
 ' $tmp1
 	tmp2=$(mktemp /tmp/$pattern)
+	# reverse this logic once past lenny→squeeze migration
+	postgrey_port=60000
+	if fgrep 10023 /etc/default/postgrey >/dev/null 2>&1; then
+		fgrep 60000 /etc/default/postgrey >/dev/null 2>&1 || \
+		    postgrey_port=10023
+	fi
+	# get the default values
+	def_smtpd_recipient_restrictions=$(postconf -d smtpd_recipient_restrictions)
 	# Second, insinuate our forwarding rules in the directors section
 	perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 
 my $gf_block;
 my $l;
 my $seen_gf_block;
 my $seen_alias_maps;
 my $seen_transport_maps;
+my $seen_smtpd_recipient_restrictions;
 
 $gf_block = qq{### BEGIN GFORGE BLOCK -- DO NOT EDIT ###
 # You may move this block around to accomodate your local needs as long as you
@@ -93,6 +102,7 @@
 $seen_gf_block = 0;
 $seen_alias_maps = 0;
 $seen_transport_maps = 0;
+$seen_smtpd_recipient_restrictions = 0;
 while ($l = <>) {
 	if ($l =~ /^\s*virtual_alias_maps/) {
 		chomp $l;
@@ -123,6 +133,12 @@
                 $l =~ s/pgsql:pgsql_gforge_users, // ;
                 $l =~ s/pgsql:pgsql_gforge_lists, // ;
                 print "$l\n" ;
+	} elsif ($l =~ /^\s*smtpd_recipient_restrictions/) {
+		chomp $l;
+		# enable greylisting if not yet there (or commented out)
+		$l .= ", check_policy_service inet:127.0.0.1:'$postgrey_port'" unless ($l =~ /check_policy_service/);
+		print "$l\n";
+		$seen_smtpd_recipient_restrictions = 1;
 	} else {
                 print $l;
         }
@@ -140,6 +156,11 @@
 	print "### GFORGE ADDITION - The following transport_maps line can be moved and this line removed ###\n";
 	print "transport_maps = hash:/var/lib/gforge/etc/postfix-transport\n";
 };
+if ($seen_smtpd_recipient_restrictions == 0) {
+	$l = "'"$def_smtpd_recipient_restrictions"'";
+	$l .= ", check_policy_service inet:127.0.0.1:60000" unless ($l =~ /check_policy_service/);
+	print "$l\n";
+}
 ' < $tmp1 > $tmp2
 	rm $tmp1
 	cat $tmp2 > /etc/postfix/main.cf.gforge-new
@@ -148,7 +169,7 @@
     
     configure)
 	[ -x /usr/bin/newaliases ] && newaliases
-	perl -e'require "/etc/gforge/local.pl"; print "$sys_lists_host mailman:\n";' > /var/lib/gforge/etc/postfix-transport
+	echo "$(/usr/share/gforge/bin/forge_get_config lists_host) mailman:" > /var/lib/gforge/etc/postfix-transport
 	postmap /var/lib/gforge/etc/postfix-transport	
 	;;
     
@@ -157,8 +178,8 @@
 	tmp1=$(mktemp /tmp/$pattern)
 	cp -a /etc/aliases /etc/aliases.gforge-new
 	# Redirect "noreply" mail to the bit bucket (if need be)
-	noreply_to_bitbucket=$(perl -e'require "/etc/gforge/local.pl"; print "$noreply_to_bitbucket\n";')
-	if [ "$noreply_to_bitbucket" = "true" ] ; then
+	noreply_to_bitbucket=$(/usr/share/gforge/bin/forge_get_config noreply_to_bitbucket)
+	if [ "$noreply_to_bitbucket" != "no" ] ; then
 	    grep -v "^noreply:" /etc/aliases.gforge-new > $tmp1
 	    cat $tmp1 > /etc/aliases.gforge-new
 	fi
@@ -171,9 +192,9 @@
 	tmp1=$(mktemp /tmp/$pattern)
 	# First, replace the list of local domains
 	perl -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 while ($l = <>) { 
-  last if l =~ /^\s*mydestination/ ;
+  last if $l =~ /^\s*mydestination/ ;
   print $l;
 };
 chomp $l ;
@@ -188,7 +209,7 @@
 while ($l = <>) { print $l; };
 ' < /etc/postfix/main.cf.gforge-new > $tmp1
 	grep -q '^[[:space:]]*relay_domains' $tmp1 && perl -i -e '
-require ("/etc/gforge/local.pl") ;
+require ("/usr/share/gforge/lib/include.pl") ;
 while (($l = <>) !~ /^\s*relay_domains/) {
   print $l;
 };

Modified: branches/messer-51/src/deb-specific/prepare-vhosts-file.pl
===================================================================
--- branches/messer-51/src/deb-specific/prepare-vhosts-file.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/prepare-vhosts-file.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,7 +5,6 @@
 use strict ;
 use vars qw/$dbh $ifile $ofile @ilist %hash $key $val $cur $line $dbh $sys_dbname $sys_dbuser $sys_dbpasswd $token/ ;
 
-require("/etc/gforge/local.pl"); 
 require ("/usr/share/gforge/lib/include.pl") ; 
 
 %hash = () ;

Modified: branches/messer-51/src/deb-specific/update-user-group-ssh.sh
===================================================================
--- branches/messer-51/src/deb-specific/update-user-group-ssh.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/deb-specific/update-user-group-ssh.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -17,7 +17,7 @@
 	(
 		echo '# THIS FILE IS GENERATED, DO NOT MODIFY'
 		php -r '
-			require_once "/usr/share/gforge/www/env.inc.php";
+			require_once "/usr/share/gforge/common/include/env.inc.php";
 			require_once $gfcommon."include/pre.php";
 
 			$mapping = array(

Modified: branches/messer-51/src/debian/README.Debian.tmpl
===================================================================
--- branches/messer-51/src/debian/README.Debian.tmpl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/README.Debian.tmpl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -122,19 +122,24 @@
   If you need to add skills to the database after installation, you
 can use the sf-add-skill script.  Give it a skill (or a list of
 skills) and it'll insert it into the databse.  This script is located
-in /usr/share/@PACKAGE@/bin/.
+in /usr/share/@OLDPACKAGE@/bin/.
 
   For cvs to work you have to add a symlink doing
-ln -s /var/lib/@PACKAGE@/chroot/cvsroot /cvsroot.
+ln -s /var/lib/@OLDPACKAGE@/chroot/cvsroot /cvsroot.
 We can't do this for Debian policy reason that forbid this.
   For svn similar 
-ln -s /var/lib/@PACKAGE@/chroot/svnroot /svnroot is to be done
+ln -s /var/lib/@OLDPACKAGE@/chroot/svnroot /svnroot is to be done
 
   Don't forget about adding 
-SYSLOGD="-p /dev/log -a /var/lib/@PACKAGE@/chroot/dev/log" in /etc/default/syslog
+SYSLOGD="-p /dev/log -a /var/lib/@OLDPACKAGE@/chroot/dev/log" in /etc/default/syslog
 This is a WARNING you might have seen at install, essential if you run 
 anonymous cvs in a root jail (This is the default in Debian)
 
+  Run /usr/share/@OLDPACKAGE@/bin/normalize_roles.php as root
+after major upgrades, or those that add permission knobs.
+gitweb will not work right after a 4.8 → 5.1 upgrade until the
+first create_scm_repos cronjob has run.
+
   If you would like to add a theme to your @FORGENAME@, you'll first
 have to compose it.  Please refer to README.Themes.
 

Modified: branches/messer-51/src/debian/changelog
===================================================================
--- branches/messer-51/src/debian/changelog	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/changelog	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,3 +1,224 @@
+fusionforge (5.1.1+evolvis52) unstable; urgency=high
+
+  * [#2964] [#2965] [#2966] [#2968] Make template groups actually
+    usable and fix many bugs related to creating them, using and
+    instantiating them and handling Tracker Extra Fields
+  * Rewrite some code to use EvolvisTable and make it more legible
+  * [#2967] Add new standard tracker field “Linked Bugs” of type
+    relation; make Resolution into the custom status/workflow field;
+    make textfields of the same input width and adjust sizes; sort
+  * Enable Extratabs and MediaWiki plugins in the Template group
+  * When instantiating the template, ignore its SCM plugin setting
+  * Use the Forge Admin with the lowest numerical UID (normally
+    #101 “admin”) when impersonating an admin session, not a̲n̲y̲one
+  * Unbreak permanently deleting groups with standard mailing lists
+  * Improve debugging functions (backtraces)
+  * [#2963] Do not backslash-escape many strings where it’s wrong
+  * Use project list for /softwaremap/ (tag cloud may be empty)
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Sat, 07 Apr 2012 15:38:00 +0200
+
+fusionforge (5.1.1+evolvis51) unstable; urgency=low
+
+  [ Roland Mas ]
+  * [#2957] Fix custom fields not being initialised on move across trackers
+
+  [ Thorsten Glaser ]
+  * Make “Resolution” into a Status custom field, to be able to define
+    workflows, use the bargraph, and do better statistics e.g. in R
+  * Avoid rendering the Status field twice if custom and called Resolution
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Thu, 05 Apr 2012 16:29:30 +0200
+
+fusionforge (5.1.1+evolvis50) unstable; urgency=low
+
+  [ Julien Heyman ]
+  * Add news in activity_vw
+
+  [ Marcel Baur ]
+  * Fix scmcvs .ssh key generation
+
+  [ Roland Mas ]
+  * Ship plugins/blocks/config.php to where it'll get found
+  * Use current config system in deb-specific scripts
+  * Better default values for config variables
+  * Refreshed podebconf files
+  * Normalize roles after enabling/disabling a plugin, so that plugins
+    defining new permission settings get their default values set
+  * Mediawiki: Only create the project dir if the database part ran fine
+  * Fixed permission checking in top projects list
+  * [#2944] Fix RBAC migration: not saving a setting ≠ setting it to zero
+
+  [ Thorsten Glaser ]
+  * Merge fusionforge (5.1.1-5) unstable
+  * Be more lenient regarding *.sql files in the DB upgrade script
+  * Run a normalise_roles plugin hook after everything else
+  * Mediawiki: Remove old Evolvis 4.8 style public visibility code;
+    [#2947] upon normalising roles, transition from old style to PFO-RBAC
+    if any old-style setting files were found
+  * Mediawiki: Fix generating the nightly XML dumps
+  * Fix SCM dir group read permissions when toggling scmsvn/use_ssh to yes
+  * Improve the Users/Roles UI: display Unixnames in more places
+  * Bring in the ?subpage=home ⇒ wiki code from 4.8
+  * Display [#nnn] links in Tracker mails correctly and use permalinks
+  * [#2946] Correctly unencode entities before sending out mails
+  * Tracker: multi-line Item Description and Comments handled correctly
+  * [#2942] Rewrite Site-Admin Group List page
+  * [#2932] Allow multiple Submitters in Old Power Queries
+  * [#2945] Prevent non-logged in users from determining group existence
+  * Enable syntax checks before build
+  * Disable non-rotated Apache 2 logfiles
+  * Allow using language-pack-{de,en} as locales-all replacement
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Thu, 05 Apr 2012 12:15:15 +0200
+
+fusionforge (5.1.1+evolvis49) unstable; urgency=low
+
+  * Fix several PHP warnings (undefined variables, API mismatch,
+    protect from caller mistakes), SQL warnings, ECMAscript errors
+  * Remove unused code
+  * Work around jpgraph API mistake
+  * Introduce evolvis-meta package to aid lenny→wheezy transition
+    phase’s dual-installability
+  * Allow to use stock simplepie from sid which includes our fixes
+  * [#2876] Write even default role permissions to the database, so
+    they show up for role editing after normalise_roles.php has run
+  * Remove the “beta” from the site header logo
+  * [#2897] Use DatePicker formatting routines in {Tracker,Tasks} browser
+  * [#1908] Correct sorting tables by dates
+  * Harmonise formatting between Tracker and Tasks
+  * [#2638] Fix SQL construction bug which made the tracker unusable
+  * [#2933] Do not display Browse Source link if hidden
+  * [#2364] Group by project, then subproject/tracker, in the widgets
+    My Assigned Tasks / Tracker Items; do not limit to 100 items
+  * [#2455] Improve “Build Task/Tracker Relationship” usability
+  * [#2406] Fix text for role removal as well
+  * [#2898] Bring back displaying “none” if no other assignee
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Wed, 14 Mar 2012 19:57:04 +0100
+
+fusionforge (5.1.1+evolvis48) unstable; urgency=low
+
+  * [#2508] Fix Postfix UCF configuration
+  * [#2503] Make ViewVC/gitweb look better
+  * [#2497] Configure the mailing lists (whitelist local mails)
+  * [#2497] Add svn commit mails and git receive-pack mails
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Mon, 12 Mar 2012 17:34:41 +0100
+
+fusionforge (5.1.1+evolvis47) unstable; urgency=low
+
+  * Mediawiki: “remove pages from history” is now a separate permission
+  * Add some upgrade helper notes/hints
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Mon, 12 Mar 2012 15:40:59 +0100
+
+fusionforge (5.1.1+evolvis46) unstable; urgency=low
+
+  [ Roland Mas ]
+  * Mention user name in group join request emails
+  * More error-proof RBAC upgrade path
+
+  [ Thorsten Glaser ]
+  * Tasks: improve rendering of overdue (or not) tasks in browse
+  * fix [#2639] for real
+  * [#2922] order attachments by add_date
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Mon, 12 Mar 2012 11:33:20 +0100
+
+fusionforge (5.1.1+evolvis45) unstable; urgency=high
+
+  * [#2901] Tracker: unbreak Submit Item for logged-in users
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Mon, 05 Mar 2012 15:14:15 +0100
+
+fusionforge (5.1.1+evolvis44) unstable; urgency=low
+
+  * scmsvn: fix /var/lib/gforge/chroot/svnroot symlink on fresh installs
+  * scmsvn: do not auto-create {branches,tags,trunk} dir in created repo
+  * Tighten dependencies (both forge-internal and those to changed
+    packages we require) to facilitate an eventual wheezy installation
+  * [#2448] fix artifact extrafield copy
+  * [#2370] align styles of My {Artifacts,Tasks} with each other
+  * [#2657] various mailman related fixes
+  * [#2338] fix 100 value handling for multi-checkboxen
+  * [#2504] unbreak Tasks statistics
+  * [#2568] quell spurious item details non-change on mass update
+  * [#2639] [#2640] fix sorting power query results by assignee and submitter
+  * [#2645] validate eMail when submitting a new item anonymously
+  * [#2446] hide unused tracker configuration item status_timeout
+  * [#2644] display status name, not ID, in item details
+  * improve postgrey handling, prepare for lenny→wheezy migration
+  * improve compatibility with newer Debian releases
+  * bring back gforge user into pg_hba.conf, doesn’t work at all otherwise
+  * remove Akelos XHTML validator (unfit)
+  * [#2503] begin fixing SCM browser (ViewVC and gitweb)
+
+ -- Thorsten Glaser <tg at mirbsd.de>  Wed, 29 Feb 2012 12:27:30 +0100
+
+fusionforge (5.1.1+evolvis43) unstable; urgency=low
+
+  [ Roland Mas ]
+  * Mediawiki/RBAC: ensure the appropriate users get the ForgeAdmin role
+    in MW; handle all global roles (even those not linked to the project)
+
+  [ Patrick Apel ]
+  * bring Evolvis 4.8 addUploadedFile SOAP method to 5.1
+
+  [ Thorsten Glaser ]
+  * use paxmirabilis from Debian, not the unofficial MirCPIO packaging
+  * [#2406] better text for assigning group roles to forge members
+  * ensure htaccess is honoured for any content in ALL vhosts, even lists
+  * use https for redirections on the lists vhost
+  * [#2447] fix typo
+  * [#2638] fix missing whitespace separator in SQL querystring creation
+  * fix XHTML nesting bug
+  * bring remaining Evolvis 4.8 SOAP fixes to 5.1; bump WSDL revision
+  * [#2656] extend addHistory methods to be able to store the new value
+  * [#2658] cosmetic fixes to old power query form
+  * [#2659] when queries convert to textfields, use reasonable size/maxlen
+  * [#2633] fix power search submitted_by
+  * [#2563] Tracker: fix sorting of browse
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Wed, 22 Feb 2012 12:28:02 +0100
+
+fusionforge (5.1.1+evolvis42) unstable; urgency=low
+
+  [ Roland Mas ]
+  * [#2547] fix permission check for assigning techs
+
+  [ Thorsten Glaser ]
+  * [#715] [#2507] add back greylisting using postgrey
+  * [#2395] [#2398] drop comment textarea in Tasks
+    XXX we might need this back for anonymous comments
+  * [#2381] [#2434] fix German translation
+  * [#2386] fix TRK_TECH submissions
+  * [#2549] fix login redirection loop in mediawiki
+  * [#2409] stay in item when {,un}monitoring
+  * [#2556] fix theme bug in <noscript/> area and group admin
+  * [#2447] fix artifact extra field messages
+  * [#2506] hide news submenu if no rights to submit anyway
+  * [#2552] fix stopping monitoring of fora
+  * fix bunch of error messages; make debugging better
+  * [#2484] drop redundant "Category Name" in “select columns”
+  * [#2440] accept and render anonymous comments correctly
+  * Tracker: allow changing "Allow non-logged-in postings" flag later
+  * [#2569] fix another addslashes() remnant
+  * [#2602] install missing evolvis-improvetasks.ini file
+  * [#2400] [#2570] PM unbreak CSV import with header lines, CSV export
+  * fix/reactivate “register this user immediately”
+  * [#2373] improve behaviour when registering a new group
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Wed, 01 Feb 2012 17:24:50 +0100
+
+fusionforge (5.1.1+evolvis41) unstable; urgency=low
+
+  * [#2225] Bring in Mediawiki plugin changes from Evolvis 4.8
+  * Fix mistakes wrt. the DTD and XHTML validity checking
+  * Followup gitweb fix for the two symlink places conflict
+
+ -- Thorsten Glaser <t.glaser at tarent.de>  Fri, 20 Jan 2012 17:48:00 +0100
+
 fusionforge (5.1.1+evolvis40) unstable; urgency=low
 
   * Only display group long description when it differs from the short
@@ -237,12 +458,34 @@
 
  -- Thorsten Glaser <t.glaser at tarent.de>  Tue, 06 Dec 2011 19:13:33 +0100
 
-fusionforge (5.1.1-3) UNRELEASED; urgency=low
+fusionforge (5.1.1-5) unstable; urgency=low
 
+  * Remove more config files on purge (detected by piuparts).
+
+ -- Roland Mas <lolando at debian.org>  Tue, 27 Mar 2012 20:34:57 +0200
+
+fusionforge (5.1.1-4) unstable; urgency=low
+
+  * Removed one more call to fusionforge-config.
+
+ -- Roland Mas <lolando at debian.org>  Tue, 20 Mar 2012 17:09:19 +0100
+
+fusionforge (5.1.1-3) unstable; urgency=low
+
+  [ Olivier Berger ]
   * Add new README.Debian for gforge-web-apache2 specifically.
 
- -- Olivier Berger <obergix at debian.org>  Mon, 21 Nov 2011 17:33:28 +0100
+  [ Roland Mas ]
+  * Use common/include/env.inc.php rather than www/env.inc.php for offline
+    scripts (closes: #663602).
+  * More comprehensive purge for -common package (closes: #638167).
+  * Stop trying to call fusionforge-config in maintainer scripts, it's not
+    needed any longer and it causes problems (closes: #655965, #656088,
+    #662897).
+  * Fixed PHP 5.4 compatibility (closes: #658955).
 
+ -- Roland Mas <lolando at debian.org>  Fri, 16 Mar 2012 16:12:09 +0100
+
 fusionforge (5.1.1-2) unstable; urgency=low
 
   * New upstream SVN snapshot.
@@ -3564,7 +3807,3 @@
   * Initial Release.  Expect many bugs.
 
  -- Roland Mas <99.roland.mas at aist.enst.fr>  Sun, 10 Dec 2000 16:15:20 +0100
-
-Local Variables:
-coding: utf-8
-End:

Modified: branches/messer-51/src/debian/control
===================================================================
--- branches/messer-51/src/debian/control	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/control	2012-04-07 14:10:47 UTC (rev 18260)
@@ -83,9 +83,10 @@
 
 Package: gforge-common
 Architecture: all
-Depends: debconf (>= 1.0.32) | debconf-2.0, ucf, cpio, lockfile-progs, adduser, php5-cli, php-htmlpurifier (>= 4.0), libphp-simplepie (>= 1.2-2+tarent1), libphp-simplepie (<< 1.2-3~~), python, mksh, xz-utils, sudo, w3c-dtd-xhtml, xmlstarlet, libbsd-arc4random-perl, ${misc:Depends}
+Depends: debconf (>= 1.0.32) | debconf-2.0, ucf, pax (>= 1:20120216-1~), lockfile-progs, adduser, php5-cli, php-htmlpurifier (>= 4.0), libphp-simplepie (>= 1.2-2+tarent1), libphp-simplepie (<< 1.2-3~~) | libphp-simplepie (>= 1.2.1-2~), python, mksh, xz-utils, sudo, w3c-dtd-xhtml, xmlstarlet, libbsd-arc4random-perl, ${misc:Depends}
 Recommends: php5-perl (>= 1.0.0-2~), libauthen-passphrase-perl
 Conflicts: sourceforge, gforge-plugin-scmcvs (<< 4.1), gforge-plugin-scmsvn (<< 4.1), gforge-plugin-scmccase (<< 4.1), gforge-theme-starterpack (<< 4.0)
+Provides: evolvisforge-common
 Description: collaborative development tool - shared files
  FusionForge provides many tools to aid collaboration in a
  development project, such as bug-tracking, task management,
@@ -98,9 +99,9 @@
 
 Package: gforge-web-apache2
 Architecture: all
-Depends: gforge-common, gforge-db-postgresql | gforge-db, libapache2-mod-php5 (>= 5.2), php5-cgi (>= 5.2), php5-pgsql, php5-gd, perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, cronolog, python, ssl-cert, libnusoap-php, php-htmlpurifier (>= 4.0), libjs-yui (>= 2.8.2r1~squeeze-1.1~), libjs-prototype (>= 1.7.0-2.1~), libjs-scriptaculous (>= 1.9.0-2~), libjs-jquery (>= 1.6.4-1~), libjs-jquery-ui (>= 1.8.ooops.16+dfsg-1~), libphp-jpgraph, tango-icon-theme, toilet, ${misc:Depends}
+Depends: gforge-common, gforge-db-postgresql | gforge-db, libapache2-mod-php5 (>= 5.2), php5-cgi (>= 5.2), php5-pgsql, php5-gd, perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, cronolog, python, ssl-cert, libnusoap-php, libjs-yui (>= 2.8.2r1~squeeze-1.1~tarent), libjs-yui (<< 2.8.2r1~squeeze-1.1~tarenu), libjs-prototype (>= 1.7.0-2.1~tarent), libjs-prototype (<< 1.7.0-2.1~tarenu), libjs-scriptaculous (>= 1.9.0-2~), libjs-jquery (>= 1.6.4-1~), libjs-jquery-ui (>= 1.8.ooops.16+dfsg-1~), libphp-jpgraph, tango-icon-theme, toilet, ${misc:Depends}
 Recommends: locales | locales-all
-Provides: gforge-web
+Provides: gforge-web, evolvisforge-web-apache2
 Conflicts: gforge-web
 Description: collaborative development tool - web part (using Apache)
  FusionForge provides many tools to aid collaboration in a
@@ -147,7 +148,7 @@
 Package: gforge-db-postgresql
 Architecture: all
 Depends: gforge-common, postgresql (>= 8.4), perl, libdbi-perl, libdbd-pg-perl, libmime-base64-perl, libhtml-parser-perl, libtext-autoformat-perl, libmail-sendmail-perl, libsort-versions-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, php5-cli, php5-pgsql, ${misc:Depends}
-Provides: gforge-db
+Provides: gforge-db, evolvisforge-db-postgresql
 Conflicts: gforge-db
 Description: collaborative development tool - database (using PostgreSQL)
  FusionForge provides many tools to aid collaboration in a
@@ -179,8 +180,8 @@
 
 Package: gforge-mta-postfix
 Architecture: all
-Depends: gforge-common, gforge-db-postgresql | gforge-db, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, postfix, postfix-pgsql, ${misc:Depends}
-Provides: gforge-mta
+Depends: gforge-common, gforge-db-postgresql | gforge-db, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, postfix, postfix-pgsql, postgrey, ${misc:Depends}
+Provides: gforge-mta, evolvisforge-mta-postfix
 Conflicts: gforge-mta
 Description: collaborative development tool - mail tools (using Postfix)
  FusionForge provides many tools to aid collaboration in a
@@ -191,6 +192,8 @@
  .
  This package configures the Postfix mail transfer agent to run
  FusionForge.
+ .
+ This package also configures Greylisting using Postgrey.
 
 Package: gforge-mta-courier
 Architecture: all
@@ -213,7 +216,7 @@
 Package: gforge-shell-postgresql
 Architecture: all
 Depends: gforge-common, gforge-db-postgresql, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, openssh-server, libnss-pgsql2, unscd, ${misc:Depends}
-Provides: gforge-shell
+Provides: gforge-shell, evolvisforge-shell-postgresql
 Conflicts: gforge-shell
 Description: collaborative development tool - shell accounts (using PostgreSQL)
  FusionForge provides many tools to aid collaboration in a
@@ -261,8 +264,8 @@
 
 Package: gforge-lists-mailman
 Architecture: all
-Depends: gforge-common, gforge-db-postgresql | gforge-db, gforge-mta-exim4 | gforge-mta, apache2 (>= 2.0.52), perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, mailman (>= 2.1-3), ${misc:Depends}
-Provides: gforge-lists
+Depends: gforge-common, gforge-db-postgresql | gforge-db, gforge-mta-exim4 | gforge-mta, apache2 (>= 2.0.52), perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, mailman (>= 2.1-3), evolvis-mailman-lenny | evolvis-mailman-wheezy, ${misc:Depends}
+Provides: gforge-lists, evolvisforge-lists-mailman
 Conflicts: gforge-lists
 Description: collaborative development tool - mailing-lists (using Mailman)
  FusionForge provides many tools to aid collaboration in a
@@ -282,11 +285,20 @@
  gforge-db-postgresql, gforge-mta-postfix,
  gforge-shell-postgresql, gforge-lists-mailman,
  fusionforge-plugin-scmgit, fusionforge-plugin-scmsvn,
- evolvis-anonsvnsh, locales-all,
+ evolvis-anonsvnsh,
+ locales-all | locales,
+ locales-all | language-pack-de,
+ locales-all | language-pack-en,
  fusionforge-plugin-extratabs, fusionforge-plugin-projectlabels,
  fusionforge-plugin-mediawiki, mediawiki-extensions-base (>= 2.4~),
  mediawiki-math, mediawiki-extensions-collection,
- mediawiki-extensions-geshi, mediawiki-extensions-graphviz
+ mediawiki-extensions-geshi, mediawiki-extensions-graphviz,
+ evolvisforge-common, evolvisforge-web-apache2,
+ evolvisforge-db-postgresql, evolvisforge-mta-postfix,
+ evolvisforge-shell-postgresql, evolvisforge-lists-mailman,
+ evolvisforge-plugin-scmgit, evolvisforge-plugin-scmsvn,
+ evolvisforge-plugin-extratabs,
+ evolvisforge-plugin-mediawiki-gf, evolvisforge-plugin-mediawiki-ff
 Provides: fusionforge
 Description: collaborative development tool - metapackage
  FusionForge provides many tools to aid collaboration in a
@@ -297,6 +309,26 @@
  .
  This metapackage installs an Evolvis site.
 
+Package: gforge-plugin-mediawiki
+Architecture: all
+Depends: fusionforge-plugin-mediawiki, ${misc:Depends}
+Provides: evolvisforge-plugin-mediawiki-gf
+Description: Mediawiki plugin for Evolvis
+ FusionForge provides many tools to aid collaboration in a
+ development project, such as bug-tracking, task management,
+ mailing-lists, SCM repository, forums, support request helper,
+ web/FTP hosting, release management, etc. All these services are
+ integrated into one web site and managed through a web interface.
+ .
+ This package is needed at the moment as it contains a file which
+ diverts a file in the mediawiki package, and the diversion cannot
+ be moved to fusionforge-plugin-mediawiki currently.
+ .
+ The long-term solution would probably be to make the location of
+ the message files configurable in src:mediawiki, then provide a
+ new location in fusionforge-plugin-mediawiki and get rid of this
+ gforge-plugin-mediawiki package.
+
 Package: gforge-plugin-extratabs
 Architecture: all
 Depends: fusionforge-plugin-extratabs, ${misc:Depends}
@@ -311,13 +343,6 @@
  This package is only present for transitional purposes and can be
  safely removed.
 
-Package: gforge-plugin-mediawiki
-Architecture: all
-Depends: fusionforge-plugin-mediawiki, ${misc:Depends}
-Description: Mediawiki plugin for FusionForge (transitional package)
- This package is only present for transitional purposes and can be
- safely removed.
-
 Package: gforge-plugin-projectlabels
 Architecture: all
 Depends: fusionforge-plugin-projectlabels, ${misc:Depends}
@@ -367,7 +392,7 @@
 Package: fusionforge-plugin-extratabs
 Architecture: all
 Depends: gforge-common (>= 4.6.99), gforge-db-postgresql (>= 4.6.99) | gforge-db, gforge-web-apache2 (>= 4.6.99) | gforge-web, ${misc:Depends}
-Provides: gforge-plugin-extratabs
+Provides: gforge-plugin-extratabs, evolvisforge-plugin-extratabs
 Conflicts: gforge-plugin-extratabs (<< 5.0.51-2)
 Replaces: gforge-plugin-extratabs (<< 5.0.51-2)
 Description: Extratabs plugin for FusionForge
@@ -432,10 +457,8 @@
 
 Package: fusionforge-plugin-mediawiki
 Architecture: all
-Depends: gforge-common (>= 4.8), gforge-db-postgresql (>= 4.8) | gforge-db, gforge-web-apache2 (>= 4.8) | gforge-web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15~), php5-cli, php5-gd, ${misc:Depends}
-Provides: gforge-plugin-mediawiki
-Conflicts: gforge-plugin-mediawiki (<< 5.0.51-2)
-Replaces: gforge-plugin-mediawiki (<< 5.0.51-2)
+Depends: gforge-common (>= 4.8), gforge-db-postgresql (>= 4.8) | gforge-db, gforge-web-apache2 (>= 4.8) | gforge-web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15~), mediawiki (<< 1:1.16~), php5-cli, php5-gd, ${misc:Depends}, gforge-plugin-mediawiki (>= 5.1.1+evolvis41~)
+Provides: evolvisforge-plugin-mediawiki-ff
 Description: Mediawiki plugin for FusionForge
  FusionForge provides many tools to aid collaboration in a
  development project, such as bug-tracking, task management,
@@ -559,8 +582,8 @@
 
 Package: fusionforge-plugin-scmgit
 Architecture: all
-Depends: gforge-common, gforge-db-postgresql | gforge-db, gforge-web-apache2 | gforge-web, gforge-shell-postgresql | gforge-shell, git (>= 1:1.7) | git-core, gitweb (>= 1:1.7), php5-cli, ${misc:Depends}
-Provides: fusionforge-plugin-scm, gforge-plugin-scmgit
+Depends: gforge-common, gforge-db-postgresql | gforge-db, gforge-web-apache2 | gforge-web, gforge-shell-postgresql | gforge-shell, git (>= 1:1.7) | git-core, gitweb (>= 1:1.7), gitweb (<< 1:1.7.4.1), php5-cli, ${misc:Depends}
+Provides: fusionforge-plugin-scm, gforge-plugin-scmgit, evolvisforge-plugin-scmgit
 Conflicts: gforge-plugin-scmgit (<< 5.0.51-2)
 Replaces: gforge-plugin-scmgit (<< 5.0.51-2)
 Description: collaborative development tool - Git plugin
@@ -597,7 +620,7 @@
 Package: fusionforge-plugin-scmsvn
 Architecture: all
 Depends: gforge-common, gforge-db-postgresql | gforge-db, gforge-web-apache2 | gforge-web, libapache2-svn, gforge-shell-postgresql | gforge-shell, subversion, subversion-tools, python-subversion, python (>= 2.3), php5-cli, openbsd-inetd | inet-superserver, update-inetd, ${misc:Depends}
-Provides: fusionforge-plugin-scm, gforge-plugin-scmsvn
+Provides: fusionforge-plugin-scm, gforge-plugin-scmsvn, evolvisforge-plugin-scmsvn
 Conflicts: gforge-plugin-scmsvn
 Replaces: gforge-plugin-scmsvn
 Description: collaborative development tool - Subversion plugin

Modified: branches/messer-51/src/debian/dsf-in/common.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/common.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/common.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -111,8 +111,6 @@
 	    echo "Migrating existing configuration to *.ini files"
 	    PATH=$PATH:/usr/share/gforge/bin migrate-to-ini-files.sh
 	fi 
-
-	@PACKAGE at -config
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)

Modified: branches/messer-51/src/debian/dsf-in/common.postrm
===================================================================
--- branches/messer-51/src/debian/dsf-in/common.postrm	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/common.postrm	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,6 +21,9 @@
 	rm -rf /var/lib/@OLDPACKAGE@
 	[ -d /etc/@OLDPACKAGE@ ] && rm -rf /etc/@OLDPACKAGE@
 	rm -f /scmrepos
+	for i in config.ini.d/debian-install-secrets.ini config.ini.d/debian-install.ini fusionforge.conf ; do
+	    [ -e /etc/@PACKAGE@/$i ] && rm /etc/@PACKAGE@/$i
+	done
 	;;
     remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
 	;;

Modified: branches/messer-51/src/debian/dsf-in/db-postgresql.postinst.dsfh-in
===================================================================
--- branches/messer-51/src/debian/dsf-in/db-postgresql.postinst.dsfh-in	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/db-postgresql.postinst.dsfh-in	2012-04-07 14:10:47 UTC (rev 18260)
@@ -56,8 +56,6 @@
     configure)
 	add_onevar_mainconfile default_trove_cat 18
 
-	@PACKAGE at -config
-
         # Patch DB configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-db.sh configure-files
 

Modified: branches/messer-51/src/debian/dsf-in/dns-bind9.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/dns-bind9.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/dns-bind9.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-	@PACKAGE at -config
-
 	# Patch Bind configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-dns.sh configure-files
 	ucf --debconf-ok /etc/bind/named.conf. at OLDPACKAGE@-new /etc/bind/named.conf

Modified: branches/messer-51/src/debian/dsf-in/ftp-proftpd.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/ftp-proftpd.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/ftp-proftpd.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-	@PACKAGE at -config
-
         # Patch Proftpd configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-ftp.sh configure-files
 	if [ -f /etc/proftpd/proftpd.conf. at OLDPACKAGE@-new ]

Modified: branches/messer-51/src/debian/dsf-in/lists-mailman.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/lists-mailman.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/lists-mailman.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-	@PACKAGE at -config
-	
 	echo "Fixing past damage in mailing-lists..."
 	if [ -z "$2" ] || dpkg --compare-versions $2 le 3rc2-4 ; then
 	    /usr/share/@OLDPACKAGE@/bin/fix-mailing-lists.pl

Modified: branches/messer-51/src/debian/dsf-in/mta-exim4.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/mta-exim4.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/mta-exim4.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-
-	@PACKAGE at -config
         # Patch Exim configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-exim4.sh configure-files
 	if [ -f /etc/aliases. at OLDPACKAGE@-new ]

Modified: branches/messer-51/src/debian/dsf-in/mta-postfix.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/mta-postfix.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/mta-postfix.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-	@PACKAGE at -config
-
         # Patch Postfix configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-postfix.sh configure-files
 	ucf --debconf-ok /etc/aliases. at OLDPACKAGE@-new /etc/aliases
@@ -36,6 +34,18 @@
 	rm /etc/aliases. at OLDPACKAGE@-new
 	rm /etc/postfix/main.cf. at OLDPACKAGE@-new
 	/usr/share/@OLDPACKAGE@/bin/install-postfix.sh configure
+
+	db_stop
+
+	# Patch Postgrey configuration files
+	if ! grep -q '^POSTGREY_TEXT=' /etc/default/postgrey; then
+		echo 'POSTGREY_TEXT="Greylisting in effect,' \
+		    'please try again later, unless you want' \
+		    'to deliver UBE/UCE."' >>/etc/default/postgrey
+		(invoke-rc.d --quiet postgrey stop || :)
+		sleep 3
+		invoke-rc.d --quiet postgrey start
+	fi
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)

Modified: branches/messer-51/src/debian/dsf-in/shell-postgresql.postinst
===================================================================
--- branches/messer-51/src/debian/dsf-in/shell-postgresql.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/shell-postgresql.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-	@PACKAGE at -config
-
         # Patch NSS configuration files
 	/usr/share/@OLDPACKAGE@/bin/install-nsspgsql.sh configure-files
 

Modified: branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postinst.dsfh-in
===================================================================
--- branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postinst.dsfh-in	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postinst.dsfh-in	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,8 +27,6 @@
 
 case "$1" in
     configure)
-        @PACKAGE at -config
-
 	db_stop
         # Setup our Apache
 	touch /var/lib/@OLDPACKAGE@/etc/templates/httpd.vhosts  && \

Modified: branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postrm.dsfh-in
===================================================================
--- branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postrm.dsfh-in	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/web-apache2-vhosts.postrm.dsfh-in	2012-04-07 14:10:47 UTC (rev 18260)
@@ -18,7 +18,6 @@
 
 case "$1" in
     purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
-	@PACKAGE at -config
         # Make Apache see these new changes
 	invoke-rc.d apache2 reload || true
 	;;

Modified: branches/messer-51/src/debian/dsf-in/web-apache2.postinst.dsfh-in
===================================================================
--- branches/messer-51/src/debian/dsf-in/web-apache2.postinst.dsfh-in	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-in/web-apache2.postinst.dsfh-in	2012-04-07 14:10:47 UTC (rev 18260)
@@ -55,8 +55,6 @@
 		cat /etc/@OLDPACKAGE@/ssl-cert.pem >/etc/@OLDPACKAGE@/ssl-cert.ca
 	fi
 	
-        fusionforge-config
-
 	for i in secrets.inc vhost-list.inc vhost-main.inc vhost-projects.inc ; do
 	    if [ ! -e /etc/gforge/httpd.conf.d/$i ] ; then
 		cp /usr/share/gforge/etc/httpd.conf.d-fhs/$i /etc/gforge/httpd.conf.d/$i

Modified: branches/messer-51/src/debian/dsf-po/cs.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/cs.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/cs.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -14,11 +14,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2008-03-30 14:36+0200\n"
 "Last-Translator: Miroslav Kure <kurem at debian.cz>\n"
 "Language-Team: Czech <debian-l10n-czech at lists.debian.org>\n"
+"Language: cs\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -76,44 +77,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "Přihlašovací jméno správce @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Správce @FORGENAME@ bude mít v systému @FORGENAME@ všechna práva. Používá se "
-"například pro schvalování vytváření nových projektů."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Zadejte prosím přihlašovací jméno tohoto účtu."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP adresa:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -127,14 +97,14 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "To je vyžadováno pro nastavení virtuálních hostů v Apachi."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
@@ -142,53 +112,40 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Správce @FORGENAME@ bude mít v systému @FORGENAME@ všechna práva. Používá se "
+"například pro schvalování vytváření nových projektů."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Zadejte prosím heslo pro tento účet."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Potvrzení hesla:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Zadejte heslo ještě jednou pro potvrzení."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Počáteční seznam schopností:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ umožňuje uživatelům, aby si ze seznamu schopností definovali své "
-"dovednosti. Seznam, který zde zadáte, bude uložen v databázi jako výchozí "
-"seznam schopností."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr "Jednotlivé položky seznamu schopností oddělte středníky."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -243,8 +200,8 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ využívá adresu „${noreply}“ k odesílání i příjmu velkého "
 "množství pošty."
@@ -678,3 +635,31 @@
 "Please choose the default theme for web pages. This must be a valid name."
 msgstr ""
 "Vyberte prosím výchozí téma pro webové stránky. Musí to být platný název."
+
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Přihlašovací jméno správce @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Zadejte prosím přihlašovací jméno tohoto účtu."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Počáteční seznam schopností:"
+
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ umožňuje uživatelům, aby si ze seznamu schopností definovali "
+#~ "své dovednosti. Seznam, který zde zadáte, bude uložen v databázi jako "
+#~ "výchozí seznam schopností."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr "Jednotlivé položky seznamu schopností oddělte středníky."

Modified: branches/messer-51/src/debian/dsf-po/de.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/de.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/de.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,11 +5,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGENAME@ 4.8.2-1\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2009-12-27 09:30+0100\n"
 "Last-Translator: Helge Kreutzmann <debian at helgefjell.de>\n"
 "Language-Team: German <debian-l10n-german at lists.debian.org>\n"
+"Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -62,39 +63,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr "@FORGENAME at -Administrator-Anmeldung:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Das @FORGENAME at -Administrator-Konto wird alle Privilegien auf dem "
-"@FORGENAME at -System haben. Es wird benötigt, um die Erstellung von neuen "
-"Projekten zu bewilligen."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Bitte wählen Sie den Benutzernamen für dieses Konto."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP-Adresse:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -105,63 +80,54 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Diese wird für die virtualhosting-Konfiguration des Apache benötigt."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr "@FORGENAME at -Administrator-Passwort:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Das @FORGENAME at -Administrator-Konto wird alle Privilegien auf dem "
+"@FORGENAME at -System haben. Es wird benötigt, um die Erstellung von neuen "
+"Projekten zu bewilligen."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Bitte wählen Sie das Passwort für dieses Konto."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Bestätigung des Passworts:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Bitte geben Sie zur Bestätigung das Passwort erneut ein."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Anfängliche Liste der Fähigkeiten:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ erlaubt es den Benutzern, eine Liste Ihrer Fähigkeiten zu "
-"definieren, die aus allen in der Datenbank hinterlegten Fähigkeiten "
-"ausgewählt werden können. Diese Liste ist die anfängliche Liste von "
-"Fähigkeiten, die in die Datenbank eingegeben wird."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Bitte geben Sie die Namen der Fähigkeiten, getrennt durch Semikola »;«, ein."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -211,8 +177,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ sendet und empfängt viele E-Mails von und auf der »${noreply}«-"
 "Adresse."
@@ -606,5 +572,29 @@
 "Bitte wählen Sie das Standard-Thema für Webseiten. Dies muss ein gültiger "
 "Namen sein."
 
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "@FORGENAME at -Administrator-Anmeldung:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Bitte wählen Sie den Benutzernamen für dieses Konto."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Anfängliche Liste der Fähigkeiten:"
+
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ erlaubt es den Benutzern, eine Liste Ihrer Fähigkeiten zu "
+#~ "definieren, die aus allen in der Datenbank hinterlegten Fähigkeiten "
+#~ "ausgewählt werden können. Diese Liste ist die anfängliche Liste von "
+#~ "Fähigkeiten, die in die Datenbank eingegeben wird."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Bitte geben Sie die Namen der Fähigkeiten, getrennt durch Semikola »;«, "
+#~ "ein."
+
 #~ msgid "admin"
 #~ msgstr "Administrator"

Modified: branches/messer-51/src/debian/dsf-po/es.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/es.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/es.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -30,11 +30,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@ 4.7~rc2-7\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2009-04-15 14:37+0200\n"
 "Last-Translator: Francisco Javier Cuadrado <fcocuadrado at gmail.com>\n"
 "Language-Team: Debian l10n Spanish <debian-l10n-spanish at lists.debian.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -94,44 +95,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "Usuario del administrador de @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"La cuenta de administrador de @FORGENAME@ tendrá privilegios completos sobre "
-"el sistema. Se debe utilizar para aprobar la creación de nuevos proyectos."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Escriba el nombre de usuario para esta cuenta."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "Dirección IP:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -146,14 +116,14 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Es necesario para la configuración del servidor virtual de Apache."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
@@ -161,54 +131,40 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"La cuenta de administrador de @FORGENAME@ tendrá privilegios completos sobre "
+"el sistema. Se debe utilizar para aprobar la creación de nuevos proyectos."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Escriba la contraseña para esta cuenta."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Confirmación de la contraseña:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Escriba nuevamente la contraseña para su confirmación."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Lista inicial de habilidades:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ permite que los usuarios definan una lista de habilidades, a "
-"elegir de las presentes en la base de datos. Esta lista es la lista inicial "
-"de habilidades que se introducirá en la base de datos."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Introduzca una lista de nombres de habilidades, separados por punto y coma."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -265,8 +221,8 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ envía y recibe muchos correos electrónicos hacia y desde la "
 "dirección «${noreply}»."
@@ -707,3 +663,33 @@
 "Please choose the default theme for web pages. This must be a valid name."
 msgstr ""
 "Elija el tema predeterminado para las páginas web. Debe ser un nombre válido."
+
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Usuario del administrador de @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Escriba el nombre de usuario para esta cuenta."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Lista inicial de habilidades:"
+
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ permite que los usuarios definan una lista de habilidades, a "
+#~ "elegir de las presentes en la base de datos. Esta lista es la lista "
+#~ "inicial de habilidades que se introducirá en la base de datos."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Introduzca una lista de nombres de habilidades, separados por punto y "
+#~ "coma."

Modified: branches/messer-51/src/debian/dsf-po/fi.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/fi.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/fi.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,11 +1,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2008-03-24 17:41+0200\n"
 "Last-Translator: Esko Arajärvi <edu at iki.fi>\n"
 "Language-Team: Finnish <debian-l10n-finnish at lists.debian.org>\n"
+"Language: fi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -65,44 +66,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "@FORGENAME at n ylläpitotunnus:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"@FORGENAME at n ylläpitotunnuksella tulee olemaan täydet oikeudet "
-"järjestelmään. Sitä käytetään hyväksyttäessä uusien projektien luominen."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Valitse tämän tunnuksen nimi."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP-osoite:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -115,14 +85,14 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Tätä tarvitaan Apachen näennäiskoneiden asetukseen."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
@@ -130,53 +100,40 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"@FORGENAME at n ylläpitotunnuksella tulee olemaan täydet oikeudet "
+"järjestelmään. Sitä käytetään hyväksyttäessä uusien projektien luominen."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Valitse tunnuksen salasana."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Salasanan vahvistus:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Anna salasana uudestaan vahvistukseksi."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Alkuperäinen lista taidoista:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ antaa käyttäjien määrittää listan taidoistaan. Ne valitaan "
-"tietokannassa tällä hetkellä olevista. Tämä alkuperäinen taitolista "
-"tallennetaan tietokantaan."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr "Anna puolipisteillä erotettu lista taitojen nimistä."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -234,8 +191,8 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ lähettää ja vastaanottaa paljon sähköpostia osoitteen "
 "”${noreply}” kautta."
@@ -667,5 +624,33 @@
 "Please choose the default theme for web pages. This must be a valid name."
 msgstr "Valitse verkkosivujen oletusteema. Tämän tulee olla käypä nimi."
 
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "@FORGENAME at n ylläpitotunnus:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Valitse tämän tunnuksen nimi."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Alkuperäinen lista taidoista:"
+
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ antaa käyttäjien määrittää listan taidoistaan. Ne valitaan "
+#~ "tietokannassa tällä hetkellä olevista. Tämä alkuperäinen taitolista "
+#~ "tallennetaan tietokantaan."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr "Anna puolipisteillä erotettu lista taitojen nimistä."
+
 #~ msgid "admin"
 #~ msgstr "admin"

Modified: branches/messer-51/src/debian/dsf-po/fr.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/fr.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/fr.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -6,11 +6,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGENAME@\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2009-12-29 13:36+0100\n"
 "Last-Translator: Christian Perrier <bubulle at debian.org>\n"
 "Language-Team: French <debian-l10n-french at lists.debian.org>\n"
+"Language: fr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -62,38 +63,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr "Identifiant de l'administrateur de @FORGENAME@ :"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Le compte d'administration de @FORGENAME@ aura tous les privilèges sur le "
-"système @FORGENAME at . Il servira à approuver la création de projets."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Veuillez choisir l'identifiant à utiliser pour ce compte."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "Adresse IP :"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -102,7 +78,7 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr ""
@@ -111,55 +87,46 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr "Mot de passe de l'administrateur de @FORGENAME@ :"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Le compte d'administration de @FORGENAME@ aura tous les privilèges sur le "
+"système @FORGENAME at . Il servira à approuver la création de projets."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Veuillez choisir le mot de passe de ce compte."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Confirmation du mot de passe :"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Veuillez entrer à nouveau le mot de passe, pour confirmation."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Liste initiale de domaines de compétences :"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"Les utilisateurs de @FORGENAME@ peuvent afficher leurs niveaux de compétence "
-"dans différents domaines. Cette liste est la liste initiale de ces domaines. "
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Veuillez indiquer les noms de ces domaines de compétence, séparés par des "
-"points-virgules."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -211,8 +178,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ envoie fréquemment des courriers de et vers l'adresse "
 "« ${noreply} »."
@@ -604,5 +571,28 @@
 "Veuillez choisir le thème par défaut des pages web. Veillez à indiquer un "
 "nom valable."
 
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Identifiant de l'administrateur de @FORGENAME@ :"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Veuillez choisir l'identifiant à utiliser pour ce compte."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Liste initiale de domaines de compétences :"
+
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "Les utilisateurs de @FORGENAME@ peuvent afficher leurs niveaux de "
+#~ "compétence dans différents domaines. Cette liste est la liste initiale de "
+#~ "ces domaines. "
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Veuillez indiquer les noms de ces domaines de compétence, séparés par des "
+#~ "points-virgules."
+
 #~ msgid "admin"
 #~ msgstr "admin"

Modified: branches/messer-51/src/debian/dsf-po/gl.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/gl.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/gl.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,11 +5,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2008-03-25 03:47+0000\n"
 "Last-Translator: Jacobo Tarrio <jtarrio at debian.org>\n"
 "Language-Team: Galician <proxecto at trasno.net>\n"
+"Language: gl\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -68,44 +69,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "Nome do usuario administrador de @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"A conta de administrador de @FORGENAME@ ha ter tódolos privilexios no "
-"sistema. Hase empregar para aprobar a creación de novos proxectos."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Escolla o nome de usuario para esta conta."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "Enderezo IP:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -120,14 +90,14 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Isto é preciso para configurar a hospedaxe virtual de Apache."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
@@ -135,55 +105,40 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"A conta de administrador de @FORGENAME@ ha ter tódolos privilexios no "
+"sistema. Hase empregar para aprobar a creación de novos proxectos."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Escolla un contrasinal para esta conta."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Confirmación do contrasinal:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Volva introducir o contrasinal para confirmalo."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Lista inicial de coñecementos:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ permítelle aos usuarios facer unha lista cos seus coñecementos, "
-"que poden escoller entre os que figuran na base de datos. Esta lista é a "
-"lista inicial de coñecementos que han entrar na base de datos."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Introduza unha lista de nomes de coñecementos separados por signos de punto "
-"e coma."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -238,11 +193,11 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
-"@FORGENAME@ envía e recibe moito email desde e para o enderezo \"${noreply}"
-"\"."
+"@FORGENAME@ envía e recibe moito email desde e para o enderezo "
+"\"${noreply}\"."
 
 #. Type: boolean
 #. Description
@@ -679,5 +634,36 @@
 msgstr ""
 "Escolla o tema por defecto para as páxinas web. Debe ser un nome válido."
 
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Nome do usuario administrador de @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Escolla o nome de usuario para esta conta."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Lista inicial de coñecementos:"
+
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ permítelle aos usuarios facer unha lista cos seus "
+#~ "coñecementos, que poden escoller entre os que figuran na base de datos. "
+#~ "Esta lista é a lista inicial de coñecementos que han entrar na base de "
+#~ "datos."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Introduza unha lista de nomes de coñecementos separados por signos de "
+#~ "punto e coma."
+
 #~ msgid "admin"
 #~ msgstr "admin"

Modified: branches/messer-51/src/debian/dsf-po/nl.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/nl.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/nl.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -14,11 +14,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2008-03-28 14:19+0100\n"
 "Last-Translator: Bart Cornelis <cobaco at skolelinux.no>\n"
 "Language-Team: debian-l10n-dutch <debian-l10n-dutch at lists.debian.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -90,41 +91,6 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "Gebruikersnaam @FORGENAME at -beheerder:"
-
-#  Type: string
-#  Description
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"De @FORGENAME at -beheerdersaccount krijgt volledige rechten binnen @FORGENAME at -"
-"systeem, en wordt gebruikt om nieuwe projecten goed te keuren."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Wat is de gebruikersnaam voor deze account?"
-
-#  Type: string
-#  Description
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP-adres:"
@@ -133,7 +99,7 @@
 #  Description
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -148,7 +114,7 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Dit is nodig voor om de 'virtual hosting' van Apache in te stellen."
@@ -157,25 +123,43 @@
 #  Description
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
 msgstr "Wachtwoord van de @FORGENAME at -beheerder:"
 
+#  Type: string
+#  Description
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"De @FORGENAME at -beheerdersaccount krijgt volledige rechten binnen @FORGENAME at -"
+"systeem, en wordt gebruikt om nieuwe projecten goed te keuren."
+
 #  Type: password
 #  Description
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Wat is het wachtwoord van deze account?"
 
 #  Type: password
 #  Description
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Wachtwoordbevestiging:"
@@ -184,46 +168,11 @@
 #  Description
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Ter bevestiging dient het wachtwoord nogmaals ingevoerd te worden."
 
-#  Type: string
-#  Description
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Initiële lijst van vaardigheden:"
-
-#  Type: string
-#  Description
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ geeft gebruikers de mogelijkheid om een lijst met hun "
-"vaardigheden op te geven, gekozen uit deze aanwezig in de database. Dit is "
-"de de initiële lijst van vaardigheden voor de database."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Gelieve een met puntkomma's gescheiden lijst van vaardigheidsnamen in te "
-"voeren."
-
 #  Type: boolean
 #  Description
 #. Type: boolean
@@ -290,8 +239,8 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ verstuurt en ontvangt een heleboel e-mails van en naar  het "
 "adres '${noreply}'."
@@ -828,3 +777,39 @@
 msgstr ""
 "Wat wordt het standaardthema voor webpagina's? Dit dient een geldige naam te "
 "zijn."
+
+#  Type: string
+#  Description
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Gebruikersnaam @FORGENAME at -beheerder:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Wat is de gebruikersnaam voor deze account?"
+
+#  Type: string
+#  Description
+#~ msgid "Initial list of skills:"
+#~ msgstr "Initiële lijst van vaardigheden:"
+
+#  Type: string
+#  Description
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ geeft gebruikers de mogelijkheid om een lijst met hun "
+#~ "vaardigheden op te geven, gekozen uit deze aanwezig in de database. Dit "
+#~ "is de de initiële lijst van vaardigheden voor de database."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Gelieve een met puntkomma's gescheiden lijst van vaardigheidsnamen in te "
+#~ "voeren."

Modified: branches/messer-51/src/debian/dsf-po/pt.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/pt.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/pt.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -6,11 +6,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@ 4.6.99+svn6387-1\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2010-10-03 21:23+0200\n"
 "Last-Translator: Ricardo Silva <ardoric at gmail.com>\n"
 "Language-Team: Portuguese <traduz at debianpt.org>\n"
+"Language: pt\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -71,44 +72,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#, fuzzy
-#| msgid "@FORGENAME@ administrator login:"
-msgid "@FORGENAME@ administrator login:"
-msgstr "Login do administrador do @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-#, fuzzy
-#| msgid ""
-#| "The @FORGENAME@ administrator account will have full privileges on the "
-#| "system. It will be used to approve the creation of new projects."
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"A conta de administrador do @FORGENAME@ terá privilégios totais sobre o "
-"sistema. Será usada para aprovar a criação de novos projectos."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Por favor escolha o nome de utilizador para esta conta."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "Endereço IP:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 #, fuzzy
 #| msgid ""
@@ -123,14 +93,14 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Isto é necessário para a configuração de 'virtual hosts' do Apache."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #, fuzzy
 #| msgid "@FORGENAME@ administrator password:"
 msgid "@FORGENAME@ administrator password:"
@@ -138,61 +108,45 @@
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"A conta de administrador do @FORGENAME@ terá privilégios totais sobre o "
+"sistema. Será usada para aprovar a criação de novos projectos."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Por favor escolha a palavra-passe para esta conta."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Confirmação da palavra-passe:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Por favor, reescreva a palavra-passe para confirmação."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Lista inicial de competências:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-#, fuzzy
-#| msgid ""
-#| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
-#| "from those present in the database. This list is the initial list of "
-#| "skills that will enter the database."
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"O @FORGENAME@ permite que os utilizadores definam uma lista com as suas "
-"competências, a serem escolhidas de entre aquelas que estão na base de "
-"dados. Esta lista é a lista inicial de competências que irão figurar na base "
-"de dados."
-
-#. Type: string
-#. Description
-#: ../gforge-db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-"Por favor introduza uma lista de nomes de capacidades, separadas pelo "
-"símbolo ponto-e-vírgula (;)."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
 #. (cvs, svn, etc.)
-#: ../gforge-dns-bind9.templates.dsfh-in:3001
+#: ../dsf-in/dns-bind9.templates.dsfh-in:3001
 msgid "Do you want a simple DNS setup for @FORGENAME@?"
 msgstr "Deseja uma configuração simples de DNS no @FORGENAME@?"
 
@@ -200,7 +154,7 @@
 #. Description
 #. Translators: SCM here means "Source Control Management"
 #. (cvs, svn, etc.)
-#: ../gforge-dns-bind9.templates.dsfh-in:3001
+#: ../dsf-in/dns-bind9.templates.dsfh-in:3001
 msgid ""
 "You can use a simple DNS setup with wildcards to map all project web-hosts "
 "to a single IP address, and direct all the scm-hosts to a single SCM server, "
@@ -217,7 +171,7 @@
 #. Description
 #. Translators: SCM here means "Source Control Management"
 #. (cvs, svn, etc.)
-#: ../gforge-dns-bind9.templates.dsfh-in:3001
+#: ../dsf-in/dns-bind9.templates.dsfh-in:3001
 msgid ""
 "Even if you use a simple DNS setup, you can still use separate machines as "
 "project servers; it just assumes that all the project web directories are on "
@@ -242,8 +196,8 @@
 #| "@FORGENAME@ sends and receives plenty of e-mail to and from the "
 #| "\"${noreply}\" address."
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "O @FORGENAME@ envia e recebe bastante e-mail para e a partir do endereço "
 "\"${noreply}\"."
@@ -393,7 +347,8 @@
 #. Description
 #: ../dsf-helper/downloadhost-variables.templates:2001
 msgid ""
-"Please enter the host name of the server that will host the @FORGENAME@ packages."
+"Please enter the host name of the server that will host the @FORGENAME@ "
+"packages."
 msgstr ""
 "Por favor introduza o nome do servidor que irá guardar os pacotes do "
 "@FORGENAME at ."
@@ -444,8 +399,8 @@
 #. Description
 #: ../dsf-helper/lists-variables.templates:2001
 msgid ""
-"Please enter the host name of the server that will host the @FORGENAME@ mailing "
-"lists."
+"Please enter the host name of the server that will host the @FORGENAME@ "
+"mailing lists."
 msgstr ""
 "Por favor introduza o nome do servidor que irá guardar as listas de email do "
 "@FORGENAME at ."
@@ -661,5 +616,36 @@
 "Por favor escolha o tema pré-definido para as páginas web. Tem de introduzir "
 "um nome válido."
 
+#, fuzzy
+#~| msgid "@FORGENAME@ administrator login:"
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Login do administrador do @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Por favor escolha o nome de utilizador para esta conta."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Lista inicial de competências:"
+
+#, fuzzy
+#~| msgid ""
+#~| "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~| "from those present in the database. This list is the initial list of "
+#~| "skills that will enter the database."
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "O @FORGENAME@ permite que os utilizadores definam uma lista com as suas "
+#~ "competências, a serem escolhidas de entre aquelas que estão na base de "
+#~ "dados. Esta lista é a lista inicial de competências que irão figurar na "
+#~ "base de dados."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Por favor introduza uma lista de nomes de capacidades, separadas pelo "
+#~ "símbolo ponto-e-vírgula (;)."
+
 #~ msgid "admin"
 #~ msgstr "admin"

Modified: branches/messer-51/src/debian/dsf-po/ru.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/ru.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/ru.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,17 +7,18 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGENAME@ 4.8.2-1\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2010-01-02 10:03+0300\n"
 "Last-Translator: Yuri Kozlov <yuray at komyakino.ru>\n"
 "Language-Team: Russian <debian-l10n-russian at lists.debian.org>\n"
+"Language: ru\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #. Type: string
 #. Description
@@ -63,38 +64,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr "Учётная запись администратора @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Учётная запись администратора @FORGENAME@ будет иметь все привилегии в "
-"системе. Она будет использована для подтверждения создания новых проектов."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Введите имя пользователя учётной записи для этого."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP-адрес:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -105,61 +81,53 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Это нужно для настройки виртуального хостинга Apache."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr "Пароль администратора @FORGENAME@:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Учётная запись администратора @FORGENAME@ будет иметь все привилегии в "
+"системе. Она будет использована для подтверждения создания новых проектов."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Введите пароль для этой учётной записи."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Подтверждение пароля:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Введите пароль ещё раз для подтверждения."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Начальный список навыков:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ позволяет пользователям составить список своих навыков из "
-"имеющихся в базе данных. Запрашиваемый сейчас начальный список навыков будет "
-"введён в базу данных."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr "Введите названия навыков, разделяя их точкой с запятой."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -209,8 +177,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ посылает и принимает множество электронных писем на адрес "
 "\"${noreply}\"."
@@ -599,3 +567,24 @@
 msgstr ""
 "Выберите тему по умолчанию для веб-страниц. Должно быть указано допустимое "
 "имя."
+
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Учётная запись администратора @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Введите имя пользователя учётной записи для этого."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Начальный список навыков:"
+
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ позволяет пользователям составить список своих навыков из "
+#~ "имеющихся в базе данных. Запрашиваемый сейчас начальный список навыков "
+#~ "будет введён в базу данных."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr "Введите названия навыков, разделяя их точкой с запятой."

Modified: branches/messer-51/src/debian/dsf-po/sv.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/sv.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/sv.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,11 +7,12 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGENAME at _4.6.99+svn6580-1_sv\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2008-07-29 18:44+0200\n"
 "Last-Translator: Martin Ågren <martin.agren at gmail.com>\n"
 "Language-Team: Swedish <debian-l10n-swedish at lists.debian.org>\n"
+"Language: sv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -65,38 +66,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr "@FORGENAME at -administratörens användarnamn:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Administratörskontot för @FORGENAME@ kommer att ha alla rättigheter i "
-"@FORGENAME at -systemet. Det behövs för att godkänna skapandet av projekten."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Ange användarnamnet för detta konto."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "IP-adress:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -107,61 +83,53 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Detta krävs för att konfigurera Apaches virtuella värd."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr "@FORGENAME at -administratörens lösenord:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Administratörskontot för @FORGENAME@ kommer att ha alla rättigheter i "
+"@FORGENAME at -systemet. Det behövs för att godkänna skapandet av projekten."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Mata in lösenordet för detta konto."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Lösenordsbekräftelse:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Mata in lösenordet igen för bekräftelse."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Initiala listan över färdigheter:"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ låter användarna definiera en lista över sina färdigheter, som "
-"kan väljas av de som finns i databasen.  Denna lista är den initiala listan "
-"som kommer att läggas in i databasen."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr "Mata in namn på färdigheter, separerade med semikolon."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -211,8 +179,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ skickar och tar emot en mängd e-postmeddelanden till och från "
 "adressen \"${noreply}\"."
@@ -598,3 +566,24 @@
 msgid ""
 "Please choose the default theme for web pages. This must be a valid name."
 msgstr "Ange standardtemat för webbsidorna. Detta måste vara ett giltigt namn."
+
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "@FORGENAME at -administratörens användarnamn:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Ange användarnamnet för detta konto."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Initiala listan över färdigheter:"
+
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ låter användarna definiera en lista över sina färdigheter, "
+#~ "som kan väljas av de som finns i databasen.  Denna lista är den initiala "
+#~ "listan som kommer att läggas in i databasen."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr "Mata in namn på färdigheter, separerade med semikolon."

Modified: branches/messer-51/src/debian/dsf-po/templates.pot
===================================================================
--- branches/messer-51/src/debian/dsf-po/templates.pot	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/templates.pot	2012-04-07 14:10:47 UTC (rev 18260)
@@ -6,12 +6,13 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Project-Id-Version: fusionforge\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
+"Language: \n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -58,36 +59,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr ""
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr ""
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr ""
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -96,58 +74,45 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr ""
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr ""
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
 msgstr ""
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+msgid "Please choose the password for this forge account."
+msgstr ""
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr ""
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr ""
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr ""
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr ""
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -189,8 +154,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 
 #. Type: boolean

Modified: branches/messer-51/src/debian/dsf-po/vi.po
===================================================================
--- branches/messer-51/src/debian/dsf-po/vi.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/dsf-po/vi.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -6,15 +6,15 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: @PACKAGE@ 4.6.99+svn6387-1\n"
-"Report-Msgid-Bugs-To: gforge at packages.debian.org\n"
-"POT-Creation-Date: 2009-06-12 23:23+0200\n"
+"Report-Msgid-Bugs-To: fusionforge at packages.debian.org\n"
+"POT-Creation-Date: 2012-03-16 10:20+0100\n"
 "PO-Revision-Date: 2010-03-10 10:10+0200\n"
 "Last-Translator: Clytie Siddall <clytie at riverland.net.au>\n"
 "Language-Team: Vietnamese <vi-VN at googlegroups.com>\n"
+"Language: vi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Pootle 1.2.1\n"
 
@@ -61,38 +61,13 @@
 #. Type: string
 #. Description
 #: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "@FORGENAME@ administrator login:"
-msgstr "Tên đăng nhập quản trị @FORGENAME@:"
-
-#. Type: string
-#. Description
-#. Type: password
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid ""
-"The @FORGENAME@ administrator account will have full privileges on the "
-"system. It will be used to approve the creation of new projects."
-msgstr ""
-"Tài khoản quản trị @FORGENAME@ này sẽ được mọi quyền truy cập đến hệ thống. "
-"Nó dùng để tán thành việc tạo dự án mới."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
-msgid "Please choose the username for this account."
-msgstr "Hãy chọn tên người dùng cho tài khoản này."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "IP address:"
 msgstr "Địa chỉ IP:"
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid ""
 "Please enter the IP address of the server that will host the @FORGENAME@ "
@@ -101,61 +76,53 @@
 
 #. Type: string
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:8001
 #: ../dsf-helper/host-variables.templates:2001
 msgid "This is needed for the configuration of Apache virtual hosting."
 msgstr "Nó cần để cấu hình dịch vụ ảo Apache."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
 msgid "@FORGENAME@ administrator password:"
 msgstr "Mật khẩu quản trị @FORGENAME@:"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
-msgid "Please choose the password for this account."
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid ""
+#| "The @FORGENAME@ administrator account will have full privileges on the "
+#| "system. It will be used to approve the creation of new projects."
+msgid ""
+"The @FORGENAME@ administrator account will have full privileges on the "
+"forge. It will be used to approve the creation of new projects."
+msgstr ""
+"Tài khoản quản trị @FORGENAME@ này sẽ được mọi quyền truy cập đến hệ thống. "
+"Nó dùng để tán thành việc tạo dự án mới."
+
+#. Type: password
+#. Description
+#: ../dsf-in/db-postgresql.templates.dsfh-in:9001
+#, fuzzy
+#| msgid "Please choose the password for this account."
+msgid "Please choose the password for this forge account."
 msgstr "Hãy chọn mật khẩu cho tài khoản này."
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Password confirmation:"
 msgstr "Xác nhận mật khẩu :"
 
 #. Type: password
 #. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:11001
+#: ../dsf-in/db-postgresql.templates.dsfh-in:10001
 #: ../dsf-helper/dbpasswd-variables.templates:3001
 msgid "Please re-type the password for confirmation."
 msgstr "Hãy gõ lại mật khẩu để xác nhận nó."
 
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Initial list of skills:"
-msgstr "Danh sách kỹ năng ban đầu :"
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid ""
-"@FORGENAME@ allows users to define a list of their skills, to be chosen from "
-"those present in the database. This list is the initial list of skills that "
-"will enter the database."
-msgstr ""
-"@FORGENAME@ cho mỗi người dùng có khả năng xác định một danh sách các kỹ "
-"năng của mình, được chọn trong các điều nằm trong cơ sở dữ liệu. Danh sách "
-"này là danh sách kỹ năng ban đầu sẽ vào cơ sở dữ liệu."
-
-#. Type: string
-#. Description
-#: ../dsf-in/db-postgresql.templates.dsfh-in:12001
-msgid "Please enter a semicolon-separated list of skill names."
-msgstr "Hãy gõ danh sách các tên kỹ năng định giới bằng dấu chấm phẩy « ; »."
-
 #. Type: boolean
 #. Description
 #. Translators: SCM here means "Source Control Management"
@@ -205,8 +172,8 @@
 #. Description
 #: ../dsf-in/mta-postfix.templates.dsfh-in:3001
 msgid ""
-"@FORGENAME@ sends and receives plenty of e-mail to and from the \"${noreply}"
-"\" address."
+"@FORGENAME@ sends and receives plenty of e-mail to and from the "
+"\"${noreply}\" address."
 msgstr ""
 "@FORGENAME@ gửi và nhận rất nhiều thư điện tử cho/từ địa chỉ « ${noreply} »."
 
@@ -584,3 +551,25 @@
 msgid ""
 "Please choose the default theme for web pages. This must be a valid name."
 msgstr "Hãy chọn sắc thái mặc định cho trang Web: nó phải là một tên hợp lệ."
+
+#~ msgid "@FORGENAME@ administrator login:"
+#~ msgstr "Tên đăng nhập quản trị @FORGENAME@:"
+
+#~ msgid "Please choose the username for this account."
+#~ msgstr "Hãy chọn tên người dùng cho tài khoản này."
+
+#~ msgid "Initial list of skills:"
+#~ msgstr "Danh sách kỹ năng ban đầu :"
+
+#~ msgid ""
+#~ "@FORGENAME@ allows users to define a list of their skills, to be chosen "
+#~ "from those present in the database. This list is the initial list of "
+#~ "skills that will enter the database."
+#~ msgstr ""
+#~ "@FORGENAME@ cho mỗi người dùng có khả năng xác định một danh sách các kỹ "
+#~ "năng của mình, được chọn trong các điều nằm trong cơ sở dữ liệu. Danh "
+#~ "sách này là danh sách kỹ năng ban đầu sẽ vào cơ sở dữ liệu."
+
+#~ msgid "Please enter a semicolon-separated list of skill names."
+#~ msgstr ""
+#~ "Hãy gõ danh sách các tên kỹ năng định giới bằng dấu chấm phẩy « ; »."

Modified: branches/messer-51/src/debian/evolvis.postinst
===================================================================
--- branches/messer-51/src/debian/evolvis.postinst	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/evolvis.postinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -38,11 +38,11 @@
 	fi
 
 	if test -z "$2" || \
-	    dpkg --compare-versions "$2" lt 5.1.1+evolvis7.2; then
-		# fresh installation or upgrade from <= evolvis 7.2 (beta)
-		# => create a template project for evolvis 8 (beta)
+	    dpkg --compare-versions "$2" lt 5.1.1+evolvis52; then
+		# fresh installation or upgrade from <= evolvis 52
+		# => create a template project for evolvis 52
 		/usr/share/gforge/bin/populate_template_project.php \
-		    new evtemplate8 'Evolvis Template v8'
+		    new evtemplate52 'Evolvis Template v52'
 	fi
 	;;
 

Copied: branches/messer-51/src/debian/fusionforge-plugin-scmgit.preinst (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/debian/fusionforge-plugin-scmgit.preinst)
===================================================================
--- branches/messer-51/src/debian/fusionforge-plugin-scmgit.preinst	                        (rev 0)
+++ branches/messer-51/src/debian/fusionforge-plugin-scmgit.preinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,40 @@
+#!/bin/sh
+# preinst script for fusionforge-plugin-scmgit
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case $1 in
+install|upgrade)
+	# replace symlink accident with directory
+	if test -h /usr/share/gforge/www/plugins/scmgit; then
+		rm -f /usr/share/gforge/www/plugins/scmgit
+		mkdir /usr/share/gforge/www/plugins/scmgit
+	fi
+	;;
+
+abort-upgrade)
+	;;
+
+*)
+	echo "preinst called with unknown argument \`$1'" >&2
+	exit 1
+	;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0

Copied: branches/messer-51/src/debian/gforge-plugin-mediawiki.postrm (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/debian/gforge-plugin-mediawiki.postrm)
===================================================================
--- branches/messer-51/src/debian/gforge-plugin-mediawiki.postrm	                        (rev 0)
+++ branches/messer-51/src/debian/gforge-plugin-mediawiki.postrm	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,54 @@
+#!/bin/sh
+# postrm script for gforge-plugin-mediawiki
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <overwriter>
+#          <overwriter-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+# inspired by: Debian Policy Manual 
+# Appendix G - Diversions - overriding a package's version of a file
+undivert=0
+
+case "$1" in
+    remove|abort-install|disappear)
+	undivert=1
+    ;;
+
+    abort-upgrade)
+	dpkg --compare-versions "$2" lt 4.8.3+evolvis26.2 && undivert=1
+    ;;
+
+    purge|upgrade|failed-upgrade)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+if test $undivert = 1; then
+	f=/usr/share/mediawiki/languages/messages/MessagesEn.php
+	dpkg-divert --package gforge-plugin-mediawiki --rename \
+	    --divert "${f}.orig" --remove "$f"
+fi
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0

Copied: branches/messer-51/src/debian/gforge-plugin-mediawiki.preinst (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/debian/gforge-plugin-mediawiki.preinst)
===================================================================
--- branches/messer-51/src/debian/gforge-plugin-mediawiki.preinst	                        (rev 0)
+++ branches/messer-51/src/debian/gforge-plugin-mediawiki.preinst	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,67 @@
+#!/bin/sh
+# preinst script for gforge-plugin-mediawiki
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+	# according to: Debian Policy Manual 
+	# Appendix G - Diversions - overriding a package's version of a file
+	f=/usr/share/mediawiki/languages/messages/MessagesEn.php
+	x=$(dpkg-divert --list "$f")
+	test -n "$x" || dpkg-divert --package gforge-plugin-mediawiki \
+	    --rename --divert "${f}.orig" --add "$f"
+
+	if test x"$1" = x"upgrade" && \
+	    test -d /var/lib/gforge/plugins/mediawiki/wikidata && \
+	    dpkg --compare-versions "$2" lt 4.8.3+evolvis34; then
+		(cd /var/lib/gforge/plugins/mediawiki/wikidata
+		converted=0
+		for d in */private; do
+			test -e "$d" && converted=1
+			break
+		done
+		for d in */is_public */is_private; do
+			test -e "$d" && converted=0
+			break
+		done
+		test $converted = 1 || for d in *; do
+			test -d "$d/." || continue
+			rm -f "$d/private"
+			private=0
+			test -e "$d/is_public" || private=1
+			echo $private >"$d/private"
+			chown 0:www-data "$d/private"
+			chmod 0664 "$d/private"
+			rm -f "$d/is_public" "$d/is_private"
+		done)
+	fi
+
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0

Modified: branches/messer-51/src/debian/rules
===================================================================
--- branches/messer-51/src/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -173,7 +173,7 @@
 	rm -f $(CURDIR)/debian/README.Debian
 	rm -rf locales
 
-	rm -f $(POFILES)
+	rm -f $(POFILES) $(PPOSTINST) $(PPRERM)
 
 	perl $(CURDIR)/deb-specific/dsf-helper.pl --clean
 

Modified: branches/messer-51/src/docs/README.html:EvolvisTable
===================================================================
--- branches/messer-51/src/docs/README.html:EvolvisTable	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/docs/README.html:EvolvisTable	2012-04-07 14:10:47 UTC (rev 18260)
@@ -25,6 +25,13 @@
   the table width. For a headless table, $title_arr[0] === false,
   but it still m̲u̲s̲t̲ be filled in.
 
+  Members of $title_arr may be arrays themselves. If so, they must
+  be indexed and have two members, [0] being the text, [1] being
+  an array suitable for passing as HTML attributes to html_ao().
+  Default attributes will be applied to it but not overwrite the
+  supplied attributes; the default CSS class is prepended, no matter
+  whether unset, string or array, to $title_arr[$i][1]['class'].
+
   If $links_arr is set, it’s expected to be of equal magnitude as
   $title_arr and makes the <th> content be hyperlinks to the targets
   respective. (See Theme.class.php $HTML->listTableTop() for info.)

Modified: branches/messer-51/src/docs/README.html:utils
===================================================================
--- branches/messer-51/src/docs/README.html:utils	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/docs/README.html:utils	2012-04-07 14:10:47 UTC (rev 18260)
@@ -38,6 +38,40 @@
   Undo util_html_encode; be careful, this can decode partially.
 
 
+• string util_gethref(optional(false) string $baseurl,
+    optional(empty) array $args, optional(true) bool $ashtml,
+    optional('&') string $sep)
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ));
+	⇒ "/x.php?foo=a%2Bb%26c&bar=d%2Bb%26e"
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ), false);
+	⇒ /x.php?foo=a%2Bb%26c&bar=d%2Bb%26e
+
+	util_gethref("/x.php", array(
+		'foo' => 'a+b&c',
+		'bar' => 'd+b&e',
+	    ), true, ';')
+	⇒ "/x.php?foo=a%2Bb%26c;bar=d%2Bb%26e"
+
+  Construct an URI for use with util_make_url, session_redirect,
+  html_e('a', array('href' => …)), and similar. The first argument
+  ($baseurl) is passed through as-is but, if falsy, defaults to
+  getStringFromServer('PHP_SELF'); the arguments (both keys and
+  values) are urlencoded (entries while values is false are not
+  emitted at all) and appended, with a question mark in front and
+  the $sep separator in between.
+
+  If $ashtml is true (default), the result will then be run through
+  util_html_encode; set this to false when using in html_e href as
+  value (since html_e will html-encode itself).
+
 • string util_make_url(string $path)
 
 	util_make_url('/foo.php?a=1&b=2')
@@ -46,6 +80,9 @@
   Return an absolute URI for the path in question, containing the
   system-defined protocol, hostname and (if defined) webroot prefix.
 
+  Both html-encoded and not html-encoded return values of util_gethref
+  are safe to pass as arguments, if their baseurl was only a path.
+
 • string util_tasktracker_links(string $s)
 
   Convert references of the form [#123], [T456], [forum:789], [wiki:Foo]

Modified: branches/messer-51/src/etc/config.ini.d/debug.ini
===================================================================
--- branches/messer-51/src/etc/config.ini.d/debug.ini	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/config.ini.d/debug.ini	2012-04-07 14:10:47 UTC (rev 18260)
@@ -22,7 +22,5 @@
 
 ; output validation (if sysdebug_enable)
 
-; XHTML/1.0 Transitional validation using xmlstarlet and the DTD
+; XHTML/1.0 Transitional + RDFa validation using xmlstarlet and the DTD
 sysdebug_xmlstarlet = false
-; Akelos validator; apparently XHTML/1.0 Strict or XHTML/1.1 (?)
-sysdebug_akelos = false

Modified: branches/messer-51/src/etc/config.ini.d/defaults.ini
===================================================================
--- branches/messer-51/src/etc/config.ini.d/defaults.ini	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/config.ini.d/defaults.ini	2012-04-07 14:10:47 UTC (rev 18260)
@@ -48,7 +48,6 @@
 sendmail_path = "/usr/sbin/sendmail"
 show_source = no
 stats_group = 3
-template_group = 5
 unix_cipher = MD5
 url_prefix = "/"
 use_docman = yes

Modified: branches/messer-51/src/etc/httpd.conf.d/20-vhosts-lists.conf
===================================================================
--- branches/messer-51/src/etc/httpd.conf.d/20-vhosts-lists.conf	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/httpd.conf.d/20-vhosts-lists.conf	2012-04-07 14:10:47 UTC (rev 18260)
@@ -8,6 +8,10 @@
   RewriteEngine on  
   RewriteRule ^/$ http://%{HTTP_HOST}/cgi-bin/mailman/listinfo [R=301]
   
+  <Directory />
+    Include {core/config_path}/httpd.conf.d/auth-main.inc
+  </Directory>
+
   Include {core/config_path}/httpd.conf.d/block-trace.inc
   Include {core/config_path}/httpd.conf.d/log.inc
   Include {core/config_path}/httpd.conf.d/ssl-off.inc
@@ -19,6 +23,10 @@
   RewriteEngine on  
   RewriteRule ^/$ https://%{HTTP_HOST}/cgi-bin/mailman/listinfo [R=301]
   
+  <Directory />
+    Include {core/config_path}/httpd.conf.d/auth-main.inc
+  </Directory>
+
   Include {core/config_path}/httpd.conf.d/block-trace.inc
   Include {core/config_path}/httpd.conf.d/log.inc
   Include {core/config_path}/httpd.conf.d/ssl-on.inc

Modified: branches/messer-51/src/etc/httpd.conf.d/log.inc
===================================================================
--- branches/messer-51/src/etc/httpd.conf.d/log.inc	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/httpd.conf.d/log.inc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 # Custom logging
 
 LogFormat "%h %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" fusionforge
-CustomLog {core/log_path}/access.log fusionforge
+#CustomLog {core/log_path}/access.log fusionforge
 LogFormat "%{Host}i %h %l %u %t %{SSL_PROTOCOL}x:%{SSL_CIPHER}x \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhssl
-CustomLog {core/log_path}/awstats.log combinedvhssl
+#CustomLog {core/log_path}/awstats.log combinedvhssl
 CustomLog "|/usr/bin/cronolog {core/log_path}/%Y/%m/%d/awstats.log" combinedvhssl

Modified: branches/messer-51/src/etc/httpd.conf.d/vhost-list.inc
===================================================================
--- branches/messer-51/src/etc/httpd.conf.d/vhost-list.inc	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/httpd.conf.d/vhost-list.inc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 ServerName {core/lists_host}
 
-RedirectMatch permanent ^/$ http://{core/web_host}/mailman/listinfo
-RedirectMatch permanent ^/(pipermail/.*) http://{core/web_host}/$1
-RedirectMatch permanent ^/(mailman/.*) http://{core/web_host}/$1
-RedirectMatch permanent ^/cgi-bin/(mailman/.*) http://{core/web_host}/$1
-RedirectMatch permanent ^/(images/mailman/.*) http://{core/web_host}/mailman/$1
+RedirectMatch permanent ^/$ https://{core/web_host}/mailman/listinfo
+RedirectMatch permanent ^/(pipermail/.*) https://{core/web_host}/$1
+RedirectMatch permanent ^/(mailman/.*) https://{core/web_host}/$1
+RedirectMatch permanent ^/cgi-bin/(mailman/.*) https://{core/web_host}/$1
+RedirectMatch permanent ^/(images/mailman/.*) https://{core/web_host}/mailman/$1

Modified: branches/messer-51/src/etc/httpd.conf.d/vhost-main.inc
===================================================================
--- branches/messer-51/src/etc/httpd.conf.d/vhost-main.inc	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/httpd.conf.d/vhost-main.inc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -33,7 +33,7 @@
   
 AddHandler cgi-script .cgi
 ScriptAlias /mailman/ /usr/lib/cgi-bin/mailman/
-RedirectMatch permanent ^/cgi-bin/(mailman/.*) http://{core/web_host}/$1
+RedirectMatch permanent ^/cgi-bin/(mailman/.*) https://{core/web_host}/$1
 
 Alias /pipermail /var/lib/mailman/archives/public
 <Directory /var/lib/mailman/archives/public>
@@ -41,4 +41,4 @@
     Options FollowSymLinks
 </Directory>
 
-RedirectMatch 301 ^/wsdl(/.*)*$ https://evolvis.org/scm/viewvc.php/evolvis/trunk/gforge_base/evolvisforge/gforge/www/soap/
+RedirectMatch 301 ^/wsdl(/.*)*$ https://evolvis.org/scm/viewvc.php/evolvis/trunk/gforge_base/evolvisforge-5.1/src/www/soap/

Modified: branches/messer-51/src/etc/local.d/24debug
===================================================================
--- branches/messer-51/src/etc/local.d/24debug	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/local.d/24debug	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,8 +24,6 @@
 
 /* output validation (if sysdebug_enable) */
 
-// XHTML/1.0 Transitional validation using xmlstarlet and the DTD
+// XHTML/1.0 Transitional + RDFa validation using xmlstarlet and the DTD
 $sysdebug_xmlstarlet = false;
-// Akelos validator; apparently XHTML/1.0 Strict or XHTML/1.1 (?)
-$sysdebug_akelos = false;
 

Modified: branches/messer-51/src/etc/local.d/30homegroupother
===================================================================
--- branches/messer-51/src/etc/local.d/30homegroupother	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/local.d/30homegroupother	2012-04-07 14:10:47 UTC (rev 18260)
@@ -77,7 +77,6 @@
 $sys_news_group={newsadmin_groupid};
 $sys_stats_group={statsadmin_groupid};
 $sys_peer_rating_group={peerrating_groupid};
-$sys_template_group={template_project};
 $default_trove_cat={default_trove_cat};
 
 // JPGRAPH Package

Modified: branches/messer-51/src/etc/local.inc.example
===================================================================
--- branches/messer-51/src/etc/local.inc.example	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/etc/local.inc.example	2012-04-07 14:10:47 UTC (rev 18260)
@@ -282,7 +282,6 @@
 $sys_news_group=2;
 $sys_stats_group=3;
 $sys_peer_rating_group=4;
-$sys_template_group=5;
 $default_trove_cat=18;
 
 // JPGRAPH Package

Modified: branches/messer-51/src/packaging/control/020common
===================================================================
--- branches/messer-51/src/packaging/control/020common	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/020common	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,7 @@
 Package: @OLDPACKAGE at -common
 Architecture: all
-Depends: debconf (>= 1.0.32) | debconf-2.0, ucf, cpio, lockfile-progs, adduser, php5-cli, php-htmlpurifier (>= 4.0), libphp-simplepie (>= 1.2-2+tarent1), libphp-simplepie (<< 1.2-3~~), python, mksh, xz-utils, sudo, w3c-dtd-xhtml, xmlstarlet, libbsd-arc4random-perl, ${misc:Depends}
+Depends: debconf (>= 1.0.32) | debconf-2.0, ucf, pax (>= 1:20120216-1~), lockfile-progs, adduser, php5-cli, php-htmlpurifier (>= 4.0), libphp-simplepie (>= 1.2-2+tarent1), libphp-simplepie (<< 1.2-3~~) | libphp-simplepie (>= 1.2.1-2~), python, mksh, xz-utils, sudo, w3c-dtd-xhtml, xmlstarlet, libbsd-arc4random-perl, ${misc:Depends}
 Recommends: php5-perl (>= 1.0.0-2~), libauthen-passphrase-perl
 Conflicts: sourceforge, @OLDPACKAGE at -plugin-scmcvs (<< 4.1), @OLDPACKAGE at -plugin-scmsvn (<< 4.1), @OLDPACKAGE at -plugin-scmccase (<< 4.1), @OLDPACKAGE at -theme-starterpack (<< 4.0)
+Provides: evolvisforge-common
 Description: collaborative development tool - shared files

Modified: branches/messer-51/src/packaging/control/030web-apache2
===================================================================
--- branches/messer-51/src/packaging/control/030web-apache2	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/030web-apache2	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 Package: @OLDPACKAGE at -web-apache2
 Architecture: all
-Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, libapache2-mod-php5 (>= 5.2), php5-cgi (>= 5.2), php5-pgsql, php5-gd, perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, cronolog, python, ssl-cert, libnusoap-php, php-htmlpurifier (>= 4.0), libjs-yui (>= 2.8.2r1~squeeze-1.1~), libjs-prototype (>= 1.7.0-2.1~), libjs-scriptaculous (>= 1.9.0-2~), libjs-jquery (>= 1.6.4-1~), libjs-jquery-ui (>= 1.8.ooops.16+dfsg-1~), libphp-jpgraph, tango-icon-theme, toilet, ${misc:Depends}
+Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, libapache2-mod-php5 (>= 5.2), php5-cgi (>= 5.2), php5-pgsql, php5-gd, perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, cronolog, python, ssl-cert, libnusoap-php, libjs-yui (>= 2.8.2r1~squeeze-1.1~tarent), libjs-yui (<< 2.8.2r1~squeeze-1.1~tarenu), libjs-prototype (>= 1.7.0-2.1~tarent), libjs-prototype (<< 1.7.0-2.1~tarenu), libjs-scriptaculous (>= 1.9.0-2~), libjs-jquery (>= 1.6.4-1~), libjs-jquery-ui (>= 1.8.ooops.16+dfsg-1~), libphp-jpgraph, tango-icon-theme, toilet, ${misc:Depends}
 Recommends: locales | locales-all
-Provides: @OLDPACKAGE at -web
+Provides: @OLDPACKAGE at -web, evolvisforge-web-apache2
 Conflicts: @OLDPACKAGE at -web
 Description: collaborative development tool - web part (using Apache)

Modified: branches/messer-51/src/packaging/control/050db-postgresql
===================================================================
--- branches/messer-51/src/packaging/control/050db-postgresql	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/050db-postgresql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 Package: @OLDPACKAGE at -db-postgresql
 Architecture: all
 Depends: @OLDPACKAGE at -common, postgresql (>= 8.4), perl, libdbi-perl, libdbd-pg-perl, libmime-base64-perl, libhtml-parser-perl, libtext-autoformat-perl, libmail-sendmail-perl, libsort-versions-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, php5-cli, php5-pgsql, ${misc:Depends}
-Provides: @OLDPACKAGE at -db
+Provides: @OLDPACKAGE at -db, evolvisforge-db-postgresql
 Conflicts: @OLDPACKAGE at -db
 Description: collaborative development tool - database (using PostgreSQL)

Modified: branches/messer-51/src/packaging/control/070mta-postfix
===================================================================
--- branches/messer-51/src/packaging/control/070mta-postfix	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/070mta-postfix	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 Package: @OLDPACKAGE at -mta-postfix
 Architecture: all
-Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, postfix, postfix-pgsql, ${misc:Depends}
-Provides: @OLDPACKAGE at -mta
+Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, postfix, postfix-pgsql, postgrey, ${misc:Depends}
+Provides: @OLDPACKAGE at -mta, evolvisforge-mta-postfix
 Conflicts: @OLDPACKAGE at -mta
 Description: collaborative development tool - mail tools (using Postfix)

Modified: branches/messer-51/src/packaging/control/070mta-postfix.shortdesc
===================================================================
--- branches/messer-51/src/packaging/control/070mta-postfix.shortdesc	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/070mta-postfix.shortdesc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,2 +1,4 @@
  This package configures the Postfix mail transfer agent to run
  FusionForge.
+ .
+ This package also configures Greylisting using Postgrey.

Modified: branches/messer-51/src/packaging/control/090shell-postgresql
===================================================================
--- branches/messer-51/src/packaging/control/090shell-postgresql	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/090shell-postgresql	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 Package: @OLDPACKAGE at -shell-postgresql
 Architecture: all
 Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql, perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, openssh-server, libnss-pgsql2, unscd, ${misc:Depends}
-Provides: @OLDPACKAGE at -shell
+Provides: @OLDPACKAGE at -shell, evolvisforge-shell-postgresql
 Conflicts: @OLDPACKAGE at -shell
 Description: collaborative development tool - shell accounts (using PostgreSQL)

Modified: branches/messer-51/src/packaging/control/120lists-mailman
===================================================================
--- branches/messer-51/src/packaging/control/120lists-mailman	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/120lists-mailman	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,6 +1,6 @@
 Package: @OLDPACKAGE at -lists-mailman
 Architecture: all
-Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, @OLDPACKAGE at -mta-exim4 | @OLDPACKAGE at -mta, apache2 (>= 2.0.52), perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, mailman (>= 2.1-3), ${misc:Depends}
-Provides: @OLDPACKAGE at -lists
+Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, @OLDPACKAGE at -mta-exim4 | @OLDPACKAGE at -mta, apache2 (>= 2.0.52), perl, libdbi-perl, libdbd-pg-perl, debianutils (>= 1.7), debconf (>= 1.0.32) | debconf-2.0, ucf, mailman (>= 2.1-3), evolvis-mailman-lenny | evolvis-mailman-wheezy, ${misc:Depends}
+Provides: @OLDPACKAGE at -lists, evolvisforge-lists-mailman
 Conflicts: @OLDPACKAGE at -lists
 Description: collaborative development tool - mailing-lists (using Mailman)

Modified: branches/messer-51/src/packaging/control/900evolvis-meta
===================================================================
--- branches/messer-51/src/packaging/control/900evolvis-meta	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/900evolvis-meta	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,10 +7,19 @@
  @OLDPACKAGE at -db-postgresql, @OLDPACKAGE at -mta-postfix,
  @OLDPACKAGE at -shell-postgresql, @OLDPACKAGE at -lists-mailman,
  @PACKAGE at -plugin-scmgit, @PACKAGE at -plugin-scmsvn,
- evolvis-anonsvnsh, locales-all,
+ evolvis-anonsvnsh,
+ locales-all | locales,
+ locales-all | language-pack-de,
+ locales-all | language-pack-en,
  @PACKAGE at -plugin-extratabs, @PACKAGE at -plugin-projectlabels,
  @PACKAGE at -plugin-mediawiki, mediawiki-extensions-base (>= 2.4~),
  mediawiki-math, mediawiki-extensions-collection,
- mediawiki-extensions-geshi, mediawiki-extensions-graphviz
+ mediawiki-extensions-geshi, mediawiki-extensions-graphviz,
+ evolvisforge-common, evolvisforge-web-apache2,
+ evolvisforge-db-postgresql, evolvisforge-mta-postfix,
+ evolvisforge-shell-postgresql, evolvisforge-lists-mailman,
+ evolvisforge-plugin-scmgit, evolvisforge-plugin-scmsvn,
+ evolvisforge-plugin-extratabs,
+ evolvisforge-plugin-mediawiki-gf, evolvisforge-plugin-mediawiki-ff
 Provides: fusionforge
 Description: collaborative development tool - metapackage

Copied: branches/messer-51/src/packaging/control/901evolvis-mediawiki (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/packaging/control/901evolvis-mediawiki)
===================================================================
--- branches/messer-51/src/packaging/control/901evolvis-mediawiki	                        (rev 0)
+++ branches/messer-51/src/packaging/control/901evolvis-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,5 @@
+Package: @OLDPACKAGE at -plugin-mediawiki
+Architecture: all
+Depends: @PACKAGE at -plugin-mediawiki, ${misc:Depends}
+Provides: evolvisforge-plugin-mediawiki-gf
+Description: Mediawiki plugin for Evolvis

Copied: branches/messer-51/src/packaging/control/901evolvis-mediawiki.shortdesc (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/packaging/control/901evolvis-mediawiki.shortdesc)
===================================================================
--- branches/messer-51/src/packaging/control/901evolvis-mediawiki.shortdesc	                        (rev 0)
+++ branches/messer-51/src/packaging/control/901evolvis-mediawiki.shortdesc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,8 @@
+ This package is needed at the moment as it contains a file which
+ diverts a file in the mediawiki package, and the diversion cannot
+ be moved to @PACKAGE at -plugin-mediawiki currently.
+ .
+ The long-term solution would probably be to make the location of
+ the message files configurable in src:mediawiki, then provide a
+ new location in @PACKAGE at -plugin-mediawiki and get rid of this
+ @OLDPACKAGE at -plugin-mediawiki package.

Modified: branches/messer-51/src/packaging/control/999transitional
===================================================================
--- branches/messer-51/src/packaging/control/999transitional	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/control/999transitional	2012-04-07 14:10:47 UTC (rev 18260)
@@ -12,13 +12,6 @@
  This package is only present for transitional purposes and can be
  safely removed.
 
-Package: @OLDPACKAGE at -plugin-mediawiki
-Architecture: all
-Depends: @PACKAGE at -plugin-mediawiki, ${misc:Depends}
-Description: Mediawiki plugin for FusionForge (transitional package)
- This package is only present for transitional purposes and can be
- safely removed.
-
 Package: @OLDPACKAGE at -plugin-projectlabels
 Architecture: all
 Depends: @PACKAGE at -plugin-projectlabels, ${misc:Depends}

Copied: branches/messer-51/src/packaging/cron.d/plugin-mediawiki (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/packaging/cron.d/plugin-mediawiki)
===================================================================
--- branches/messer-51/src/packaging/cron.d/plugin-mediawiki	                        (rev 0)
+++ branches/messer-51/src/packaging/cron.d/plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,2 @@
+# force a non-empty nop cron.d file
+# to get rid of the one 4.8 shipped

Modified: branches/messer-51/src/packaging/install/common
===================================================================
--- branches/messer-51/src/packaging/install/common	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/packaging/install/common	2012-04-07 14:10:47 UTC (rev 18260)
@@ -2,6 +2,7 @@
 etc/config.ini.d/defaults.ini          etc/@PACKAGE@/config.ini.d/
 etc/config.ini.d/debug.ini             etc/@PACKAGE@/config.ini.d/
 etc/config.ini.d/evolvis.ini           etc/@PACKAGE@/config.ini.d/
+etc/config.ini.d/evolvis-improvetasks.ini etc/@PACKAGE@/config.ini.d/
 etc/httpd.d/[0-1,6-9][0-9]*            usr/share/@OLDPACKAGE@/etc/httpd.d/
 etc/httpd.d/httpd*                     usr/share/@OLDPACKAGE@/etc/httpd.d/
 etc/local.d/[0-9][0-9]*                usr/share/@OLDPACKAGE@/etc/local.d/
@@ -31,3 +32,4 @@
 cronjobs/generate_scm_snapshots.php    usr/share/@OLDPACKAGE@/cronjobs/
 locales/*                              usr/share/locale/
 utils/user-del.php                     usr/share/@OLDPACKAGE@/bin/
+utils/scm-newsubrepo.php               usr/share/@OLDPACKAGE@/bin/

Copied: branches/messer-51/src/packaging/install/plugin-mediawiki (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/packaging/install/plugin-mediawiki)
===================================================================
--- branches/messer-51/src/packaging/install/plugin-mediawiki	                        (rev 0)
+++ branches/messer-51/src/packaging/install/plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1 @@
+plugins/mediawiki/mw-override/MessagesEn.php usr/share/mediawiki/languages/messages/

Copied: branches/messer-51/src/packaging/links/lists-mailman (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/packaging/links/lists-mailman)
===================================================================
--- branches/messer-51/src/packaging/links/lists-mailman	                        (rev 0)
+++ branches/messer-51/src/packaging/links/lists-mailman	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1 @@
+usr/share/images/mailman usr/share/@OLDPACKAGE@/www/images/mailman

Modified: branches/messer-51/src/plugins/blocks/packaging/install/plugin-blocks
===================================================================
--- branches/messer-51/src/plugins/blocks/packaging/install/plugin-blocks	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/blocks/packaging/install/plugin-blocks	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,5 +1,5 @@
 plugins/blocks/common/*               usr/share/@OLDPACKAGE@/plugins/blocks/common/
 plugins/blocks/db/*                   usr/share/@OLDPACKAGE@/plugins/blocks/db/
 plugins/blocks/www/*                  usr/share/@OLDPACKAGE@/plugins/blocks/www/
-plugins/blocks/etc/plugins/blocks/*   etc/@OLDPACKAGE@/plugins/blocks/
+plugins/blocks/etc/plugins/blocks/*   etc/@PACKAGE@/plugins/blocks/
 plugins/blocks/etc/*.ini              etc/@PACKAGE@/config.ini.d/

Modified: branches/messer-51/src/plugins/externalsearch/bin/db-upgrade.pl
===================================================================
--- branches/messer-51/src/plugins/externalsearch/bin/db-upgrade.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/externalsearch/bin/db-upgrade.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -74,8 +74,6 @@
     if (is_lesser $version, $target) {
 	debug "Adding local data." ;
 	
-	do "/etc/gforge/local.pl" or die "Cannot read /etc/gforge/local.pl" ;
-	
 	my $ip_address = qx/host $domain_name | awk '{print \}'/ ;
 	
 	@reqlist = (

Modified: branches/messer-51/src/plugins/extratabs/packaging/control/170plugin-extratabs
===================================================================
--- branches/messer-51/src/plugins/extratabs/packaging/control/170plugin-extratabs	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/extratabs/packaging/control/170plugin-extratabs	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 Package: @PACKAGE at -plugin-extratabs
 Architecture: all
 Depends: @OLDPACKAGE at -common (>= 4.6.99), @OLDPACKAGE at -db-postgresql (>= 4.6.99) | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 (>= 4.6.99) | @OLDPACKAGE at -web, ${misc:Depends}
-Provides: @OLDPACKAGE at -plugin-extratabs
+Provides: @OLDPACKAGE at -plugin-extratabs, evolvisforge-plugin-extratabs
 Conflicts: @OLDPACKAGE at -plugin-extratabs (<< 5.0.51-2)
 Replaces: @OLDPACKAGE at -plugin-extratabs (<< 5.0.51-2)
 Description: Extratabs plugin for FusionForge

Modified: branches/messer-51/src/plugins/forumml/debian/rules
===================================================================
--- branches/messer-51/src/plugins/forumml/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/forumml/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -79,7 +79,7 @@
 	grep -v rpm-specific | grep -v docs/phpdoc/docs | \
 	grep -v ^./debian/ | grep -v \\.jar$$ | \
 	grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
-	cpio -o -H ustar | gzip > ../$(ORIGFILE)
+	paxcpio -M dist -oC512 -H ustar | gzip -n9 >../$(ORIGFILE)
 
 #binary:
 	#dh $@

Modified: branches/messer-51/src/plugins/globalsearch/bin/db-upgrade.pl
===================================================================
--- branches/messer-51/src/plugins/globalsearch/bin/db-upgrade.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/globalsearch/bin/db-upgrade.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -77,8 +77,6 @@
     if (is_lesser $version, $target) {
     debug "Adding local data." ;
         
-    do "/etc/gforge/local.pl" or die "Cannot read /etc/gforge/local.pl" ;
-
     my $packed_ip = gethostbyname("$domain_name");
     my $ip_address ;
     if (defined $packed_ip) {

Modified: branches/messer-51/src/plugins/globalsearch/common/globalsearch_stats_boxes.php
===================================================================
--- branches/messer-51/src/plugins/globalsearch/common/globalsearch_stats_boxes.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/globalsearch/common/globalsearch_stats_boxes.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -22,7 +22,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once ('../../../www/env.inc.php');
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'/include/FusionForge.class.php';
 

Modified: branches/messer-51/src/plugins/globalsearch/www/index.php
===================================================================
--- branches/messer-51/src/plugins/globalsearch/www/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/globalsearch/www/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -68,7 +68,7 @@
 echo "<p>";
 
 $gwords = htmlspecialchars(trim($gwords));
-$gwords = ereg_replace("[ \t]+", ' ', $gwords);
+$gwords = preg_replace("/\s+/", ' ', $gwords);
 
 // show search box which will return results on
 // this very page (default is to open new window)

Modified: branches/messer-51/src/plugins/hudson/bin/db-upgrade.pl
===================================================================
--- branches/messer-51/src/plugins/hudson/bin/db-upgrade.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/hudson/bin/db-upgrade.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -74,8 +74,6 @@
 #    if (is_lesser $version, $target) {
 #	debug "Adding local data." ;
 #	
-#	do "/etc/gforge/local.pl" or die "Cannot read /etc/gforge/local.pl" ;
-#	
 #	my $ip_address = qx/host $domain_name | awk '{print \}'/ ;
 #	
 #	@reqlist = (

Modified: branches/messer-51/src/plugins/hudson/debian/rules
===================================================================
--- branches/messer-51/src/plugins/hudson/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/hudson/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -79,7 +79,7 @@
 	grep -v rpm-specific | grep -v docs/phpdoc/docs | \
 	grep -v ^./debian/ | grep -v \\.jar$$ | \
 	grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
-	cpio -o -H ustar | gzip > ../$(ORIGFILE)
+	paxcpio -M dist -oC512 -H ustar | gzip -n9 >../$(ORIGFILE)
 
 %:
 	dh  $@

Modified: branches/messer-51/src/plugins/ldapextauth/include/LdapExtAuthPlugin.class.php
===================================================================
--- branches/messer-51/src/plugins/ldapextauth/include/LdapExtAuthPlugin.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/ldapextauth/include/LdapExtAuthPlugin.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -52,6 +52,12 @@
 		if (isset($user_dn)) {
 			$this->user_dn = $user_dn ;
 		}
+		if (isset($ldap_server)) {
+			$this->ldap_server = $ldap_server ;
+		}
+		if (isset($ldap_port)) {
+			$this->ldap_port = $ldap_port ;
+		}
 		if (isset($ldap_altserver)) {
 			$this->ldap_altserver = $ldap_altserver ;
 		}
@@ -61,6 +67,9 @@
 		if (isset($ldap_start_tls)) {
 			$this->ldap_start_tls = $ldap_start_tls ;
 		}
+		if (isset($ldap_bind_dn)) {
+			$this->ldap_bind_dn = $ldap_bind_dn;
+		}
 		if (isset($ldap_bind_pwd)) {
 			$this->ldap_bind_pwd = $ldap_bind_pwd;
 		}

Modified: branches/messer-51/src/plugins/mailman/debian/rules
===================================================================
--- branches/messer-51/src/plugins/mailman/debian/rules	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mailman/debian/rules	2012-04-07 14:10:47 UTC (rev 18260)
@@ -79,7 +79,7 @@
 	grep -v rpm-specific | grep -v docs/phpdoc/docs | \
 	grep -v ^./debian/ | grep -v \\.jar$$ | \
 	grep -v \\.pdf$$ | grep -v plugins/fckeditor/www/_samples | \
-	cpio -o -H ustar | gzip > ../$(ORIGFILE)
+	paxcpio -M dist -oC512 -H ustar | gzip -n9 >../$(ORIGFILE)
 
 %:
 	dh  $@

Modified: branches/messer-51/src/plugins/mediawiki/bin/mw-drop-wikis.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/bin/mw-drop-wikis.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/bin/mw-drop-wikis.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -26,7 +26,7 @@
 	exit (0);
 }
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 $projects_path = forge_get_config('projects_path', 'mediawiki');
@@ -50,7 +50,7 @@
   if (!$res) {
     echo db_error();
   }
-  $res = db_query_params('DELETE FROM plugin_mediawiki_interwiki WHERE iw_prefix=$1', array($project));
+  $res = db_query_params('DELETE FROM interwiki WHERE iw_prefix=$1', array($project));
   if (!$res) {
     echo db_error();
   }

Modified: branches/messer-51/src/plugins/mediawiki/bin/mw-plugin-init.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/bin/mw-plugin-init.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/bin/mw-plugin-init.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,7 @@
    mediawiki plugin. 
   */
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 $echo_links = $argc >= 1;

Modified: branches/messer-51/src/plugins/mediawiki/bin/mw-wrapper.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/bin/mw-wrapper.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/bin/mw-wrapper.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -34,7 +34,7 @@
 $fusionforgeproject = array_shift ($argv) ;
 $mwscript = array_shift ($argv) ;
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 
@@ -46,7 +46,7 @@
 
 $group = group_get_object_by_name($fusionforgeproject) ;
 if (!$group || $group->isError()) {
-	die ("Wrong group!\n") ;
+	die("Wrong group! " . $group->getErrorMessage() . "\n");
 }
 
 if (!$group->usesPlugin('mediawiki')) {

Modified: branches/messer-51/src/plugins/mediawiki/common/MediaWikiPlugin.class.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/common/MediaWikiPlugin.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/common/MediaWikiPlugin.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,30 +1,32 @@
 <?php
-
-/**
- * MediaWikiPlugin Class
+/*-
+ * MediaWiki plugin for FusionForge – Forge Plugin class
  *
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * (and others)
+ * All rights reserved.
  *
- * This file is part of FusionForge.
+ * This file is part of FusionForge. FusionForge 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 Licence, or (at your option)
+ * any later version.
  *
- * FusionForge 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.
- *
  * FusionForge 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.,
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 forge_define_config_item('src_path','mediawiki', "/usr/share/mediawiki");
 
 forge_define_config_item('mwdata_path', 'mediawiki', '$core/data_path/plugins/mediawiki');
-forge_define_config_item('projects_path', 'mediawiki', '$mediawiki/mwdata_path/projects');
+forge_define_config_item('projects_path', 'mediawiki', '$mediawiki/mwdata_path/wikidata');
 forge_define_config_item('master_path', 'mediawiki', '$mediawiki/mwdata_path/master');
 
 forge_define_config_item('enable_uploads', 'mediawiki', false);
@@ -50,6 +52,7 @@
 		$this->hooks[] = "list_roles_by_permission";
 		$this->hooks[] = "project_admin_plugins"; // to show up in the admin page for group
 		$this->hooks[] = "clone_project_from_template" ;
+		$this->hooks[] = "normalise_roles";
 	}
 
 	function CallHook ($hookname, &$params) {
@@ -167,7 +170,19 @@
 							 'Junior Developer' => '0',
 							 'Doc Writer' => '0',
 							 'Support Tech' => '0')) ;
-			
+
+			// Delete permanently
+			$right = new PluginSpecificRoleSetting($role,
+			    'plugin_mediawiki_delete');
+			$right->SetAllowedValues(array('0', '1'));
+			$right->SetDefaultValues(array(
+				'Admin' => '0',
+				'Senior Developer' => '0',
+				'Junior Developer' => '0',
+				'Doc Writer' => '0',
+				'Support Tech' => '0',
+			    ));
+
 		} elseif ($hookname == "role_normalize") {
 			$role =& $params['role'] ;
 			$new_sa =& $params['new_sa'] ;
@@ -180,12 +195,14 @@
 					$role->normalizePermsForSection ($new_pa, 'plugin_mediawiki_edit', $p->getID()) ;
 					$role->normalizePermsForSection ($new_pa, 'plugin_mediawiki_upload', $p->getID()) ;
 					$role->normalizePermsForSection ($new_pa, 'plugin_mediawiki_admin', $p->getID()) ;
+					$role->normalizePermsForSection($new_pa, 'plugin_mediawiki_delete', $p->getID());
 				}
 			} else {
 				$role->normalizeDataForSection ($new_sa, 'plugin_mediawiki_read') ;
 				$role->normalizeDataForSection ($new_sa, 'plugin_mediawiki_edit') ;
 				$role->normalizeDataForSection ($new_sa, 'plugin_mediawiki_upload') ;
 				$role->normalizeDataForSection ($new_sa, 'plugin_mediawiki_admin') ;
+				$role->normalizeDataForSection($new_sa, 'plugin_mediawiki_delete');
 			}
 		} elseif ($hookname == "role_translate_strings") {
 			$right = new PluginSpecificRoleSetting ($role,
@@ -200,7 +217,7 @@
 			$right->setValueDescriptions (array ('0' => _('No editing'),
 							     '1' => _('Edit existing pages only'), 
 							     '2' => _('Edit and create pages'), 
-							     '3' => _('Edit, create, move, delete pages'))) ;
+							     '3' => _('Edit, create, move pages'))) ;
 
 			$right = new PluginSpecificRoleSetting ($role,
 							       'plugin_mediawiki_upload') ;
@@ -214,6 +231,14 @@
 			$right->setDescription (_('Mediawiki administrative tasks')) ;
 			$right->setValueDescriptions (array ('0' => _('No administrative access'),
 							     '1' => _('Edit interface, import XML dumps'))) ;
+
+			$right = new PluginSpecificRoleSetting($role,
+			    'plugin_mediawiki_delete');
+			$right->setDescription(_('Mediawiki remove pages from history'));
+			$right->setValueDescriptions(array(
+				'0' => _('No irreversible deletion'),
+				'1' => _('Delete pages from history and undelete them'),
+			    ));
 		} elseif ($hookname == "role_get_setting") {
 			$role = $params['role'] ;
 			$reference = $params['reference'] ;
@@ -248,6 +273,9 @@
 					$params['result'] =  $value ;
 				}
 				break ;
+			case 'plugin_mediawiki_delete':
+				$params['result'] = $value;
+				break;
 			}
 		} elseif ($hookname == "role_has_permission") {
 			$value = $params['value'];
@@ -291,6 +319,9 @@
 					break ;
 				}
 				break ;
+			case 'plugin_mediawiki_delete':
+				$params['result'] |= ($value >= 1);
+				break;
 			}
 		} elseif ($hookname == "list_roles_by_permission") {
 			switch ($params['section']) {
@@ -333,6 +364,9 @@
 					break ;
 				}
 				break ;
+			case 'plugin_mediawiki_delete':
+				$params['qpa'] = db_construct_qpa($params['qpa'], ' AND perm_val >= 1');
+				break;
 			}
 		} else if ($hookname == "project_admin_plugins") {
 			$group_id = $params['group_id'];
@@ -347,7 +381,13 @@
 			$project = $params['project'] ;
 			$id_mappings = $params['id_mappings'] ;
 			
-			$sections = array ('plugin_mediawiki_read', 'plugin_mediawiki_edit', 'plugin_mediawiki_upload', 'plugin_mediawiki_admin') ;
+			$sections = array(
+				'plugin_mediawiki_read',
+				'plugin_mediawiki_edit',
+				'plugin_mediawiki_upload',
+				'plugin_mediawiki_admin',
+				'plugin_mediawiki_delete',
+			    );
 
 			foreach ($template->getRoles() as $oldrole) {
 				$newrole = RBACEngine::getInstance()->getRoleById ($id_mappings['role'][$oldrole->getID()]) ;
@@ -359,6 +399,38 @@
 					}
 				}
 			}
+		} else if ($hookname == "normalise_roles") {
+			$ra = RoleAnonymous::getInstance();
+			/* get all groups using the mediawiki plugin */
+			$res = db_query_params("
+				SELECT g.unix_group_name, g.group_id
+				FROM groups g, group_plugin gp, plugins p
+				WHERE g.group_id = gp.group_id
+				  AND gp.plugin_id = p.plugin_id
+				  AND p.plugin_name = $1;
+			    ", array("mediawiki"));
+			/* iterate over all those groups */
+			while ($res && ($row = db_fetch_array($res))) {
+				$gid = $row['group_id'];
+				$ugn = $row['unix_group_name'];
+				$dir = forge_get_config('projects_path',
+				    'mediawiki') . "/" . $ugn;
+
+				/* look for Evolvis 4.8 public visibility info */
+				if (is_dir($dir) && file_exists("$dir/private")) {
+					$pub =
+					    $ra->hasPermission('project_read', $gid) ?
+					    /* parse old wiki visibility info */
+					    file_get_contents("$dir/private") === "0\n" :
+					    /* hide wiki on non-public groups */
+					    false;
+					/* set anonymous wiki readability */
+					$ra->setSetting('plugin_mediawiki_read',
+					    $gid, $pub ? 1 : 0);
+					/* nuke old file, once is enough */
+					@unlink("$dir/private");
+				}
+			}
 		}
 	}
   }
@@ -367,5 +439,3 @@
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/plugins/mediawiki/cronjobs/create-imagedirs.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/cronjobs/create-imagedirs.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/cronjobs/create-imagedirs.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -25,7 +25,7 @@
    It is intended to be started in a cronjob with root permissions.
    */
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/plugins/mediawiki/cronjobs/create-wikis.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/cronjobs/create-wikis.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/cronjobs/create-wikis.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,5 +1,5 @@
 <?php
-/* 
+/*
  * Copyright (C) 2010  Olaf Lenz
  *
  * This file is part of FusionForge.
@@ -21,7 +21,7 @@
 
   /** This script will automatically create mediawiki instances for
    projects that do not yet have it.
-   
+
    It is intended to be started in a cronjob.
    */
 
@@ -29,7 +29,7 @@
 # Required config variables:
 #   src_path: the directory where the mediawiki sources are installed
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 
@@ -48,35 +48,18 @@
 # Loop over all projects that use the plugin
 while ( $row = db_fetch_array($project_res) ) {
 	$project = $row['unix_group_name'];
-	$project_dir = forge_get_config('projects_path', 'mediawiki') 
+	$project_dir = forge_get_config('projects_path', 'mediawiki')
 		. "/$project";
 	cron_debug("Checking $project...");
 
-	$res = db_query_params('DELETE FROM plugin_mediawiki_interwiki WHERE iw_prefix=$1', array($project));
+	$res = db_query_params('DELETE FROM interwiki WHERE iw_prefix=$1', array($project));
 	$url = util_make_url('/plugins/mediawiki/wiki/' . $project . '/index.php/$1');
-	$res = db_query_params('INSERT INTO plugin_mediawiki_interwiki VALUES ($1, $2, 1, 0)',
+	$res = db_query_params('INSERT INTO interwiki VALUES ($1, $2, 1, 0)',
 			       array($project,
 				     $url));
 
 	// Create the project directory if necessary
-	if (is_dir($project_dir)) {
-		cron_debug("  Project dir $project_dir exists, so I assumen the project already exists.");
-		if(!is_dir("$project_dir/cache")) {
-			mkdir("$project_dir/cache", 2775, true);
-			chgrp("$project_dir/cache", "www-data");
-		}
-		if(!is_dir("$project_dir/cache/rss")) {
-			mkdir("$project_dir/cache/rss", 2775, true);
-			chgrp("$project_dir/cache/rss", "www-data");
-		}
-	} else {
-		cron_debug("  Creating project dir $project_dir.");
-		mkdir($project_dir, 0775, true);
-		mkdir("$project_dir/cache", 2775, true);
-		chgrp("$project_dir/cache", "www-data");
-		mkdir("$project_dir/cache/rss", 2775, true);
-		chgrp("$project_dir/cache/rss", "www-data");
-
+	if (!is_dir($project_dir)) {
 		// Create the DB
 		$schema = "plugin_mediawiki_$project";
 		// Sanitize schema name
@@ -87,7 +70,7 @@
 		cron_debug("  Creating schema $schema.");
 		$res = db_query_params("CREATE SCHEMA $schema", array());
 		if (!$res) {
-			$err =  "Error: Schema Creation Failed: " . 
+			$err =  "Error: Schema Creation Failed: " .
 				db_error();
 			cron_debug($err);
 			cron_entry(23,$err);
@@ -104,10 +87,10 @@
 			db_rollback();
 			exit;
 		}
-			
+
 		$res = db_query_params("SET search_path=$schema", array());
 		if (!$res) {
-			$err =  "Error: DB Query Failed: " . 
+			$err =  "Error: DB Query Failed: " .
 				db_error();
 			cron_debug($err);
 			cron_entry(23,$err);
@@ -118,7 +101,7 @@
 		$creation_query = file_get_contents($table_file);
 		$res = db_query_from_file($table_file);
 		if (!$res) {
-			$err =  "Error: Mediawiki Database Creation Failed: " . 
+			$err =  "Error: Mediawiki Database Creation Failed: " .
 				db_error();
 			cron_debug($err);
 			cron_entry(23,$err);
@@ -128,30 +111,47 @@
 
 		$res = db_query_params("CREATE TEXT SEARCH CONFIGURATION $schema.default ( COPY = pg_catalog.english )", array());
 		if (!$res) {
-			$err =  "Error: DB Query Failed: " . 
+			$err =  "Error: DB Query Failed: " .
 				db_error();
 			cron_debug($err);
 			cron_entry(23,$err);
 			db_rollback();
 			exit;
 		}
-		
+
 		if (!db_commit()) {
-			$err =  "Error: DB Commit Failed: " . 
+			$err =  "Error: DB Commit Failed: " .
 				db_error();
 			cron_debug($err);
 			cron_entry(23,$err);
 			exit;
 		}
 
+		cron_debug("  Creating project dir $project_dir.");
+		mkdir($project_dir, 0775, true);
+		mkdir("$project_dir/cache", 02775, true);
+		chgrp("$project_dir/cache", "www-data");
+		mkdir("$project_dir/cache/rss", 02775, true);
+		chgrp("$project_dir/cache/rss", "www-data");
+
 		$mwwrapper = forge_get_config('source_path')."/plugins/mediawiki/bin/mw-wrapper.php" ;
 		$dumpfile = forge_get_config('config_path')."/mediawiki/initial-content.xml" ;
-		
+
 		if (file_exists ($dumpfile)) {
 			system ("$mwwrapper $project importDump.php $dumpfile") ;
 			system ("$mwwrapper $project rebuildrecentchanges.php") ;
 		}
-	} 
+	} else {
+		cron_debug("  Project dir $project_dir exists, so I assume the project already exists.");
+		if (!is_dir("$project_dir/cache")) {
+			mkdir("$project_dir/cache", 02775, true);
+			chgrp("$project_dir/cache", "www-data");
+		}
+		if (!is_dir("$project_dir/cache/rss")) {
+			mkdir("$project_dir/cache/rss", 02775, true);
+			chgrp("$project_dir/cache/rss", "www-data");
+		}
+	}
 }
 
 

Modified: branches/messer-51/src/plugins/mediawiki/cronjobs/dump-wikis.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/cronjobs/dump-wikis.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/cronjobs/dump-wikis.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,7 +24,7 @@
       It is intended to be started in a cronjob.
    */
 
-require_once dirname(__FILE__) . '/../../../www/env.inc.php';
+require dirname(__FILE__).'/../../../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki
===================================================================
--- branches/messer-51/src/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/etc/httpd.d/61plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -2,8 +2,10 @@
 RedirectMatch 301 ^({sys_urlprefix}plugins/mediawiki/wiki/[-a-zA-Z0-9_]*)/*$ $1/index.php
 AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/[-a-zA-Z0-9_]*/api.php {usr_share_gforge}/www/plugins/mediawiki/api.php
 AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/[-a-zA-Z0-9_]*/index.php {usr_share_gforge}/www/plugins/mediawiki/index.php
-AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/images/(.*) {var_lib_gforge}/plugins/mediawiki/projects/$1/images/$2
+AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/images/(.*) {var_lib_gforge}/plugins/mediawiki/wikidata/$1/images/$2
 AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/skins/(.*) /usr/share/gforge/www/plugins/mediawiki/skins/$2
+AliasMatch ^{sys_urlprefix}plugins/mediawiki/wiki/([-a-zA-Z0-9_]*)/extensions/(.*) /var/lib/mediawiki/extensions/$2
+AliasMatch ^{sys_urlprefix}plugins/mediawiki/dumps/(.*)$ {var_lib_gforge}/plugins/mediawiki/dumps/$1
 
 <Directory {var_lib_gforge}/plugins/mediawiki>
         Options +FollowSymLinks -Indexes
@@ -12,11 +14,16 @@
         allow from all
         # Allow mediawiki to connect to gforge
         Include {gforge_etc}/httpd.secrets
-        php_admin_value include_path "{sys_custom_path}:/etc/gforge:{usr_share_gforge}:{usr_share_gforge}/www/include:{usr_share_gforge}/plugins:/usr/share/php:."
+        php_admin_value include_path "{sys_custom_path}:/etc/gforge:{usr_share_gforge}:{usr_share_gforge}/www/include:{usr_share_gforge}/plugins:/usr/share/php:/usr/share/pear:."
 </Directory>
 
+<Directory {var_lib_gforge}/plugins/mediawiki/dumps>
+        Options -FollowSymLinks +Indexes
+        AllowOverride None
+</Directory>
+
 # some directories must be protected
-<DirectoryMatch {var_lib_gforge}/plugins/mediawiki/projects/[-a-zA-Z0-9_]*/images>
+<DirectoryMatch {var_lib_gforge}/plugins/mediawiki/wikidata/[-a-zA-Z0-9_]*/images>
         Options -FollowSymLinks
         AllowOverride None
 </DirectoryMatch>

Modified: branches/messer-51/src/plugins/mediawiki/etc/mediawiki.ini
===================================================================
--- branches/messer-51/src/plugins/mediawiki/etc/mediawiki.ini	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/etc/mediawiki.ini	2012-04-07 14:10:47 UTC (rev 18260)
@@ -12,7 +12,7 @@
 
 ; Mediawiki projects dir. 
 ; All projects using the plugin have a subdirectory in this directory.
-projects_path = "$mediawiki/mwdata_path/projects"
+projects_path = "$mediawiki/mwdata_path/wikidata"
 
 ; Mediawiki master dir.
 ; This is where all the links to the mediawiki source code are stored.

Copied: branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/plugins/mediawiki/mediawiki-skin/FusionForge.php)
===================================================================
--- branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php	                        (rev 0)
+++ branches/messer-51/src/plugins/mediawiki/mediawiki-skin/FusionForge.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,442 @@
+<?php
+/**
+ * Evolvis changes are Copyright © 2010
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * and licenced under the GNU GPL v2 or later as part of FusionForge.
+ *
+ * FusionForge nouveau
+ *
+ * Translated from gwicke's previous TAL template version to remove
+ * dependency on PHPTAL.
+ *
+ * @todo document
+ * @file
+ * @ingroup Skins
+ */
+
+if( !defined( 'MEDIAWIKI' ) )
+	die( -1 );
+
+/**
+ * Inherit main code from SkinTemplate, set the CSS and template filter.
+ * @todo document
+ * @ingroup Skins
+ */
+class SkinFusionForge extends SkinTemplate {
+	/** Using fusionforge. */
+	function initPage( OutputPage $out ) {
+		parent::initPage( $out );
+		$this->skinname  = 'fusionforge';
+		$this->stylename = 'fusionforge';
+		$this->template  = 'FusionForgeTemplate';
+
+	}
+
+	function getPoweredBy() {
+		return '<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/de/"><img alt="Evolvis Wiki content is licenced under the / Evolvis Wiki-Inhalte sind lizensiert unter: Creative Commons CC-BY-NC-SA Version 3.0 (de)" src="/themes/evolvis/images/CC-BY-NC-SA-3_0-de.png" /></a>';
+	}
+
+	function setupSkinUserCss( OutputPage $out ) {
+		global $wgHandheldStyle;
+
+		parent::setupSkinUserCss( $out );
+
+		// Append to the default screen common & print styles...
+		$out->addStyle( 'fusionforge/main.css', 'screen' );
+		if( $wgHandheldStyle ) {
+			// Currently in testing... try 'chick/main.css'
+			$out->addStyle( $wgHandheldStyle, 'handheld' );
+		}
+
+		$out->addStyle( 'fusionforge/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
+		$out->addStyle( 'fusionforge/IE55Fixes.css', 'screen', 'IE 5.5000' );
+		$out->addStyle( 'fusionforge/IE60Fixes.css', 'screen', 'IE 6' );
+		$out->addStyle( 'fusionforge/IE70Fixes.css', 'screen', 'IE 7' );
+
+		$out->addStyle( 'fusionforge/rtl.css', 'screen', '', 'rtl' );
+	}
+}
+
+/**
+ * @todo document
+ * @ingroup Skins
+ */
+class FusionForgeTemplate extends QuickTemplate {
+	var $skin;
+	/**
+	 * Template filter callback for FusionForge skin.
+	 * Takes an associative array of data set from a SkinTemplate-based
+	 * class, and a wrapper for MediaWiki's localization database, and
+	 * outputs a formatted page.
+	 *
+	 * @access private
+	 */
+	function execute() {
+		global $wgRequest;
+		$this->skin = $skin = $this->data['skin'];
+		$action = $wgRequest->getText( 'action' );
+
+		// Suppress warnings to prevent notices about missing indexes in $this->data
+		wfSuppressWarnings();
+
+		$project=group_get_object_by_name($GLOBALS['fusionforgeproject']);
+		$extratitle = "";
+		if ($project) {
+			$GLOBALS['group_id']=$project->getID();
+			$params['group']=$GLOBALS['group_id'];
+			$params['toptab']='mediawiki';
+			$extratitle = ": " . $project->getPublicName();
+		}
+
+?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
+	foreach($this->data['xhtmlnamespaces'] as $tag => $ns) {
+		?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
+	} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
+	<head>
+		<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
+		<?php $this->html('headlinks') ?>
+		<title><?php $this->text('pagetitle'); echo $extratitle; ?></title>
+		<!-- FUSIONFORGE Stylesheet BEGIN --><?php
+		if (!$GLOBALS['sys_use_mwframe']) {
+			$GLOBALS['HTML']->headerCSS();
+		}
+		$GLOBALS['HTML']->disableForgebar();
+		?><!-- FUSIONFORGE Stylesheet END -->
+		<?php $this->html('csslinks') ?>
+
+		<!--[if lt IE 7]><script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/IEFixes.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"></script>
+		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+
+		<?php print Skin::makeGlobalVariablesScript( $this->data ); ?>
+
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath' ) ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
+		<!-- Head Scripts -->
+<?php $this->html('headscripts') ?>
+<?php	if($this->data['jsvarurl']) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl') ?>"><!-- site js --></script>
+<?php	} ?>
+<?php	if($this->data['pagecss']) { ?>
+		<style type="text/css"><?php $this->html('pagecss') ?></style>
+<?php	}
+		if($this->data['usercss']) { ?>
+		<style type="text/css"><?php $this->html('usercss') ?></style>
+<?php	}
+		if($this->data['userjs']) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
+<?php	}
+		if($this->data['userjsprev']) { ?>
+		<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
+<?php	}
+		if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
+	</head>
+<body<?php if($this->data['body_ondblclick']) { ?> ondblclick="<?php $this->text('body_ondblclick') ?>"<?php } ?>
+<?php if($this->data['body_onload']) { ?> onload="<?php $this->text('body_onload') ?>"<?php } ?>
+ class="mediawiki <?php $this->text('dir') ?> <?php $this->text('pageclass') ?> <?php $this->text('skinnameclass') ?>">
+	<!-- FUSIONFORGE BodyHeader BEGIN --><?php
+	if (!$GLOBALS['sys_use_mwframe']){
+		if ($project) {
+			$GLOBALS['HTML']->bodyHeader($params);
+		}
+		echo "<div style=\"font-size:x-small;\">\n";
+	}
+	?><!-- FUSIONFORGE BodyHeader END -->
+	<div id="globalWrapper">
+		<div id="column-content">
+	<div id="content">
+		<a name="top" id="top"></a>
+		<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
+		<h1 id="firstHeading" class="firstHeading"><?php $this->data['displaytitle']!=""?$this->html('title'):$this->text('title') ?></h1>
+		<div id="bodyContent">
+			<h3 id="siteSub"><?php $this->msg('tagline') ?></h3>
+			<div id="contentSub"><?php $this->html('subtitle') ?></div>
+			<?php if($this->data['undelete']) { ?><div id="contentSub2"><?php     $this->html('undelete') ?></div><?php } ?>
+			<?php if($this->data['newtalk'] ) { ?><div class="usermessage"><?php $this->html('newtalk')  ?></div><?php } ?>
+			<?php if($this->data['showjumplinks']) { ?><div id="jump-to-nav"><?php $this->msg('jumpto') ?> <a href="#column-one"><?php $this->msg('jumptonavigation') ?></a>, <a href="#searchInput"><?php $this->msg('jumptosearch') ?></a></div><?php } ?>
+			<!-- start content -->
+			<?php $this->html('bodytext') ?>
+			<?php if($this->data['catlinks']) { $this->html('catlinks'); } ?>
+			<!-- end content -->
+			<?php if($this->data['dataAfterContent']) { $this->html ('dataAfterContent'); } ?>
+			<div class="visualClear"></div>
+		</div>
+	</div>
+		</div>
+		<div id="column-one">
+	<div id="p-cactions" class="portlet">
+		<h5><?php $this->msg('views') ?></h5>
+		<div class="pBody">
+			<ul>
+	<?php		foreach($this->data['content_actions'] as $key => $tab) {
+					echo '
+				 <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
+					if( $tab['class'] ) {
+						echo ' class="'.htmlspecialchars($tab['class']).'"';
+					}
+					echo'><a href="'.htmlspecialchars($tab['href']).'"';
+					# We don't want to give the watch tab an accesskey if the
+					# page is being edited, because that conflicts with the
+					# accesskey on the watch checkbox.  We also don't want to
+					# give the edit tab an accesskey, because that's fairly su-
+					# perfluous and conflicts with an accesskey (Ctrl-E) often
+					# used for editing in Safari.
+				 	if( in_array( $action, array( 'edit', 'submit' ) )
+				 	&& in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
+				 		echo $skin->tooltip( "ca-$key" );
+				 	} else {
+				 		echo $skin->tooltipAndAccesskey( "ca-$key" );
+				 	}
+				 	echo '>'.htmlspecialchars($tab['text']).'</a></li>';
+				} ?>
+			</ul>
+		</div>
+	</div>
+	<div class="portlet" id="p-personal">
+		<h5><?php $this->msg('personaltools') ?></h5>
+		<div class="pBody">
+<?php			$put_ul = false;
+			foreach($this->data['personal_urls'] as $key => $item) {
+				if (!$put_ul) {
+					echo "\t\t\t<ul>\n";
+					$put_ul = true;
+				} ?>
+				<li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
+					if (isset($item['active']) && $item['active']) { ?> class="active"<?php } ?>><a href="<?php
+				echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
+				if(!empty($item['class'])) { ?> class="<?php
+				echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
+				echo htmlspecialchars($item['text']) ?></a></li>
+<?php			}
+			if ($put_ul) {
+				echo "\t\t\t</ul>\n";
+			} ?>
+		</div>
+	</div>
+	<div class="portlet" id="p-logo">
+		<a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
+			?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
+			echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
+	</div>
+	<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
+<?php
+		$sidebar = $this->data['sidebar'];
+		if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
+		if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+		if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+
+		if (session_loggedin()) {
+			$efbox_log_text = _('Log Out');
+			$efbox_log_link = "/account/logout.php?return_to=" .
+			    urlencode(getStringFromServer('REQUEST_URI'));
+		} else {
+			$efbox_log_text = _('Log In');
+			$efbox_log_link = "/account/login.php?return_to=" .
+			    urlencode(getStringFromServer('REQUEST_URI'));
+		}
+		$efbox_prj_link = "/projects/" . $project->getUnixName() . "/";
+		$this->customBox("EvolvisForge", array(
+			"project" => array(
+				"id" => "evolvisforge_project",
+				"href" => $efbox_prj_link,
+				"text" => _("Project Summary"),
+			    ),
+			"loginout" => array(
+				"id" => "evolvisforge_loginout",
+				"href" => $efbox_log_link,
+				"text" => $efbox_log_text,
+			    ),
+		    ));
+
+		foreach ($sidebar as $boxName => $cont) {
+			if ( $boxName == 'SEARCH' ) {
+				$this->searchBox();
+			} elseif ( $boxName == 'TOOLBOX' ) {
+				$this->toolbox();
+			} elseif ( $boxName == 'LANGUAGES' ) {
+				$this->languageBox();
+			} else {
+				$this->customBox( $boxName, $cont );
+			}
+		}
+?>
+		</div><!-- end of the left (by default at least) column -->
+			<div class="visualClear"></div>
+			<div id="footer">
+<?php
+		if($this->data['poweredbyico']) { ?>
+				<div id="f-poweredbyico"><?php $this->html('poweredbyico') ?></div>
+<?php 	}
+		if($this->data['copyrightico']) { ?>
+				<div id="f-copyrightico"><?php $this->html('copyrightico') ?></div>
+<?php	}
+
+		// Generate additional footer links
+		$footerlinks = array(
+			'lastmod', 'viewcount', 'numberofwatchingusers', 'credits', 'copyright',
+			'tagline',
+		);
+		$validFooterLinks = array();
+		foreach( $footerlinks as $aLink ) {
+			if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
+				$validFooterLinks[] = $aLink;
+			}
+		}
+		if ( count( $validFooterLinks ) > 0 ) {
+?>			<ul id="f-list">
+<?php
+			foreach( $validFooterLinks as $aLink ) {
+				if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
+?>					<li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
+<?php 			}
+			}
+?>
+			</ul>
+<?php	}
+?>
+		</div>
+</div>
+<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html('reporttime') ?>
+<?php if ( $this->data['debug'] ): ?>
+<!-- Debug output:
+<?php $this->text( 'debug' ); ?>
+
+-->
+<?php endif;
+	if (!$GLOBALS['sys_use_mwframe']) {
+		echo "</div>\n";
+		$GLOBALS['HTML']->footer($params);
+	} else { ?>
+</body></html>
+<?php
+	}
+	wfRestoreWarnings();
+	} // end of execute() method
+
+	/*************************************************************************************************/
+	function searchBox() {
+		global $wgUseTwoButtonsSearchForm;
+?>
+	<div id="p-search" class="portlet">
+		<h5><label for="searchInput"><?php $this->msg('search') ?></label></h5>
+		<div id="searchBody" class="pBody">
+			<form action="<?php $this->text('wgScript') ?>" id="searchform"><div>
+				<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
+				<input id="searchInput" name="search" type="text"<?php echo $this->skin->tooltipAndAccesskey('search');
+					if( isset( $this->data['search'] ) ) {
+						?> value="<?php $this->text('search') ?>"<?php } ?> />
+				<input type='submit' name="go" class="searchButton" id="searchGoButton"	value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?> 
+				<input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
+
+				<div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
+
+			</div></form>
+		</div>
+	</div>
+<?php
+	}
+
+	/*************************************************************************************************/
+	function toolbox() {
+?>
+	<div class="portlet" id="p-tb">
+		<h5><?php $this->msg('toolbox') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php
+		if($this->data['notspecialpage']) { ?>
+				<li id="t-whatlinkshere"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
+				?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
+<?php
+			if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
+				<li id="t-recentchangeslinked"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
+				?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked') ?></a></li>
+<?php 		}
+		}
+		if(isset($this->data['nav_urls']['trackbacklink'])) { ?>
+			<li id="t-trackbacklink"><a href="<?php
+				echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
+				?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
+<?php 	}
+		if($this->data['feeds']) { ?>
+			<li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
+					?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
+					echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a> 
+					<?php } ?></li><?php
+		}
+
+		foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
+
+			if($this->data['nav_urls'][$special]) {
+				?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
+				?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
+<?php		}
+		}
+
+		if(!empty($this->data['nav_urls']['print']['href'])) { ?>
+				<li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
+				?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
+		}
+
+		if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
+				<li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
+				?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
+		} elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
+				<li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
+		}
+
+		wfRunHooks( 'FusionForgeTemplateToolboxEnd', array( &$this ) );
+		wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
+?>
+			</ul>
+		</div>
+	</div>
+<?php
+	}
+
+	/*************************************************************************************************/
+	function languageBox() {
+		if( $this->data['language_urls'] ) {
+?>
+	<div id="p-lang" class="portlet">
+		<h5><?php $this->msg('otherlanguages') ?></h5>
+		<div class="pBody">
+			<ul>
+<?php		foreach($this->data['language_urls'] as $langlink) { ?>
+				<li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
+				?><a href="<?php echo htmlspecialchars($langlink['href']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php		} ?>
+			</ul>
+		</div>
+	</div>
+<?php
+		}
+	}
+
+	/*************************************************************************************************/
+	function customBox( $bar, $cont ) {
+?>
+	<div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
+		<h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo $bar; else echo $out; ?></h5>
+		<div class='pBody'>
+<?php   if ( is_array( $cont ) ) { ?>
+			<ul>
+<?php 			foreach($cont as $key => $val) { ?>
+				<li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
+					if (isset($val['active']) && $val['active']) { ?> class="active" <?php }
+				?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
+<?php			} ?>
+			</ul>
+<?php   } else {
+			# allow raw HTML block to be defined by extensions
+			print $cont;
+		}
+?>
+		</div>
+	</div>
+<?php
+	}
+
+} // end of class

Copied: branches/messer-51/src/plugins/mediawiki/mediawiki-skin/fusionforge/main.css (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/plugins/mediawiki/mediawiki-skin/fusionforge/main.css)
===================================================================
--- branches/messer-51/src/plugins/mediawiki/mediawiki-skin/fusionforge/main.css	                        (rev 0)
+++ branches/messer-51/src/plugins/mediawiki/mediawiki-skin/fusionforge/main.css	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,1688 @@
+/*
+** MediaWiki 'fusionforge' style sheet for CSS2-capable browsers.
+** Copyright Gabriel Wicke - http://wikidev.net/
+** License: GPL (http://www.gnu.org/copyleft/gpl.html)
+**
+** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
+** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
+** Michael Zeltner and Geir Bækholt)
+** All you guys rock :)
+*/
+
+#column-content {
+	width: 100%;
+	float: right;
+	margin: 0 0 .6em -12.2em;
+	padding: 0;
+}
+#content {
+	margin: 2.8em 0 0 12.2em;
+	padding: 0 1em 1em 1em;
+	position: relative;
+	z-index: 2;
+}
+#column-one {
+	padding-top: 160px;
+}
+#content {
+	background: white;
+	color: black;
+	border: 1px solid #aaa;
+	border-right: none;
+	line-height: 1.5em;
+}
+/* the left column width is specified in class .portlet */
+
+/* Font size:
+** We take advantage of keyword scaling- browsers won't go below 9px
+** More at http://www.w3.org/2003/07/30-font-size
+** http://style.cleverchimp.com/font_size_intervals/altintervals.html
+*/
+
+td.mainCanvas {
+	font: x-small sans-serif;
+	background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
+	color: black;
+	margin: 0;
+	padding: 0;
+}
+
+/* scale back up to a sane default */
+#globalWrapper {
+	position: relative;
+	font-size: 127%;
+	width: 100%;
+	margin: 0;
+	padding: 0;
+}
+.visualClear {
+	clear: both;
+}
+
+/* general styles */
+
+table {
+	font-size: 100%;
+	color: black;
+	/* we don't want the bottom borders of <h2>s to be visible through
+	   floated tables */
+	//background-color: white;
+}
+fieldset table {
+	/* but keep table layouts in forms clean... */
+	background: none;
+}
+a {
+	text-decoration: none;
+	color: #002bb8;
+	background: none;
+}
+a:visited {
+	color: #5a3696;
+}
+a:active {
+	color: #faa700;
+}
+a:hover {
+	text-decoration: underline;
+}
+a.stub {
+	color: #772233;
+}
+a.new, #p-personal a.new {
+	color: #ba0000;
+}
+a.new:visited, #p-personal a.new:visited {
+	color: #a55858;
+}
+
+img {
+	border: none;
+	vertical-align: middle;
+}
+p {
+	margin: .4em 0 .5em 0;
+	line-height: 1.5em;
+}
+p img {
+	margin: 0;
+}
+
+hr {
+	height: 1px;
+	color: #aaa;
+	background-color: #aaa;
+	border: 0;
+	margin: .2em 0 .2em 0;
+}
+
+h1, h2, h3, h4, h5, h6 {
+	color: black;
+	background: none;
+	font-weight: normal;
+	margin: 0;
+	padding-top: .5em;
+	padding-bottom: .17em;
+	border-bottom: 1px solid #aaa;
+}
+h1 { font-size: 188%; }
+h1 .editsection { font-size: 53%; }
+h2 { font-size: 150%; }
+h2 .editsection { font-size: 67%; }
+h3, h4, h5, h6 {
+	border-bottom: none;
+	font-weight: bold;
+}
+h3 { font-size: 132%; }
+h3 .editsection { font-size: 76%; font-weight: normal; }
+h4 { font-size: 116%; }
+h4 .editsection { font-size: 86%; font-weight: normal; }
+h5 { font-size: 100%; }
+h5 .editsection { font-weight: normal; }
+h6 { font-size: 80%;  }
+h6 .editsection { font-size: 125%; font-weight: normal; }
+
+ul {
+	line-height: 1.5em;
+	list-style-type: square;
+	margin: .3em 0 0 1.5em;
+	padding: 0;
+	list-style-image: url(bullet.gif);
+}
+ol {
+	line-height: 1.5em;
+	margin: .3em 0 0 3.2em;
+	padding: 0;
+	list-style-image: none;
+}
+li {
+	margin-bottom: .1em;
+}
+dt {
+	font-weight: bold;
+	margin-bottom: .1em;
+}
+dl {
+	margin-top: .2em;
+	margin-bottom: .5em;
+}
+dd {
+	line-height: 1.5em;
+	margin-left: 2em;
+	margin-bottom: .1em;
+}
+
+fieldset {
+	border: 1px solid #2f6fab;
+	margin: 1em 0 1em 0;
+	padding: 0 1em 1em;
+	line-height: 1.5em;
+}
+fieldset.nested {
+	margin: 0 0 0.5em 0;
+	padding: 0 0.5em 0.5em;
+}
+legend {
+	padding: .5em;
+	font-size: 95%;
+}
+form {
+	border: none;
+	margin: 0;
+}
+
+textarea {
+	width: 100%;
+	padding: .1em;
+}
+
+input.historysubmit {
+	padding: 0 .3em .3em .3em !important;
+	font-size: 94%;
+	cursor: pointer;
+	height: 1.7em !important;
+	margin-left: 1.6em;
+}
+select {
+	vertical-align: top;
+}
+abbr, acronym, .explain {
+	border-bottom: 1px dotted black;
+	color: black;
+	background: none;
+	cursor: help;
+}
+q {
+	font-family: Times, "Times New Roman", serif;
+	font-style: italic;
+}
+/* disabled for now
+blockquote {
+	font-family: Times, "Times New Roman", serif;
+	font-style: italic;
+}*/
+code {
+	background-color: #f9f9f9;
+}
+pre {
+	padding: 1em;
+	border: 1px dashed #2f6fab;
+	color: black;
+	background-color: #f9f9f9;
+	line-height: 1.1em;
+}
+
+/*
+** the main content area
+*/
+
+#siteSub {
+	display: none;
+}
+#jump-to-nav {
+	display: none;
+}
+
+#contentSub, #contentSub2 {
+	font-size: 84%;
+	line-height: 1.2em;
+	margin: 0 0 1.4em 1em;
+	color: #7d7d7d;
+	width: auto;
+}
+span.subpages {
+	display: block;
+}
+
+/* Some space under the headers in the content area */
+#bodyContent h1, #bodyContent h2 {
+	margin-bottom: .6em;
+}
+#bodyContent h3, #bodyContent h4, #bodyContent h5 {
+	margin-bottom: .3em;
+}
+#firstHeading {
+	margin-bottom: .1em;
+	/* These two rules hack around bug 2013 (fix for more limited bug 11325).
+	   When bug 2013 is fixed properly, they should be removed. */
+	line-height: 1.2em;
+	padding-bottom: 0;
+}
+
+/* user notification thing */
+.usermessage {
+	background-color: #ffce7b;
+	border: 1px solid #ffa500;
+	color: black;
+	font-weight: bold;
+	margin: 2em 0 1em;
+	padding: .5em 1em;
+	vertical-align: middle;
+}
+#siteNotice {
+	text-align: center;
+	font-size: 95%;
+	padding: 0 .9em;
+}
+#siteNotice p {
+	margin: 0;
+	padding: 0;
+}
+.success {
+	color: green;
+	font-size: larger;
+}
+.error {
+	color: red;
+	font-size: larger;
+}
+.errorbox, .successbox {
+	font-size: larger;
+	border: 2px solid;
+	padding: .5em 1em;
+	float: left;
+	margin-bottom: 2em;
+	color: #000;
+}
+.errorbox {
+	border-color: red;
+	background-color: #fff2f2;
+}
+.successbox {
+	border-color: green;
+	background-color: #dfd;
+}
+.errorbox h2, .successbox h2 {
+	font-size: 1em;
+	font-weight: bold;
+	display: inline;
+	margin: 0 .5em 0 0;
+	border: none;
+}
+
+.catlinks {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	margin-top: 1em;
+	clear: both;
+}
+/* currently unused, intended to be used by a metadata box
+in the bottom-right corner of the content area */
+.documentDescription {
+	/* The summary text describing the document */
+	font-weight: bold;
+	display: block;
+	margin: 1em 0;
+	line-height: 1.5em;
+}
+.documentByLine {
+	text-align: right;
+	font-size: 90%;
+	clear: both;
+	font-weight: normal;
+	color: #76797c;
+}
+
+/* emulate center */
+.center {
+	width: 100%;
+	text-align: center;
+}
+*.center * {
+	margin-left: auto;
+	margin-right: auto;
+}
+/* small for tables and similar */
+.small, .small * {
+	font-size: 94%;
+}
+table.small {
+	font-size: 100%;
+}
+
+/*
+** content styles
+*/
+
+#toc,
+.toc,
+.mw-warning {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+}
+#toc h2,
+.toc h2 {
+	display: inline;
+	border: none;
+	padding: 0;
+	font-size: 100%;
+	font-weight: bold;
+}
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+	text-align: center;
+}
+#toc ul,
+.toc ul {
+	list-style-type: none;
+	list-style-image: none;
+	margin-left: 0;
+	padding-left: 0;
+	text-align: left;
+}
+#toc ul ul,
+.toc ul ul {
+	margin: 0 0 0 2em;
+}
+#toc .toctoggle,
+.toc .toctoggle {
+	font-size: 94%;
+}
+
+.mw-warning {
+	margin-left: 50px;
+	margin-right: 50px;
+	text-align: center;
+}
+
+/* images */
+div.floatright, table.floatright {
+	clear: right;
+	float: right;
+	position: relative;
+	margin: 0 0 .5em .5em;
+	border: 0;
+/*
+	border: .5em solid white;
+	border-width: .5em 0 .8em 1.4em;
+*/
+}
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
+	float: left;
+	clear: left;
+	position: relative;
+	margin: 0 .5em .5em 0;
+	border: 0;
+/*
+	margin: .3em .5em .5em 0;
+	border: .5em solid white;
+	border-width: .5em 1.4em .8em 0;
+*/
+}
+div.floatleft p { font-style: italic; }
+/* thumbnails */
+div.thumb {
+	margin-bottom: .5em;
+	border-style: solid;
+	border-color: white;
+	width: auto;
+}
+div.thumbinner {
+	border: 1px solid #ccc;
+	padding: 3px !important;
+	background-color: #f9f9f9;
+	font-size: 94%;
+	text-align: center;
+	overflow: hidden;
+}
+html .thumbimage {
+	border: 1px solid #ccc;
+}
+html .thumbcaption {
+	border: none;
+	text-align: left;
+	line-height: 1.4em;
+	padding: 3px !important;
+	font-size: 94%;
+}
+div.magnify {
+	float: right;
+	border: none !important;
+	background: none !important;
+}
+div.magnify a, div.magnify img {
+	display: block;
+	border: none !important;
+	background: none !important;
+}
+div.tright {
+	clear: right;
+	float: right;
+	border-width: .5em 0 .8em 1.4em;
+}
+div.tleft {
+	float: left;
+	clear: left;
+	margin-right: .5em;
+	border-width: .5em 1.4em .8em 0;
+}
+img.thumbborder {
+	border: 1px solid #dddddd;
+}
+.hiddenStructure {
+	display: none;
+}
+
+/*
+** classes for special content elements like town boxes
+** intended to be referenced directly from the wiki src
+*/
+
+/*
+** User styles
+*/
+/* table standards */
+table.rimage {
+	float: right;
+	position: relative;
+	margin-left: 1em;
+	margin-bottom: 1em;
+	text-align: center;
+}
+.toccolours {
+	border: 1px solid #aaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+}
+
+/*
+** edit views etc
+*/
+.special li {
+	line-height: 1.4em;
+	margin: 0;
+	padding: 0;
+}
+
+/*
+** keep the whitespace in front of the ^=, hides rule from konqueror
+** this is css3, the validator doesn't like it when validating as css2
+*/
+#bodyContent a.external,
+#bodyContent a[href ^="gopher://"] {
+	background: url(external.png) center right no-repeat;
+	padding: 0 13px;
+}
+.rtl #bodyContent a.external,
+.rtl #bodyContent a[href ^="gopher://"] {
+	background-image: url(external-rtl.png);
+}
+#bodyContent a[href ^="https://"],
+.link-https {
+	background: url(lock_icon.gif) center right no-repeat;
+	padding: 0 16px;
+}
+#bodyContent a[href ^="mailto:"],
+.link-mailto {
+	background: url(mail_icon.gif) center right no-repeat;
+	padding: 0 18px;
+}
+#bodyContent a[href ^="news://"] {
+	background: url(news_icon.png) center right no-repeat;
+	padding: 0 18px;
+}
+#bodyContent a[href ^="ftp://"],
+.link-ftp {
+	background: url(file_icon.gif) center right no-repeat;
+	padding: 0 18px;
+}
+#bodyContent a[href ^="irc://"],
+#bodyContent a.extiw[href ^="irc://"],
+.link-irc {
+	background: url(discussionitem_icon.gif) center right no-repeat;
+	padding: 0 18px;
+}
+#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"],
+#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"],
+#bodyContent a.external[href $=".midi"], #bodyContent a.external[href $=".MIDI"],
+#bodyContent a.external[href $=".mp3"], #bodyContent a.external[href $=".MP3"],
+#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"],
+#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"],
+.link-audio {
+	background: url("audio.png") center right no-repeat;
+	padding: 0 13px;
+}
+#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"],
+#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"],
+#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"],
+#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"],
+.link-video {
+	background: url("video.png") center right no-repeat;
+	padding: 0 13px;
+}
+#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"],
+#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"],
+#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"],
+.link-document {
+	background: url("document.png") center right no-repeat;
+	padding: 0 12px;
+}
+
+/* for rtl wikis */
+.rtl #bodyContent a.external {
+	background-position: left;
+	padding-right: 0;
+}
+.rtl a.feedlink {
+	background-position: right;
+	padding-right: 16px;
+	padding-left: 0;
+}
+
+/* correction for ltr wikis */
+.ltr #bodyContent a.external {
+	padding-left: 0;
+}
+
+/* disable interwiki styling */
+#bodyContent a.extiw,
+#bodyContent a.extiw:active {
+	color: #36b;
+	background: none;
+	padding: 0;
+}
+#bodyContent a.external {
+	color: #36b;
+}
+/* this can be used in the content area to switch off
+special external link styling */
+#bodyContent .plainlinks a {
+	background: none !important;
+	padding: 0 !important;
+}
+/*
+** Structural Elements
+*/
+
+/*
+** general portlet styles (elements in the quickbar)
+*/
+.portlet {
+	border: none;
+	margin: 0 0 .5em;
+	padding: 0;
+	float: none;
+	width: 11.6em;
+	overflow: hidden;
+}
+.portlet h4 {
+	font-size: 95%;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.portlet h5 {
+	background: transparent;
+	padding: 0 1em 0 .5em;
+	display: inline;
+	height: 1em;
+	text-transform: lowercase;
+	font-size: 91%;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.portlet h6 {
+	background: #ffae2e;
+	border: 1px solid #2f6fab;
+	border-style: solid solid none solid;
+	padding: 0 1em 0 1em;
+	text-transform: lowercase;
+	display: block;
+	font-size: 1em;
+	height: 1.2em;
+	font-weight: normal;
+	white-space: nowrap;
+}
+.pBody {
+	font-size: 95%;
+	background-color: white;
+	color: black;
+	border-collapse: collapse;
+	border: 1px solid #aaa;
+	padding: 0 .8em .3em .5em;
+}
+.portlet h1,
+.portlet h2,
+.portlet h3,
+.portlet h4 {
+	margin: 0;
+	padding: 0;
+}
+.portlet ul {
+	line-height: 1.5em;
+	list-style-type: square;
+	list-style-image: url(bullet.gif);
+	font-size: 95%;
+}
+.portlet li {
+	padding: 0;
+	margin: 0;
+}
+
+/*
+** Logo properties
+*/
+
+#p-logo {
+	top: 0;
+	left: 0;
+	position: absolute; /*needed to use z-index */
+	z-index: 3;
+	height: 155px;
+	width: 12em;
+	overflow: visible;
+}
+#p-logo h5 {
+	display: none;
+}
+#p-logo a,
+#p-logo a:hover {
+	display: block;
+	height: 155px;
+	width: 12.2em;
+	background-repeat: no-repeat;
+	background-position: 35% 50% !important;
+	text-decoration: none;
+}
+
+/*
+** Search portlet
+*/
+#p-search {
+	position: relative;
+	z-index: 3;
+}
+input.searchButton {
+	margin-top: 1px;
+	font-size: 95%;
+}
+#searchGoButton {
+	padding-left: .5em;
+	padding-right: .5em;
+	font-weight: bold;
+}
+#searchInput {
+	width: 10.9em;
+	margin: 0;
+	font-size: 95%;
+}
+#p-search .pBody {
+	padding: .5em .4em .4em .4em;
+	text-align: center;
+}
+#p-search #searchform div div {
+	margin-top: .4em;
+	font-size: 95%;
+}
+/*
+** the personal toolbar
+*/
+#p-personal {
+	position: absolute;
+	left: 0;
+	top: 0;
+	z-index: 0;
+}
+#p-personal {
+	width: 100%;
+	white-space: nowrap;
+	padding: 0;
+	margin: 0;
+	border: none;
+	background: none;
+	overflow: visible;
+	line-height: 1.2em;
+}
+#p-personal h5 {
+	display: none;
+}
+#p-personal .portlet,
+#p-personal .pBody {
+	z-index: 0;
+	padding: 0;
+	margin: 0;
+	border: none;
+	overflow: visible;
+	background: none;
+}
+/* this is the ul contained in the portlet */
+#p-personal ul {
+	border: none;
+	line-height: 1.4em;
+	color: #2f6fab;
+	padding: 0 2em 0 3em;
+	margin: 0;
+	text-align: right;
+	list-style: none;
+	z-index: 0;
+	background: none;
+	cursor: default;
+}
+#p-personal li {
+	z-index: 0;
+	border: none;
+	padding: 0;
+	display: inline;
+	color: #2f6fab;
+	margin-left: 1em;
+	line-height: 1.2em;
+	background: none;
+}
+#p-personal li a {
+	text-decoration: none;
+	color: #005896;
+	padding-bottom: .2em;
+	background: none;
+}
+#p-personal li a:hover {
+	background-color: white;
+	padding-bottom: .2em;
+	text-decoration: none;
+}
+#p-personal li.active a:hover {
+	background-color: transparent;
+}
+/* the icon in front of the user name, single quotes
+in bg url to hide it from iemac */
+li#pt-userpage,
+li#pt-anonuserpage,
+li#pt-login {
+	background: url(user.gif) top left no-repeat;
+	padding-left: 20px;
+	text-transform: none;
+}
+#p-personal ul {
+	text-transform: lowercase;
+}
+#p-personal li.active {
+	font-weight: bold;
+}
+/*
+** the page-related actions- page/talk, edit etc
+*/
+#p-cactions {
+	position: absolute;
+	top: 1.3em;
+	left: 11.5em;
+	margin: 0;
+	white-space: nowrap;
+	width: 76%;
+	line-height: 1.1em;
+	overflow: visible;
+	background: none;
+	border-collapse: collapse;
+	padding-left: 1em;
+	list-style: none;
+	font-size: 95%;
+}
+#p-cactions ul {
+	list-style: none;
+}
+#p-cactions li {
+	display: inline;
+	border: 1px solid #aaa;
+	border-bottom: none;
+	padding: 0 0 .1em 0;
+	margin: 0 .3em 0 0;
+	overflow: visible;
+	background: white;
+}
+#p-cactions li.selected {
+	border-color: #fabd23;
+	padding: 0 0 .2em 0;
+	font-weight: bold;
+}
+#p-cactions li a {
+	background-color: #fbfbfb;
+	color: #002bb8;
+	border: none;
+	padding: 0 .8em .3em;
+	position: relative;
+	z-index: 0;
+	margin: 0;
+	text-decoration: none;
+}
+#p-cactions li.selected a {
+	z-index: 3;
+	padding: 0 1em .2em!important;
+	background-color: white;
+}
+#p-cactions .new a {
+	color: #ba0000;
+}
+#p-cactions li a:hover {
+	z-index: 3;
+	text-decoration: none;
+	background-color: white;
+}
+#p-cactions h5 {
+	display: none;
+}
+#p-cactions li.istalk {
+	margin-right: 0;
+}
+#p-cactions li.istalk a {
+	padding-right: .5em;
+}
+#p-cactions #ca-addsection a {
+	padding-left: .4em;
+	padding-right: .4em;
+}
+/* offsets to distinguish the tab groups */
+li#ca-talk {
+	margin-right: 1.6em;
+}
+li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
+	margin-left: 1.6em;
+}
+#p-cactions .pBody {
+	font-size: 1em;
+	background-color: transparent;
+	color: inherit;
+	border-collapse: inherit;
+	border: 0;
+	padding: 0;
+}
+#p-cactions .hiddenStructure {
+	display: none;
+}
+#p-cactions li a {
+	text-transform: lowercase;
+}
+
+#p-lang {
+	position: relative;
+	z-index: 3;
+}
+
+/* TODO: #t-iscite is only used by the Cite extension, come up with some
+ * system which allows extensions to add to this file on the fly
+ */
+#t-ispermalink, #t-iscite {
+	color: #999;
+}
+/*
+** footer
+*/
+#footer {
+	background-color: white;
+	border-top: 1px solid #fabd23;
+	border-bottom: 1px solid #fabd23;
+	margin: .6em 0 1em 0;
+	padding: .4em 0 1.2em 0;
+	text-align: center;
+	font-size: 90%;
+}
+#footer li {
+	display: inline;
+	margin: 0 1.3em;
+}
+#f-poweredbyico, #f-copyrightico {
+	margin: 0 8px;
+	position: relative;
+	top: -2px; /* Bump it up just a tad */
+}
+#f-poweredbyico {
+	float: right;
+	height: 1%;
+}
+#f-copyrightico {
+	float: left;
+	height: 1%;
+}
+
+/* js pref toc */
+#preftoc {
+	margin: 0;
+	padding: 0;
+	width: 100%;
+	clear: both;
+}
+#preftoc li {
+	background-color: #f0f0f0;
+	color: #000;
+}
+#preftoc li {
+	margin: 1px -2px 1px 2px;
+	float: left;
+	padding: 2px 0 3px 0;
+	border: 1px solid #fff;
+	border-right-color: #716f64;
+	border-bottom: 0;
+	position: relative;
+	white-space: nowrap;
+	list-style-type: none;
+	list-style-image: none;
+	z-index: 3;
+}
+#preftoc li.selected {
+	font-weight: bold;
+	background-color: #f9f9f9;
+	border: 1px solid #aaa;
+	border-bottom: none;
+	cursor: default;
+	top: 1px;
+	padding-top: 2px;
+	margin-right: -3px;
+}
+#preftoc > li.selected {
+	top: 2px;
+}
+#preftoc a,
+#preftoc a:active {
+	display: block;
+	color: #000;
+	padding: 0 .7em;
+	position: relative;
+	text-decoration: none;
+}
+#preftoc li.selected a {
+	cursor: default;
+	text-decoration: none;
+}
+#prefcontrol {
+	padding-top: 2em;
+	clear: both;
+}
+#preferences {
+	margin: 0;
+	border: 1px solid #aaa;
+	clear: both;
+	padding: 1.5em;
+	background-color: #F9F9F9;
+}
+.prefsection {
+	border: none;
+	padding: 0;
+	margin: 0;
+}
+.prefsection fieldset {
+	border: 1px solid #aaa;
+	float: left;
+	margin-right: 2em;
+}
+.prefsection legend {
+	font-weight: bold;   
+}
+.prefsection table, .prefsection legend {
+	background-color: #F9F9F9;
+}
+.mainLegend {
+	display: none;
+}
+div.prefsectiontip {
+	font-size: x-small;
+	padding: .2em 2em;
+	color: #666;
+}
+.btnSavePrefs {
+	font-weight: bold;
+	padding-left: .3em;
+	padding-right: .3em;
+}
+
+.preferences-login {
+	clear: both;
+	margin-bottom: 1.5em;
+}
+
+.prefcache {
+	font-size: 90%;
+	margin-top: 2em;
+}
+
+div#userloginForm form,
+div#userlogin form#userlogin2 {
+	margin: 0 3em 1em 0;
+	border: 1px solid #aaa;
+	clear: both;
+	padding: 1.5em 2em;
+	background-color: #f9f9f9;
+	float: left;
+}
+.rtl div#userloginForm form,
+.rtl div#userlogin form#userlogin2 {
+	float: right;
+}
+
+div#userloginForm table,
+div#userlogin form#userlogin2 table {
+	background-color: #f9f9f9;
+}
+
+div#userloginForm h2,
+div#userlogin form#userlogin2 h2 {
+	padding-top: 0;
+}
+
+div#userlogin .captcha,
+div#userloginForm .captcha {
+	border: 1px solid #bbb;
+	padding: 1.5em 2em;
+	background-color: white;
+}
+
+#loginend, #signupend {
+	clear: both;
+}
+
+#userloginprompt, #languagelinks {
+	font-size: 85%;
+}
+
+#login-sectiontip {
+	font-size: 85%;
+	line-height: 1.2;
+	padding-top: 2em;
+}
+
+#userlogin .loginText, #userlogin .loginPassword {
+	width: 12em;
+}
+
+#userloginlink a, #wpLoginattempt, #wpCreateaccount {
+	font-weight: bold;
+}
+
+/*
+** IE/Mac fixes, hope to find a validating way to move this
+** to a separate stylesheet. This would work but doesn't validate:
+** @import("IEMacFixes.css");
+*/
+/* tabs: border on the a, not the div */
+* > html #p-cactions li { border: none; }
+* > html #p-cactions li a {
+	border: 1px solid #aaa;
+	border-bottom: none;
+}
+* > html #p-cactions li.selected a { border-color: #fabd23; }
+/* footer icons need a fixed width */
+* > html #f-poweredbyico,
+* > html #f-copyrightico { width: 88px; }
+* > html #bodyContent,
+* > html #bodyContent pre {
+	overflow-x: auto;
+	width: 100%;
+	padding-bottom: 25px;
+}
+
+/* more IE fixes */
+/* float/negative margin brokenness */
+* html #footer {margin-top: 0;}
+* html #column-content {
+	display: inline;
+	margin-bottom: 0;
+}
+* html div.editsection { font-size: smaller; }
+#pagehistory li.selected { position: relative; }
+
+/* Mac IE 5.0 fix; floated content turns invisible */
+* > html #column-content {
+	float: none;
+}
+* > html #column-one {
+	position: absolute;
+	left: 0;
+	top: 0;
+}
+* > html #footer {
+	margin-left: 13.2em;
+}
+.redirectText {
+	font-size: 150%;
+	margin: 5px;
+}
+
+.printfooter {
+	display: none;
+}
+
+.not-patrolled {
+	background-color: #ffa;
+}
+div.patrollink {
+	clear: both;
+	font-size: 75%;
+	text-align: right;
+}
+span.newpage, span.minor, span.bot {
+	font-weight: bold;
+}
+span.unpatrolled {
+	font-weight: bold;
+	color: red;
+}
+
+.sharedUploadNotice {
+	font-style: italic;
+}
+
+span.updatedmarker {
+	color: black;
+	background-color: #0f0;
+}
+
+table.gallery {
+	border: 1px solid #ccc;
+	margin: 2px;
+	padding: 2px;
+	background-color: white;
+}
+
+table.gallery tr {
+	vertical-align: top;
+}
+
+table.gallery td {
+	vertical-align: top;
+	background-color: #f9f9f9;
+	border: solid 2px white;
+}
+/* Keep this temporarily so that cached pages will display right */
+table.gallery td.galleryheader {
+    text-align: center;
+	font-weight: bold;
+}
+table.gallery caption {
+	font-weight: bold;
+}
+
+div.gallerybox {
+	margin: 2px;
+}
+
+div.gallerybox div.thumb {
+	text-align: center;
+	border: 1px solid #ccc;
+	margin: 2px;
+}
+
+div.gallerytext {
+	overflow: hidden;
+	font-size: 94%;
+	padding: 2px 4px;
+}
+
+span.comment {
+	font-style: italic;
+}
+
+span.changedby {
+	font-size: 95%;
+}
+
+.previewnote {
+	text-indent: 3em;
+	color: #c00;
+	border-bottom: 1px solid #aaa;
+	padding-bottom: 1em;
+	margin-bottom: 1em;
+}
+
+.previewnote p {
+	margin: 0;
+	padding: 0;
+}
+
+.editExternally {
+	border: 1px solid gray;
+	background-color: #ffffff;
+	padding: 3px;
+	margin-top: 0.5em;
+	float: left;
+	font-size: small;
+	text-align: center;
+}
+.editExternallyHelp {
+	font-style: italic;
+	color: gray;
+}
+
+.toggle {
+	margin-left: 2em;
+	text-indent: -2em;
+}
+
+/* Classes for EXIF data display */
+table.mw_metadata {
+	font-size: 0.8em;
+	margin-left: 0.5em;
+	margin-bottom: 0.5em;
+	width: 300px;
+}
+
+table.mw_metadata caption {
+	font-weight: bold;
+}
+
+table.mw_metadata th {
+	font-weight: normal;
+}
+
+table.mw_metadata td {
+	padding: 0.1em;
+}
+
+table.mw_metadata {
+	border: none;
+	border-collapse: collapse;
+}
+
+table.mw_metadata td, table.mw_metadata th {
+	text-align: center;
+	border: 1px solid #aaaaaa;
+	padding-left: 0.1em;
+	padding-right: 0.1em;
+}
+
+table.mw_metadata th {
+	background-color: #f9f9f9;
+}
+
+table.mw_metadata td {
+	background-color: #fcfcfc;
+}
+
+table.collapsed tr.collapsable {
+	display: none;
+}
+
+
+/* filetoc */
+ul#filetoc {
+	text-align: center;
+	border: 1px solid #aaaaaa;
+	background-color: #f9f9f9;
+	padding: 5px;
+	font-size: 95%;
+	margin-bottom: 0.5em;
+	margin-left: 0;
+	margin-right: 0;
+}
+
+#filetoc li {
+	display: inline;
+	list-style-type: none;
+	padding-right: 2em;
+}
+
+input#wpSummary {
+	width: 80%;
+}
+
+/* @bug 1714 */
+input#wpSave, input#wpDiff {
+	margin-right: 0.33em;
+}
+
+#wpSave {
+	font-weight: bold;
+}
+
+/* Classes for article validation */
+
+table.revisionform_default {
+	border: 1px solid #000000;
+}
+
+table.revisionform_focus {
+	border: 1px solid #000000;
+	background-color:#00BBFF;
+}
+
+tr.revision_tr_default {
+	background-color:#EEEEEE;
+}
+
+tr.revision_tr_first {
+	background-color:#DDDDDD;
+}
+
+p.revision_saved {
+	color: green;
+	font-weight:bold;
+}
+
+#mw_trackbacks {
+	border: solid 1px #bbbbff;
+	background-color: #eeeeff;
+	padding: 0.2em;
+}
+
+
+/* Allmessages table */
+
+#allmessagestable th {
+	background-color: #b2b2ff;
+}
+
+#allmessagestable tr.orig {
+	background-color: #ffe2e2;
+}
+
+#allmessagestable tr.new {
+	background-color: #e2ffe2;
+}
+
+#allmessagestable tr.def {
+	background-color: #f0f0ff;
+}
+
+
+/* noarticletext */
+div.noarticletext {
+	border: 1px solid #ccc;
+	background: #fff;
+	padding: .2em 1em;
+	color: #000;
+}
+
+div#searchTargetContainer {
+	left:       10px;
+	top:        10px;
+	width:      90%;
+	background: white;
+}
+
+div#searchTarget {
+	padding:    3px;
+	margin:     5px;
+	background: #F0F0F0;
+	border:     solid 1px blue;
+}
+
+div#searchTarget ul li {
+	list-style: none;
+}
+
+div#searchTarget ul li:before {
+	color: orange;
+	content: "\00BB \0020";
+}
+
+div#searchTargetHide {
+	float:right;
+	border:solid 1px black;
+	background:#DCDCDC;
+	padding:2px;
+}
+
+#powersearch p {
+	margin-top:0px;
+}
+
+div.multipageimagenavbox {
+   border: solid 1px silver;
+   padding: 4px;
+   margin: 1em;
+   background: #f0f0f0;
+}
+
+div.multipageimagenavbox div.thumb {
+   border: none;
+   margin-left: 2em;
+   margin-right: 2em;
+}
+
+div.multipageimagenavbox hr {
+   margin: 6px;
+}
+
+table.multipageimage td {
+   text-align: center;
+}
+
+/** Special:Version */
+
+table#sv-ext, table#sv-hooks, table#sv-software {
+	margin: 1em;
+	padding:0em;
+}
+
+#sv-ext td, #sv-hooks td, #sv-software td,
+#sv-ext th, #sv-hooks th, #sv-software th {
+	border: 1px solid #A0A0A0;
+	padding: 0 0.15em 0 0.15em;
+}
+#sv-ext th, #sv-hooks th, #sv-software th {
+	background-color: #F0F0F0;
+	color: black;
+	padding: 0 0.15em 0 0.15em;
+}
+tr.sv-space{
+	height: 0.8em;
+	border:none;
+}
+tr.sv-space td { display: none; }
+
+/*
+  Table pager (e.g. Special:Imagelist)
+  - remove underlines from the navigation link
+  - collapse borders
+  - set the borders to outsets (similar to Special:Allmessages)
+  - remove line wrapping for all td and th, set background color
+  - restore line wrapping for the last two table cells (description and size)
+*/
+.TablePager { min-width: 80%; }
+.TablePager_nav a { text-decoration: none; }
+.TablePager { border-collapse: collapse; }
+.TablePager, .TablePager td, .TablePager th { 
+	border: 1px solid #aaaaaa;
+	padding: 0 0.15em 0 0.15em;
+}
+.TablePager th { background-color: #eeeeff }
+.TablePager td { background-color: #ffffff }
+.TablePager tr:hover td { background-color: #eeeeff }
+
+.imagelist td, .imagelist th { white-space: nowrap }
+.imagelist .TablePager_col_links { background-color: #eeeeff }
+.imagelist .TablePager_col_img_description { white-space: normal }
+.imagelist th.TablePager_sort { background-color: #ccccff }
+
+.templatesUsed { margin-top: 1.5em; }
+
+.mw-summary-preview {
+	margin: 0.1em 0;
+}
+
+/* Friendlier slave lag warnings */
+div.mw-lag-warn-normal,
+div.mw-lag-warn-high {
+	padding: 3px;
+	text-align: center;
+	margin: 3px auto;
+}
+div.mw-lag-warn-normal {
+	border: 1px solid #FFCC66;
+	background-color: #FFFFCC;
+}
+div.mw-lag-warn-high {
+	font-weight: bold;
+	border: 2px solid #FF0033;
+	background-color: #FFCCCC;
+}
+
+.MediaTransformError {
+	background-color: #ccc;
+	padding: 0.1em;
+}
+.MediaTransformError td {
+	text-align: center;
+	vertical-align: middle;
+	font-size: 90%;
+}
+
+/** Special:Search stuff */
+div#mw-search-interwiki-caption {
+	text-align: center;
+	font-weight: bold;
+	font-size: 95%;
+}
+
+.mw-search-interwiki-project {
+	font-size: 97%;
+	text-align: left;
+	padding-left: 0.2em;
+	padding-right: 0.15em;
+	padding-bottom: 0.2em;
+	padding-top: 0.15em;
+	background: #cae8ff;
+}
+
+/* God-damned hack for the crappy layout */
+.os-suggest {
+	font-size: 127%;
+}
+
+
+/* from the old-style Evolvis Wiki CSS file */
+
+.wikitable, .prettytable {
+	margin:1em 1em 1em 0;
+	background:#F9F9F9;
+	border:1px #AAAAAA solid;
+	border-collapse:collapse;
+	empty-cells:show;
+}
+.wikitable th, .wikitable td, .prettytable th, .prettytable td {
+	border:1px #AAAAAA solid;
+	padding:0.3em;
+}
+.wikitable caption, .prettytable caption {
+	margin-left:inherit;
+	margin-right:inherit;
+	font-weight:bold;
+}
+.nogrid th, .nogrid td {
+	border:none;
+}
+
+.float-left {
+	float:left;
+	clear:left;
+}
+.float-right {
+	float:right;
+	clear:right;
+	margin:1em 0 1em 1em;
+}
+.centered {
+	margin-left:auto;
+	margin-right:auto;
+}
+
+/*
+ * Farbdefinitionen für Rahmen und Hintergründe von
+ * [[Wikipedia:Textbausteine|Textbausteinen]].
+ * Hier: Standardvorgaben für "dunkle Schrift auf hellem Grund".
+ * Für Hell-auf-dunkel-Skins ([[MediaWiki:Amethyst.css|Amethyst]])
+ * müssen dort entsprechende Definitionen zusätzlich eingetragen
+ * werden! Anpassungen für andere Skins sind optional.
+ * (Die Angaben der Rahmenstärke dienen der Bequemlichkeit, sodaß
+ * man für dünne Rahmen nur noch "border-style" angeben muss.)
+ */
+
+/* Wie Inhaltsverzeichnis */
+.rahmenfarbe1 {
+	border-color:#AAAAAA;
+	border-width:1px;
+}
+/* Unauffällig, geringer Kontrast */
+.rahmenfarbe2 {
+	border-color:#E9E9E9;
+	border-width:1px;
+}
+/* "Rot", auffällig */
+.rahmenfarbe3 {
+	border-color:#C00000;
+	border-width:1px;
+}
+/* Neutrale Farbe, deutlich */
+.rahmenfarbe4 {
+	border-color:#8888AA;
+	border-width:1px;
+}
+/* "Schwarz", hoher Kontrast */
+.rahmenfarbe5 {
+	border-color:#000000;
+	border-width:1px;
+}
+
+/* Wie Inhaltsverzeichnis */
+.hintergrundfarbe1 {
+	background-color:#F9F9F9;
+}
+/* "Weiß", für Nicht-Artikel-Seiten, neutral */
+.hintergrundfarbe2 {
+	background-color:#FFFFFF;
+}
+/* "Gelb", auffällig */
+.hintergrundfarbe3 {
+	background-color:#FFFF40;
+}
+/* Sehr auffällig */
+.hintergrundfarbe4 {
+	background-color:#FFAA00;
+}
+/* Neutral, abgesetzt */
+.hintergrundfarbe5 {
+	background-color:#E0E0E0;
+}
+/* Allgemein „bunt“, für Hervorhebungen und Unterscheidungen */
+.hintergrundfarbe6 {
+	background-color:#B3B7FF;
+}
+/* Allgemein „bunt“, für Hervorhebungen und Unterscheidungen */
+.hintergrundfarbe7 {
+	background-color:#FFCBCB;
+}
+/* Allgemein „bunt“, für Hervorhebungen und Unterscheidungen */
+.hintergrundfarbe8 {
+	background-color:#FFEBAD;
+}
+/* Allgemein „bunt“, für Hervorhebungen und Unterscheidungen */
+.hintergrundfarbe9 {
+	background-color:#B9FFC5;
+}
+
+/* Keine Vergrößerung der Zeilenhöhe durch hochgestellte Zahlen der Fußnoten */
+.reference, .references sup {
+	font-size:91%;
+	vertical-align:text-top;
+	position:relative;
+	top:-0.3em;
+}
+
+/* Hervorhebung der angeklickten Fußnoten und der Rückverweise in blau */
+ol.references > li:target {
+	background-color:#DDEEFF;
+}
+sup.reference:target {
+	background-color:#DDEEFF;
+}

Modified: branches/messer-51/src/plugins/mediawiki/packaging/control/160plugin-mediawiki
===================================================================
--- branches/messer-51/src/plugins/mediawiki/packaging/control/160plugin-mediawiki	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/packaging/control/160plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,5 @@
 Package: @PACKAGE at -plugin-mediawiki
 Architecture: all
-Depends: @OLDPACKAGE at -common (>= 4.8), @OLDPACKAGE at -db-postgresql (>= 4.8) | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 (>= 4.8) | @OLDPACKAGE at -web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15~), php5-cli, php5-gd, ${misc:Depends}
-Provides: @OLDPACKAGE at -plugin-mediawiki
-Conflicts: @OLDPACKAGE at -plugin-mediawiki (<< 5.0.51-2)
-Replaces: @OLDPACKAGE at -plugin-mediawiki (<< 5.0.51-2)
+Depends: @OLDPACKAGE at -common (>= 4.8), @OLDPACKAGE at -db-postgresql (>= 4.8) | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 (>= 4.8) | @OLDPACKAGE at -web, postgresql-contrib | mysql-server, mediawiki (>= 1:1.15~), mediawiki (<< 1:1.16~), php5-cli, php5-gd, ${misc:Depends}, @OLDPACKAGE at -plugin-mediawiki (>= 5.1.1+evolvis41~)
+Provides: evolvisforge-plugin-mediawiki-ff
 Description: Mediawiki plugin for FusionForge

Modified: branches/messer-51/src/plugins/mediawiki/packaging/cron.d/plugin-mediawiki
===================================================================
--- branches/messer-51/src/plugins/mediawiki/packaging/cron.d/plugin-mediawiki	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/packaging/cron.d/plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -17,4 +17,4 @@
 1,16,31,46 * * * * root [ -e $MWCRON/create-imagedirs.php ] && $PHP $MWCRON/create-imagedirs.php
 
 # Create wiki XML dumps every night
-55 1 * * * root [ -e $MWCRON/dump-wikis.php ] && $PHP $MWCRON/cronjobs/dump-wikis.php
+55 1 * * * root [ -e $MWCRON/dump-wikis.php ] && $PHP $MWCRON/dump-wikis.php

Modified: branches/messer-51/src/plugins/mediawiki/packaging/install/plugin-mediawiki
===================================================================
--- branches/messer-51/src/plugins/mediawiki/packaging/install/plugin-mediawiki	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/packaging/install/plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,7 +3,6 @@
 plugins/mediawiki/bin/*            usr/share/gforge/plugins/mediawiki/bin/
 plugins/mediawiki/common/*         usr/share/gforge/plugins/mediawiki/common/
 plugins/mediawiki/cronjobs/*       usr/share/gforge/plugins/mediawiki/cronjobs/
-plugins/mediawiki/db/*		   usr/share/gforge/plugins/mediawiki/lib/
 plugins/mediawiki/www/*            usr/share/gforge/plugins/mediawiki/www/
 plugins/mediawiki/mediawiki-skin/* usr/share/mediawiki/skins/
 plugins/mediawiki/etc/httpd.d/*    usr/share/gforge/etc/httpd.d/

Modified: branches/messer-51/src/plugins/mediawiki/packaging/links/plugin-mediawiki
===================================================================
--- branches/messer-51/src/plugins/mediawiki/packaging/links/plugin-mediawiki	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/packaging/links/plugin-mediawiki	2012-04-07 14:10:47 UTC (rev 18260)
@@ -17,3 +17,33 @@
 usr/share/mediawiki				var/lib/@OLDPACKAGE@/plugins/mediawiki/master
 
 /usr/share/@OLDPACKAGE@/plugins/mediawiki/www /usr/share/@OLDPACKAGE@/www/plugins/mediawiki
+
+usr/share/mediawiki/skins/monobook/FF2Fixes.css usr/share/mediawiki/skins/fusionforge/FF2Fixes.css
+usr/share/mediawiki/skins/monobook/IE50Fixes.css usr/share/mediawiki/skins/fusionforge/IE50Fixes.css
+usr/share/mediawiki/skins/monobook/IE55Fixes.css usr/share/mediawiki/skins/fusionforge/IE55Fixes.css
+usr/share/mediawiki/skins/monobook/IE60Fixes.css usr/share/mediawiki/skins/fusionforge/IE60Fixes.css
+usr/share/mediawiki/skins/monobook/IE70Fixes.css usr/share/mediawiki/skins/fusionforge/IE70Fixes.css
+usr/share/mediawiki/skins/monobook/IEMacFixes.css usr/share/mediawiki/skins/fusionforge/IEMacFixes.css
+usr/share/mediawiki/skins/monobook/KHTMLFixes.css usr/share/mediawiki/skins/fusionforge/KHTMLFixes.css
+usr/share/mediawiki/skins/monobook/Opera6Fixes.css usr/share/mediawiki/skins/fusionforge/Opera6Fixes.css
+usr/share/mediawiki/skins/monobook/Opera7Fixes.css usr/share/mediawiki/skins/fusionforge/Opera7Fixes.css
+usr/share/mediawiki/skins/monobook/Opera9Fixes.css usr/share/mediawiki/skins/fusionforge/Opera9Fixes.css
+usr/share/mediawiki/skins/monobook/audio.png usr/share/mediawiki/skins/fusionforge/audio.png
+usr/share/mediawiki/skins/monobook/bullet.gif usr/share/mediawiki/skins/fusionforge/bullet.gif
+usr/share/mediawiki/skins/monobook/discussionitem_icon.gif usr/share/mediawiki/skins/fusionforge/discussionitem_icon.gif
+usr/share/mediawiki/skins/monobook/document.png usr/share/mediawiki/skins/fusionforge/document.png
+usr/share/mediawiki/skins/monobook/external-rtl.png usr/share/mediawiki/skins/fusionforge/external-rtl.png
+usr/share/mediawiki/skins/monobook/external.png usr/share/mediawiki/skins/fusionforge/external.png
+usr/share/mediawiki/skins/monobook/file_icon.gif usr/share/mediawiki/skins/fusionforge/file_icon.gif
+usr/share/mediawiki/skins/monobook/headbg.jpg usr/share/mediawiki/skins/fusionforge/headbg.jpg
+usr/share/mediawiki/skins/monobook/link_icon.gif usr/share/mediawiki/skins/fusionforge/link_icon.gif
+usr/share/mediawiki/skins/monobook/lock_icon.gif usr/share/mediawiki/skins/fusionforge/lock_icon.gif
+usr/share/mediawiki/skins/monobook/magnify-clip.png usr/share/mediawiki/skins/fusionforge/magnify-clip.png
+usr/share/mediawiki/skins/monobook/mail_icon.gif usr/share/mediawiki/skins/fusionforge/mail_icon.gif
+usr/share/mediawiki/skins/monobook/news_icon.png usr/share/mediawiki/skins/fusionforge/news_icon.png
+usr/share/mediawiki/skins/monobook/required.gif usr/share/mediawiki/skins/fusionforge/required.gif
+usr/share/mediawiki/skins/monobook/rtl.css usr/share/mediawiki/skins/fusionforge/rtl.css
+usr/share/mediawiki/skins/monobook/user.gif usr/share/mediawiki/skins/fusionforge/user.gif
+usr/share/mediawiki/skins/monobook/video.png usr/share/mediawiki/skins/fusionforge/video.png
+usr/share/mediawiki/skins/monobook/wiki-indexed.png usr/share/mediawiki/skins/fusionforge/wiki-indexed.png
+usr/share/mediawiki/skins/monobook/wiki.png usr/share/mediawiki/skins/fusionforge/wiki.png

Modified: branches/messer-51/src/plugins/mediawiki/www/LocalSettings.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/www/LocalSettings.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/www/LocalSettings.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,30 +1,31 @@
 <?php
-/* 
+/*-
+ * MediaWiki setup for FusionForge
+ *
  * Copyright (C) 2010-2011 Roland Mas
- * Copyright (C) 2010-2011 Thorsten Glaser
+ * Copyright © 2010, 2011, 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
  * Copyright (C) 2010 Olaf Lenz
  *
- * This file is part of FusionForge.
+ * This file is part of FusionForge. FusionForge 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 Licence, or (at your option)
+ * any later version.
  *
- * FusionForge 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.
- *
  * FusionForge 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.,
+ * with FusionForge; if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *-
+ * This contains the local settings for Mediawiki as used in the
+ * Mediawiki plugin of FusionForge.
  */
 
-/** This contains the local settings for Mediawiki as used in the
- *  Mediawiki plugin of FusionForge.
- */
-
 require_once dirname(__FILE__) . '/../../../www/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 sysdebug_lazymode(true);
@@ -51,7 +52,7 @@
 }
 
 $gconfig_dir = forge_get_config('mwdata_path', 'mediawiki');
-$project_dir = forge_get_config('projects_path', 'mediawiki') . "/" 
+$project_dir = forge_get_config('projects_path', 'mediawiki') . "/"
 	. $fusionforgeproject ;
 
 if (!is_dir($project_dir)) {
@@ -69,7 +70,32 @@
                 die( "This script must be run from the command line\n" );
         }
 }
+
+# Start the autoloader, so that extensions can derive classes from core files
+require_once("$IP/includes/AutoLoader.php");
+
+class DatabaseForge extends DatabasePostgres {
+	function DatabaseForge($server=false, $user=false, $password=false,
+	    $dbName=false, $failFunction=false, $flags=0) {
+		global $wgDBtype;
+
+		$wgDBtype = "postgres";
+		return DatabasePostgres::DatabasePostgres($server, $user,
+		    $password, $dbName, $failFunction, $flags);
+	}
+
+	function tableName($name) {
+		switch ($name) {
+		case 'interwiki':
+			return 'public.interwiki';
+		default:
+			return DatabasePostgres::tableName($name);
+		}
+	}
+}
+
 $g = group_get_object_by_name($fusionforgeproject) ;
+//$wgSitename         = "$sys_name Wiki";
 $wgSitename         = $g->getPublicName() . " Wiki";
 $wgScriptPath       = "/plugins/mediawiki/wiki/$fusionforgeproject" ;
 
@@ -91,15 +117,17 @@
 
 $wgEnableUploads = forge_get_config('enable_uploads', 'mediawiki');
 $wgVerifyMimeType = false;
+$wgStrictFileExtensions = false;
 $wgUploadDirectory = "$project_dir/images";
 $wgUseImageMagick = true;
 $wgImageMagickConvertCommand = "/usr/bin/convert";
 $wgLocalInterwiki   = $wgSitename;
 $wgShowExceptionDetails = true ;
 
-$wgLanguageCode = strtolower(forge_get_config('default_country_code'));
-
+/* this is required, as we ship a special MessagesEn.php file into MW */
+$wgLanguageCode = "en";
 $wgDefaultSkin = 'fusionforge';
+//$wgStyleDirectory = '/usr/share/mediawiki/skins';
 
 $GLOBALS['sys_dbhost'] = forge_get_config('database_host') ;
 $GLOBALS['sys_dbport'] = forge_get_config('database_port') ;
@@ -119,28 +147,13 @@
 $GLOBALS['sys_session_expire'] = forge_get_config('session_expire');
 $GLOBALS['REMOTE_ADDR'] = getStringFromServer('REMOTE_ADDR') ;
 $GLOBALS['HTTP_USER_AGENT'] = getStringFromServer('HTTP_USER_AGENT') ;
+$wgServer = util_url_prefix() . $GLOBALS['sys_default_domain'];
 
-require_once("$IP/includes/Exception.php");
-require_once("$IP/includes/db/Database.php");
-require_once("$IP/includes/db/DatabasePostgres.php");
-class DatabaseForge extends DatabasePostgres {
-	function DatabaseForge($server=false, $user=false, $password=false,
-			       $dbName=false, $failFunction=false, $flags=0) {
-		global $wgDBtype;
-		
-		$wgDBtype = "postgres";
-		return DatabasePostgres::DatabasePostgres($server, $user,
-							  $password, $dbName, $failFunction, $flags);
-	}
-	
-	function tableName($name) {
-		switch ($name) {
-		case 'interwiki':
-			return 'public.plugin_mediawiki_interwiki';
-		default:
-			return DatabasePostgres::tableName($name);
-		}
-	}
+/* hack, since this doesn’t work inside FusionForgeMWAuth */
+//$evolvis_is_siteadmin = forge_check_global_perm('forge_admin') ? true : false;
+
+function ifsetor(&$val, $default=false) {
+	return (isset($val) ? $val : $default);
 }
 
 function FusionForgeRoleToMediawikiGroupName ($role, $project) {
@@ -195,6 +208,11 @@
 			foreach ($available_roles as $r) {
 				$linked_projects = $r->getLinkedProjects () ;
 
+				if ($r->hasGlobalPermission('forge_admin')) {
+					$rs[] = $r ;
+					continue ;
+				}
+
 				foreach ($linked_projects as $lp) {
 					if ($lp->getID() == $g->getID()) {
 						$rs[] = $r ;
@@ -208,7 +226,7 @@
 				$rs = array ($r) ;
 			}
 		}
-		
+
 		// Sync MW groups for current user with FF roles
 		$rnames = array () ;
 		foreach ($rs as $r) {
@@ -243,13 +261,24 @@
 
 	$g = group_get_object_by_name ($fusionforgeproject) ;
 	// Setup rights for all roles referenced by project
-	$rs = $g->getRoles() ;
+	$rids = $g->getRolesID() ;
+	$e = RBACEngine::getInstance();
+	$grs = $e->getGlobalRoles();
+	foreach ($grs as $r) {
+		$rids[] = $r->getID();
+	}
+	$rids = array_unique($rids);
+	$rs = array();
+	foreach ($rids as $rid) {
+		$rs[] = $e->getRoleById($rid);
+	}
+
 	foreach ($rs as $r) {
 		$gr = FusionForgeRoleToMediawikiGroupName ($r, $g) ;
-		
+
 		// Read access
 		$wgGroupPermissions[$gr]['read'] = $r->hasPermission ('plugin_mediawiki_read', $g->getID()) ;
-		
+
 		// Day-to-day edit privileges
 		$wgGroupPermissions[$gr]['edit']               = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editexisting') ;
 		$wgGroupPermissions[$gr]['writeapi']           = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editexisting') ;
@@ -259,33 +288,38 @@
 		$wgGroupPermissions[$gr]['move']               = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
 		$wgGroupPermissions[$gr]['move-subpages']      = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
 		$wgGroupPermissions[$gr]['move-rootuserpages'] = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
-		$wgGroupPermissions[$gr]['delete']             = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
-		$wgGroupPermissions[$gr]['undelete']           = $r->hasPermission ('plugin_mediawiki_edit', $g->getID(), 'editmove') ;
-		
+
 		// File upload privileges
 		$wgGroupPermissions[$gr]['upload']          = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'upload') ;
 		$wgGroupPermissions[$gr]['reupload-own']    = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'upload') ;
 		$wgGroupPermissions[$gr]['reupload']        = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
 		$wgGroupPermissions[$gr]['reupload-shared'] = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
 		$wgGroupPermissions[$gr]['upload_by_url']   = $r->hasPermission ('plugin_mediawiki_upload', $g->getID(), 'reupload') ;
-		
+
 		// Administrative tasks
 		$wgGroupPermissions[$gr]['editinterface'] = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
 		$wgGroupPermissions[$gr]['import']        = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
 		$wgGroupPermissions[$gr]['importupload']  = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
 		$wgGroupPermissions[$gr]['siteadmin']     = $r->hasPermission ('plugin_mediawiki_admin', $g->getID()) ;
-	}	
 
-	$rs = RBACEngine::getInstance()->getGlobalRoles();
-	foreach ($rs as $r) {
-		$gr = FusionForgeRoleToMediawikiGroupName ($r, $g) ;
-		
 		// Interwiki management restricted to forge admins
 		$wgGroupPermissions[$gr]['interwiki'] = $r->hasGlobalPermission ('forge_admin') ;
+
+		// Remove pages from history
+		$wgGroupPermissions[$gr]['delete']         = $r->hasPermission('plugin_mediawiki_delete', $g->getID(), 'delete');
+		$wgGroupPermissions[$gr]['bigdelete']      = $r->hasPermission('plugin_mediawiki_delete', $g->getID(), 'delete');
+		$wgGroupPermissions[$gr]['deletedhistory'] = $r->hasPermission('plugin_mediawiki_delete', $g->getID(), 'delete');
+		$wgGroupPermissions[$gr]['browsearchive']  = $r->hasPermission('plugin_mediawiki_delete', $g->getID(), 'delete');
+		$wgGroupPermissions[$gr]['undelete']       = $r->hasPermission('plugin_mediawiki_delete', $g->getID(), 'delete');
 	}
 }
 
-function NoLinkOnMainPage(&$personal_urls){
+// debian style system-wide mediawiki extensions
+if (is_file("/etc/mediawiki-extensions/extensions.php")) {
+	include("/etc/mediawiki-extensions/extensions.php");
+}
+
+function NoLinkOnMainPage(&$personal_urls) {
 	unset($personal_urls['anonlogin']);
 	unset($personal_urls['anontalk']);
 	unset($personal_urls['logout']);
@@ -311,9 +345,18 @@
 		}
 
 		function getFullUrl() {
+			global $wgScriptPath;
+
 			$u = $this->dst;
 			if ($this->dstappendself) {
-				$u .= urlencode(getStringFromServer('REQUEST_URI'));
+				$r = getStringFromRequest("returnto");
+				if ($r) {
+					$r = $wgScriptPath .
+					    "/index.php?title=" . $r;
+				} else {
+					$r = getStringFromServer("REQUEST_URI");
+				}
+				$u .= urlencode($r);
 			}
 			return util_make_url($u);
 		}
@@ -349,6 +392,14 @@
 
 $GLOBALS['wgHooks']['UserLoadFromSession'][]='FusionForgeMWAuth';
 
+function FusionForge_jshook(&$vars) {
+	global $sys_default_domain;
+
+	$vars["sys_default_domain"] = $sys_default_domain;
+	return true;
+}
+$wgHooks['MakeGlobalVariablesScript'][] = 'FusionForge_jshook';
+
 $zeroperms = array ('read', 'writeapi', 'edit', 'move-subpages', 'move-rootuserpages', 'reupload-shared', 'createaccount');
 
 foreach ($zeroperms as $i) {
@@ -362,20 +413,36 @@
 $wgBreakFrames = false ;
 ini_set ('memory_limit', '100M') ;
 
-// LOAD THE SITE-WIDE AND PROJECT-SPECIFIC EXTRA-SETTINGS
-if (is_file(forge_get_config('config_path')."/plugins/mediawiki/LocalSettings.php")) {
-	include(forge_get_config('config_path')."/plugins/mediawiki/LocalSettings.php");
-}
+$wgLogo = "/themes/$sys_theme/images/wgLogo.png";
+$wgUseTeX = true;			// mediawiki-math
 
-// debian style system-wide mediawiki extensions
-if (is_file("/etc/mediawiki-extensions/extensions.php")) {
-        include( "/etc/mediawiki-extensions/extensions.php" );
-}
+$wgMaxCredits = 1;
+$wgShowCreditsIfMax = true;
+$wgShowIPinHeader = false;
 
+// drive the Collection extension
+$wgCollectionLicenseName = 'CC-BY-NC-SA 3.0 (de)';
+$wgCollectionLicenseURL = 'http://evolvis.org/plugins/mediawiki/wiki/evolvis/index.php?title=WikiContentLicence&action=raw';
+$wgEnableApi = true;
+
+// drive the LanguageSelector and Polyglot extensions
+$wgLanguageSelectorLocation = LANGUAGE_SELECTOR_MANUAL;
+//$wgPolyglotLanguages = explode(" ", $sys_mw_wgPolyglotLanguages);
+$wgPolyglotLanguages = array('en', 'de');	// for now
+
+// drive the RSS_Reader extension
+$egCacheDir = "$project_dir/cache/rss";
+$egCache = file_exists($egCacheDir . "/.");
+
 if (file_exists("$wgUploadDirectory/.wgLogo.png")) {
 	$wgLogo = "$wgScriptPath/images/.wgLogo.png";
 }
 
+// LOAD THE SITE-WIDE AND PROJECT-SPECIFIC EXTRA-SETTINGS
+if (is_file(forge_get_config('config_path')."/plugins/mediawiki/LocalSettings.php")) {
+	include(forge_get_config('config_path')."/plugins/mediawiki/LocalSettings.php");
+}
+
 // forge global settings
 if (is_file("$gconfig_dir/ForgeSettings.php")) {
 	include ("$gconfig_dir/ForgeSettings.php") ;
@@ -385,6 +452,11 @@
         include ("$project_dir/ProjectSettings.php") ;
 }
 
+// fixup things to do after the last include/require
+if (!is_writable($wgUploadDirectory)) {
+	$wgUseTeX = false;
+}
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"

Modified: branches/messer-51/src/plugins/mediawiki/www/frame.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/www/frame.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/www/frame.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -16,11 +16,11 @@
 
 $group = group_get_object($group_id);
 if (!$group) {
-	exit_error ("Invalid Project", "Invalid Project");
+	exit_error("Invalid Project");
 }
 
 if (!$group->usesPlugin ($pluginname)) {
-	exit_error ("Error", "First activate the $pluginname plugin through the Project's Admin Interface");
+	exit_error("Error: First activate the $pluginname plugin through the Project's Admin Interface");
 }
 
 $params = array () ;
@@ -33,7 +33,9 @@
 site_project_header($params);
 
 if (file_exists ('/var/lib/gforge/plugins/mediawiki/wikidata/'.$group->getUnixName().'/LocalSettings.php')) {
-	echo '<iframe src="'.util_make_url('/plugins/mediawiki/wiki/'.$group->getUnixName().'/index.php').'" frameborder="0" width=100% height=700></iframe>' ;
+	echo '<iframe src="' . util_make_url('/plugins/mediawiki/wiki/' .
+	    $group->getUnixName() . '/index.php') .
+	    '" frameborder="0" width="100%" height="700"></iframe>';
 } else {
 	print '<h2>'._('Wiki not created yet, please wait for a few minutes.').'</h2>';
 }
@@ -44,5 +46,3 @@
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/plugins/mediawiki/www/plugin_admin.php
===================================================================
--- branches/messer-51/src/plugins/mediawiki/www/plugin_admin.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/mediawiki/www/plugin_admin.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -2,7 +2,7 @@
 /*-
  * MediaWiki Plugin for FusionForge
  *
- * Copyright © 2010
+ * Copyright © 2010, 2011, 2012
  *      Thorsten Glaser <t.glaser at tarent.de>
  * All rights reserved.
  *
@@ -76,8 +76,8 @@
 	exit_error("Access Denied", "You are not an admin of this project");
 
 $group_unix_name = $group->getUnixName();
-$wgUploadDirectory = "/var/lib/gforge/plugins/mediawiki/wikidata/" .
-    $group_unix_name . "/images";
+$wikidir = "/var/lib/gforge/plugins/mediawiki/wikidata/" . $group_unix_name;
+$wgUploadDirectory = $wikidir . "/images";
 $group_logo = $wgUploadDirectory . "/.wgLogo.png";
 $group_logo_url = util_make_url("/plugins/mediawiki/wiki/" .
     $group_unix_name . "/images/.wgLogo.png");
@@ -113,7 +113,7 @@
 			$feedback = _('Unknown file upload error.');
 			break;
 		}
-	} else if (forge_get_config ('use_manual_uploads') && $manual_filename &&
+	} else if (forge_get_config('use_manual_uploads') && $manual_filename &&
 	    util_is_valid_filename($manual_filename) &&
 	    is_file($incoming.'/'.$manual_filename)) {
 		$incoming = forge_get_config('groupdir_prefix')."/$group_unix_name/incoming";
@@ -135,20 +135,24 @@
 }
 
 site_project_header(array(
-	"title" => "MediaWiki Plugin Admin",
+	"title" => sprintf(_("MediaWiki Plugin Admin for %s"),
+	    $group->getPublicName()),
 	"pagename" => "MediaWiki Project Admin",
 	"sectionvals" => array($group->getPublicName()),
 	"toptab" => "admin",
 	"group" => $gid,
     ));
 
-echo "<h1>MediaWiki Plugin Admin for ".$group->getPublicName()."</h1>\n\n";
-
+$ra = RoleAnonymous::getInstance();
 echo "<h2>" . _('Nightly XML dump') . "</h2>\n";
-echo '<p>';
-printf(_('<a href="%s">Download</a> the nightly created XML dump (backup) here.'),
-       util_make_url("/plugins/mediawiki/dumps/" . $group_unix_name . ".xml"));
-echo "</p>\n";
+if ($ra->hasPermission('plugin_mediawiki_read', $gid)) {
+	printf('<p>' .
+	    _('<a href="%s">Download</a> the nightly created XML dump (backup) here.') .
+	    "</p>\n", util_make_url("/plugins/mediawiki/dumps/" . $group_unix_name .
+	    ".xml"));
+} else {
+	echo '<p>' . _('XML dumps are not available for private wikis.') . "</p>\n";
+}
 
 echo "<h2>\$wgLogo</h2>\n";
 echo '<div style="border:solid 1px black; margin:3px; padding:3px;">';
@@ -172,15 +176,16 @@
 </span>
 <p><?php echo _('Upload a new file') ?>: <input type="file" name="userfile"
  size="30" /></p>
-	  <?php if (forge_get_config('use_manual_uploads')) {
-$incoming = forge_get_config('groupdir_prefix')."/$group_unix_name/incoming" ;
+<?php if (forge_get_config('use_manual_uploads')) {
+	$incoming = forge_get_config('groupdir_prefix') .
+	    "/$group_unix_name/incoming";
 
 	echo '<p>';
 	printf(_('Alternatively, you can use a file you already uploaded (by SFTP or SCP) to the <a href="%2$s">project\'s incoming directory</a> (%1$s).'),
-	       $incoming, "sftp://" . forge_get_config('web_host') . $incoming . "/");
+	    $incoming, "sftp://" . forge_get_config('web_host') . $incoming . "/");
 	echo ' ' . _('This direct <tt>sftp://</tt> link only works with some browsers, such as Konqueror.') . '<br />';
 	echo _('Choose an already uploaded file:').'<br />';
-	$manual_files_arr=ls($incoming,true);
+	$manual_files_arr=ls($incoming,false);
 	echo html_build_select_box_from_arrays($manual_files_arr,$manual_files_arr,'manual_filename',''); ?>
 	</p>
 <?php } ?>
@@ -191,4 +196,3 @@
 
 <?php
 site_project_footer(array());
-?>

Modified: branches/messer-51/src/plugins/oslc/bin/db-upgrade.pl
===================================================================
--- branches/messer-51/src/plugins/oslc/bin/db-upgrade.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/oslc/bin/db-upgrade.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -74,8 +74,6 @@
 #    if (is_lesser $version, $target) {
 #	debug "Adding local data." ;
 #	
-#	do "/etc/gforge/local.pl" or die "Cannot read /etc/gforge/local.pl" ;
-#	
 #	my $ip_address = qx/host $domain_name | awk '{print \}'/ ;
 #	
 #	@reqlist = (

Modified: branches/messer-51/src/plugins/scmcvs/cronjobs/ssh_create.php
===================================================================
--- branches/messer-51/src/plugins/scmcvs/cronjobs/ssh_create.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmcvs/cronjobs/ssh_create.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -53,7 +53,7 @@
 	$ssh_key=str_replace('###',"\n",$ssh_key);
 	$uid += 1000;
 
-	$ssh_dir = "forge_get_config('homedir_prefix')/$username/.ssh";
+	$ssh_dir = forge_get_config('homedir_prefix')."/$username/.ssh";
 	if (!is_dir($ssh_dir)) {
 		mkdir ($ssh_dir, 0755);
 	}
@@ -69,7 +69,7 @@
 	posix_seteuid(0);
 	posix_setegid(0);
 		
-	system("chown $username:users forge_get_config('homedir_prefix')/$username");
+	system("chown $username:users ".forge_get_config('homedir_prefix')."/$username");
 	system("chown $username:users $ssh_dir");
 	system("chmod 0644 $ssh_dir/authorized_keys");
 	system("chown $username:users $ssh_dir/authorized_keys");

Modified: branches/messer-51/src/plugins/scmgit/common/GitPlugin.class.php
===================================================================
--- branches/messer-51/src/plugins/scmgit/common/GitPlugin.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmgit/common/GitPlugin.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,6 +3,8 @@
  *
  * Copyright 2009, Roland Mas
  * Copyright 2009, Mehdi Dogguy <mehdi at debian.org>
+ * Copyright © 2011, 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge.
  *
@@ -33,10 +35,29 @@
 		$this->hooks[] = 'scm_update_repolist' ;
 		$this->hooks[] = 'scm_generate_snapshots' ;
 		$this->hooks[] = 'scm_gather_stats' ;
+		$this->hooks[] = 'scm_create_subrepo' ;
+		$this->hooks[] = "outermenu" ;	// To put into the top tabs
 
 		$this->register () ;
 	}
 
+	function CallHook($hookname, &$params) {
+		switch ($hookname) {
+		case 'outermenu':
+			if (!isset($params['TOOLTIPS'])) {
+				$tooltips_array = array();
+				$params['TOOLTIPS'] = &$tooltips_array;
+			}
+			$params['TITLES'][] = _('gitweb') /*$this->text*/;
+			$params['DIRS'][] = '/plugins/scmgit/cgi-bin/gitweb.cgi';
+			$params['TOOLTIPS'][count($params['TITLES']) - 1] =
+			    _('Display a list of all subrepositories of all projects using the git SCM');
+			break;
+		default:
+			return parent::CallHook($hookname, $params);
+		}
+	}
+
 	function getDefaultServer() {
 		return forge_get_config('default_server', 'scmgit') ;
 	}
@@ -212,7 +233,7 @@
 		$b .= '</p>';
 		$b .= '<p>[' ;
 		$b .= util_make_link ("/scm/browser.php?group_id=".$project->getID(),
-				      _('Browse Git Repository')
+				      _('Browse primary Git Repository')
 			) ;
 		$b .= ']</p>' ;
 		return $b ;
@@ -264,13 +285,19 @@
 	}
 
 	function createOrUpdateRepo ($params) {
+		$params['newrepo'] = false;
+		/* invert logic, subrepo returns false on success */
+		return !$this->createOrUpdateSubRepo($params);
+	}
+
+	function createOrUpdateSubRepo ($params) {
 		$project = $this->checkParams ($params) ;
 		if (!$project) {
-			return false ;
+			return true;
 		}
 
 		if (! $project->usesPlugin ($this->name)) {
-			return false;
+			return true;
 		}
 
 		$project_name = $project->getUnixName() ;
@@ -278,7 +305,20 @@
 		$unix_group = 'scm_' . $project_name ;
                 system ("mkdir -p $root") ;
 
-		$main_repo = $root . '/' .  $project_name . '.git' ;
+		$sys_name = forge_get_config('forge_name');
+		if ($params['newrepo'] === false) {
+			/* create main repository */
+			$repo_name = $project_name;
+			$repo_desc = "Main git repository" .
+			    " for $sys_name project $project_name";
+		} else {
+			/* create subrepository */
+			$repo_name = $params['newrepo'];
+			$repo_desc = "Supplemental git repository $repo_name" .
+			    " for $sys_name project $project_name";
+		}
+		$main_repo = $root . '/' .  $repo_name . '.git';
+		system("mkdir -p $main_repo");
 		if (!is_file ("$main_repo/HEAD") && !is_dir("$main_repo/objects") && !is_dir("$main_repo/refs")) {
 			system ("GIT_DIR=\"$main_repo\" git init --bare --shared=group") ;
 			system ("GIT_DIR=\"$main_repo\" git update-server-info") ;
@@ -294,9 +334,13 @@
 			if (is_file ("$main_repo/hooks/post-update")) {
 				system ("chmod +x $main_repo/hooks/post-update") ;
 			}
-			system ("echo \"Git repository for $project_name\" > $main_repo/description") ;
+			system("ln -sf /etc/gforge/plugins/scmgit/post-receive-email.sh $main_repo/hooks/post-receive");
+			system ("echo \"$repo_desc\" >$repo/description") ;
 			system ("find $main_repo -type d | xargs chmod g+s") ;
 		}
+
+		system("echo $project_name >$root/ffgroup.nfo");
+
 		system ("chgrp -R $unix_group $root") ;
 		system ("chmod g+s $root") ;
 		if ($project->enableAnonSCM()) {
@@ -342,6 +386,9 @@
 				system ("chmod -R g+rX-w,o-rwx $root/users") ;
 			}
 		}
+
+		/* success */
+		return false;
 	}
 
 	function updateRepositoryList ($params) {
@@ -582,6 +629,61 @@
 		unlink ("$tmp/tarball") ;
 		system ("rm -rf $tmp") ;
 	}
+
+	function printAdminPage($params) {
+		$rv = parent::printAdminPage($params);
+		$group = $this->checkParams($params);
+		if ($group && $group->usesPlugin($this->name)) {
+			print "\n<div style=\"border:1px solid black; margin:12px; padding:12px;\">\n";
+			print '<input type="checkbox" name="scm_git_addsubrepo" value="1" /> ';
+			print _('Create new subrepository with name:')."\n";
+			print '<input type="text" size="16" maxlength="15" ' .
+			    'name="scm_git_addsubreponame" value="" />';
+			print "\n</div>\n";
+		}
+		return $rv;
+	}
+
+	function adminUpdate($params) {
+		global $feedback, $error_msg;
+
+		$rv = parent::adminUpdate($params);
+		$group = $this->checkParams($params);
+		if ($group && $group->usesPlugin($this->name) &&
+		    util_ifsetor($params['scm_git_addsubrepo']) == 1 &&
+		    ($p_reponame = util_ifsetor($params['scm_git_addsubreponame']))) {
+			/* copied from gforge/utils/scm-newsubrepo.php */
+
+			/* ltrim and rtrim, strip leading/trailing slash and ".git" */
+			$p_reponame = ltrim(preg_replace('#(/|.git)*$#', '', trim($p_reponame)), "/");
+
+			$e = false;
+			foreach (explode("/", $p_reponame) as $p_reponamepart) {
+				if (!account_groupnamevalid($p_reponamepart)) {
+					$e = "Invalid subrepo name! " . $GLOBALS['register_error'] . "\n";
+					break;
+				}
+			}
+
+			if (!$e) {
+				$res = db_query_params('INSERT INTO scm_subrepos
+					(group_id, newrepo)
+				VALUES	($1, $2)',
+				    array($group->getID(), $p_reponame));
+				if (!$res || db_affected_rows($res) < 1) {
+					$e = "Could not queue for creation! " . db_error();
+				}
+			}
+
+			if (!$e) {
+				$feedback = sprintf(_('Subrepository %s scheduled for creation.'),
+				    $p_reponame);
+			} else {
+				$error_msg = htmlspecialchars($e);
+			}
+		}
+		return $rv;
+	}
 }
 
 // Local Variables:

Modified: branches/messer-51/src/plugins/scmgit/packaging/control/133plugin-scmgit
===================================================================
--- branches/messer-51/src/plugins/scmgit/packaging/control/133plugin-scmgit	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmgit/packaging/control/133plugin-scmgit	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 Package: @PACKAGE at -plugin-scmgit
 Architecture: all
-Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 | @OLDPACKAGE at -web, @OLDPACKAGE at -shell-postgresql | @OLDPACKAGE at -shell, git (>= 1:1.7) | git-core, gitweb (>= 1:1.7), php5-cli, ${misc:Depends}
-Provides: @PACKAGE at -plugin-scm, @OLDPACKAGE at -plugin-scmgit
+Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 | @OLDPACKAGE at -web, @OLDPACKAGE at -shell-postgresql | @OLDPACKAGE at -shell, git (>= 1:1.7) | git-core, gitweb (>= 1:1.7), gitweb (<< 1:1.7.4.1), php5-cli, ${misc:Depends}
+Provides: @PACKAGE at -plugin-scm, @OLDPACKAGE at -plugin-scmgit, evolvisforge-plugin-scmgit
 Conflicts: @OLDPACKAGE at -plugin-scmgit (<< 5.0.51-2)
 Replaces: @OLDPACKAGE at -plugin-scmgit (<< 5.0.51-2)
 Description: collaborative development tool - Git plugin

Modified: branches/messer-51/src/plugins/scmgit/packaging/links/plugin-scmgit
===================================================================
--- branches/messer-51/src/plugins/scmgit/packaging/links/plugin-scmgit	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmgit/packaging/links/plugin-scmgit	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 /usr/lib/cgi-bin/gitweb.cgi /usr/share/@OLDPACKAGE@/plugins/scmgit/cgi-bin/gitweb.cgi
 /usr/share/@OLDPACKAGE@/plugins/scmgit/www/index.php /usr/share/@OLDPACKAGE@/www/plugins/scmgit/index.php
 /usr/share/gitweb/git-favicon.png /usr/share/@OLDPACKAGE@/www/plugins/scmgit/git-favicon.png
-/usr/share/gitweb/git-logo.png /usr/share/@OLDPACKAGE@/www/plugins/scmgit/git-logo.png
+/usr/share/@OLDPACKAGE@/plugins/scmgit/www/git-logo.png /usr/share/@OLDPACKAGE@/www/plugins/scmgit/git-logo.png
 /usr/share/gitweb/gitweb.css /usr/share/@OLDPACKAGE@/www/plugins/scmgit/gitweb.css
 /usr/share/gitweb/gitweb.js /usr/share/@OLDPACKAGE@/www/plugins/scmgit/gitweb.js
 /usr/share/gitweb/index.cgi /usr/share/@OLDPACKAGE@/www/plugins/scmgit/index.cgi

Copied: branches/messer-51/src/plugins/scmgit/www/git-logo.png (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/plugins/scmgit/www/git-logo.png)
===================================================================
--- branches/messer-51/src/plugins/scmgit/www/git-logo.png	                        (rev 0)
+++ branches/messer-51/src/plugins/scmgit/www/git-logo.png	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,8 @@
+‰PNG
+
+   
+IHDR   H      è)9,   sRGB ®Îé  ÁPLTEÊÊ	ËË	ÊÊ	ËË	Ë
+ËËËÌËÌ
+ËËÌÌÌÍÌÌÍÍÍÎÎÍÎÎÎ Î!Ï"Ï"Î#Î$Ï$Ï%Ï&Ð&Ñ(#Ð)#Ð)$Ñ)#Ð,&Ñ,&Ñ-'Ñ.(Ò.(Ñ/(Ò/)Ò0*Ò1+Ñ2+Ò2,Ó2,Ò3-Ó3-Ò4.Ó4.Ò5/Ò50Ó60Ó72Ô72Ó94Ô:4Ô:5Ô;5Ô;6Õ;6 € Ô<6Õ<6Õ<7Ô=7Õ=7Õ?8Õ@:``]ÖA;ÕC<ÖC=ÖD>ÖE@ÖF@ÖGB×HC×ID×LFØLHØMGØMHØNJÙQLÙRMÙSMÚSNÚTOÚWSÛXSÛYTÛ\VÛ]WÜ^XÜ_ZÜ`[Ýa\Üb]Ýb^Ýc^Ýd`ÝfaÞieÞkgßkgßniàpkàrnàtpávráwsáxtâxuâ{wã~zã~{ãzã€|ã‚~ä‚äƒ䃀䇃凄剆劇勈拇匈按捊瑎甑蔑蕒薓藓藔雘霙°¯ªë£ ë¥¢ì¦£ìª§í¬©í¬ªí­«î¯­î°®î²°î³±ï´²ï·µðº·ð»¹ð¼ºñ¼»ð½»ñ¿½ñÀ¾òÁ¿ÎÍÇòÄÂòÅÃóÆÄóÇÅóÇÆóÉÈóÊÈôÍÌõÐÏõÑÐõÒÑõÓÑöÖÔö×Õö×ÖöØ×÷Ø×÷Ù×÷ÚØ÷ÚÙ÷ÛÚ÷ÜÛøÝÜøÞÝøßÞøàßùâáùãâèèæùäãùåäùæåúçæúççúèèúééûêêûëëûììûííûîîûïïüððüñðüññüòñüóòýõô÷÷öýöõý÷öýø÷þøøþùùþúúþûûþüüÿýýÿþþÿÿÿªUÁ  TIDAT8Ëc8}ÿ¸7É’Ó¤ëê+ÒÀýuëÖ1 ˜s‡ÏQˆÝö(‰&ž±Ž™ÿ,‡!ðìãsY$ô*`ŠAdÙÏî2_{ÛûÀU/™È¹É3èîÃWÅkØåî_ù"›I„=è8-3×[½AHçU,»ja3ç¡Ý^yI5èi§ û¬Õܶ¯^$pq0ðŸÙ¶é%÷R
+ZÌ 0ñðåëIì­@ÎÖ¾Ž…¯ö±=Kg=DªAþ+ÎTäZ±Û?€I%36¿2e;‰®ÃÃïAü:7KXù‚/Á¥$Ä7,au¹‰Ã tóàéŠí<Ñ?a’”¶ä†i†³py§AuìVáMÏ‘¥*Ÿ_DÖÒ!¡<l]Ö`à`?$õDš]­®ó"„¼öêá•
+1ìú/‘äŽE3°û’lЫy“®és.B‘Ý;ןdƒvh/”™„šé®hò¨WšdƒÚØ£^ùsN‡I\‹cäPU>ÒÂŽ%°áÁÍ 'K×óœ‚I”³¸¯:rõ€Á¤ˆž×ŠØç,gï~Õ®.j3óÕ«çR×·4¤	°—!»ˆ¨Ü?‰ÕîÞ«;>ìâ¼©ö°g¼2cdT*yNr1r͏ݹ:”!kÓùe¬õW¼^m™>{;9ÛíLv&Ïk뎝cRyéÊ>Ÿü¢öÈ”ží¯šRîlÞx/Ÿ¡–Tƒî£ŠÜ²f˜<5žÁ€¤*é4Рu§QÅŽ…0p°²»$͐A3¨ €õÚºu3¨ Ö­ ‡¯”h–›E¬    IEND®B`‚
\ No newline at end of file

Modified: branches/messer-51/src/plugins/scmsvn/bin/install.sh
===================================================================
--- branches/messer-51/src/plugins/scmsvn/bin/install.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmsvn/bin/install.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -55,6 +55,9 @@
         update-inetd --add  "svn stream tcp nowait.400 scm-gforge /usr/bin/svnserve svnserve -i -r $gforge_chroot"
 
 	maybe_upgrade_from_pre_scm_refactoring
+	test -h /var/lib/gforge/chroot/svnroot || \
+	    test -d /var/lib/gforge/chroot/svnroot || \
+	    ln -sf scmrepos/svn /var/lib/gforge/chroot/svnroot
 	;;
 
     purge)

Modified: branches/messer-51/src/plugins/scmsvn/common/SVNPlugin.class.php
===================================================================
--- branches/messer-51/src/plugins/scmsvn/common/SVNPlugin.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmsvn/common/SVNPlugin.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -246,7 +246,6 @@
 
 		if (!is_dir ($repo) || !is_file ("$repo/format")) {
 			system ("svnadmin create $repo") ;
-			system ("svn mkdir -m'Init' file:///$repo/trunk file:///$repo/tags file:///$repo/branches >/dev/null") ;
 		}
 
 		$this->installOrUpdateCmds($project, $project->getUnixName(), $repo);
@@ -256,9 +255,9 @@
 			system ("find $repo -type d | xargs chmod g+s") ;
 			system ("chgrp -R $unix_group $repo") ;
 			if ($project->enableAnonSCM()) {
-				system ("chmod -R g+wX,o+rX-w $repo") ;
+				system("chmod -R g+rwX,o+rX-w $repo") ;
 			} else {
-				system ("chmod -R g+wX,o-rwx $repo") ;
+				system("chmod -R g+rwX,o-rwx $repo") ;
 			}
 		} else {
 			$unix_user = forge_get_config('apache_user');
@@ -272,10 +271,15 @@
 		foreach ($check_hooks as $hook) {
 			$hookfile = $repo.'/hooks/'.$hook;
 			$result = array();
-			$code = 0;
-			exec ("grep -q '#FFHOOKVER=1$' $hookfile",$result,$code);
+			if (file_exists($hookfile)) {
+				$code = 0;
+				exec("grep -q '#FFHOOKVER=1$' $hookfile",
+				    $result, $code);
+			} else {
+				$code = 1;
+			}
 			if ($code != 0) {
-				unlink($hookfile);
+				@unlink($hookfile);
 				system("cp /etc/gforge/plugins/scmsvn/hooks/runhooks $hookfile");
 				chown($hookfile, "scm-gforge");
 				chgrp($hookfile, $unix_group);
@@ -637,7 +641,7 @@
 		$time_ok, $user_list;
 	switch ($last_tag) {
 	case "AUTHOR":
-		$last_user = ereg_replace ('[^a-z0-9_-]', '', 
+		$last_user = preg_replace('/[^a-z0-9_-]/', '', 
 					   strtolower (trim ($chars))) ;
 		break;
 	case "DATE":

Modified: branches/messer-51/src/plugins/scmsvn/packaging/control/131plugin-scmsvn
===================================================================
--- branches/messer-51/src/plugins/scmsvn/packaging/control/131plugin-scmsvn	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/plugins/scmsvn/packaging/control/131plugin-scmsvn	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,7 +1,7 @@
 Package: @PACKAGE at -plugin-scmsvn
 Architecture: all
 Depends: @OLDPACKAGE at -common, @OLDPACKAGE at -db-postgresql | @OLDPACKAGE at -db, @OLDPACKAGE at -web-apache2 | @OLDPACKAGE at -web, libapache2-svn, @OLDPACKAGE at -shell-postgresql | @OLDPACKAGE at -shell, subversion, subversion-tools, python-subversion, python (>= 2.3), php5-cli, openbsd-inetd | inet-superserver, update-inetd, ${misc:Depends}
-Provides: @PACKAGE at -plugin-scm, @OLDPACKAGE at -plugin-scmsvn
+Provides: @PACKAGE at -plugin-scm, @OLDPACKAGE at -plugin-scmsvn, evolvisforge-plugin-scmsvn
 Conflicts: @OLDPACKAGE at -plugin-scmsvn
 Replaces: @OLDPACKAGE at -plugin-scmsvn
 Description: collaborative development tool - Subversion plugin

Modified: branches/messer-51/src/translations/de.po
===================================================================
--- branches/messer-51/src/translations/de.po	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/translations/de.po	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,10 +1,10 @@
 # German translations for Evolvis.
 msgid ""
 msgstr ""
-"Project-Id-Version: EvolvisForge 5.1+evolvis8\n"
+"Project-Id-Version: EvolvisForge 5.1+evolvis52\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-19 15:49+0100\n"
-"PO-Revision-Date: 2012-01-18 13:49+0100\n"
+"POT-Creation-Date: 2012-04-07 15:21+0200\n"
+"PO-Revision-Date: 2012-04-07 15:26+0200\n"
 "Last-Translator: Thorsten Glaser <t.glaser at tarent.de>\n"
 "Language-Team: german\n"
 "Language: de\n"
@@ -30,7 +30,7 @@
 msgstr "Suchanfrage speichern als "
 
 #: common/docman/Document.class.php:82 common/forum/Forum.class.php:115
-#: common/include/Error.class.php:184 common/mail/MailingList.class.php:79
+#: common/include/Error.class.php:192 common/mail/MailingList.class.php:79
 #: common/survey/Survey.class.php:78 common/survey/SurveyQuestion.class.php:70
 #: plugins/mailman/include/MailmanList.class.php:104
 msgid "Group_id in db result does not match Group Object"
@@ -382,12 +382,9 @@
 #: common/docman/include/utils.php:196 common/docman/include/utils.php:197
 #: common/docman/views/listfile.php:204 common/docman/views/listfile.php:206
 #: common/forum/ForumHTML.class.php:65 common/forum/ForumHTML.class.php:222
-#: common/forum/ForumHTML.class.php:463 common/include/descriptive.php:130
-#: common/pm/ProjectTask.class.php:1204 common/tracker/Artifact.class.php:1511
-#: common/tracker/Artifact.class.php:1513
-#: common/tracker/Artifact.class.php:1517
-#: common/tracker/Artifact.class.php:1519
-#: common/tracker/Artifact.class.php:1615
+#: common/forum/ForumHTML.class.php:463 common/include/descriptive.php:133
+#: common/pm/ProjectTask.class.php:1226 common/tracker/Artifact.class.php:1519
+#: common/tracker/Artifact.class.php:1611
 #: common/widget/Widget_MyLatestSvnCommits.class.php:65
 #: common/widget/Widget_ProjectInfo.class.php:66
 #: common/widget/Widget_Rss.class.php:74
@@ -396,19 +393,17 @@
 #: plugins/hudson/include/HudsonBuild.class.php:110
 #: plugins/projects_hierarchy/www/softwaremap.php:332
 #: www/account/index.php:128 www/admin/cronman.php:78
-#: www/admin/grouplist.php:149 www/admin/massmail.php:158
-#: www/admin/search.php:105 www/admin/search.php:187
-#: www/admin/userlist.php:110 www/developer/diary.php:51
-#: www/developer/diary.php:82 www/export/tracker.php:109
-#: www/forum/forum.php:289 www/forum/forum.php:366 www/forum/index.php:98
-#: www/forum/message.php:127 www/forum/message.php:204
+#: www/admin/massmail.php:158 www/admin/search.php:105
+#: www/admin/search.php:187 www/admin/userlist.php:110
+#: www/developer/diary.php:51 www/developer/diary.php:82
+#: www/export/tracker.php:109 www/forum/forum.php:289 www/forum/forum.php:366
+#: www/forum/index.php:98 www/forum/message.php:127 www/forum/message.php:204
 #: www/forum/myforums.php:152 www/frs/index.php:150 www/frs/index.php:210
 #: www/include/stats_function.php:77 www/include/stats_function.php:98
 #: www/include/user_home.php:144 www/my/diary.php:216
-#: www/news/news_utils.php:153 www/news/news_utils.php:165
-#: www/news/news_utils.php:273 www/people/people_utils.php:422
-#: www/people/viewjob.php:81 www/pm/browse_task.php:475
-#: www/pm/browse_task.php:478 www/pm/include/ProjectTaskHTML.class.php:133
+#: www/news/news_utils.php:151 www/news/news_utils.php:163
+#: www/news/news_utils.php:271 www/people/people_utils.php:422
+#: www/people/viewjob.php:81 www/pm/include/ProjectTaskHTML.class.php:133
 #: www/pm/include/ProjectTaskHTML.class.php:186
 #: www/project/admin/project_admin_utils.php:165
 #: www/reporting/usersummary.php:127
@@ -421,17 +416,16 @@
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:65
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:63
 #: www/snippet/detail.php:80 www/snippet/detail.php:169
-#: www/soap/tracker/tracker.php:1131 www/softwaremap/full_list.php:169
-#: www/softwaremap/tag_cloud.php:176 www/softwaremap/trove_list.php:311
-#: www/stats/lastlogins.php:61 www/tracker/browse.php:733
-#: www/tracker/browse.php:748 www/tracker/downloadcsv.php:63
-#: www/tracker/downloadcsv.php:64 www/tracker/downloadcsv.php:65
+#: www/softwaremap/full_list.php:169 www/softwaremap/tag_cloud.php:176
+#: www/softwaremap/trove_list.php:311 www/stats/lastlogins.php:61
+#: www/tracker/downloadcsv.php:63 www/tracker/downloadcsv.php:64
+#: www/tracker/downloadcsv.php:65
 #: www/tracker/include/ArtifactHtml.class.php:60
 #: www/tracker/include/ArtifactHtml.class.php:69
-#: www/tracker/include/ArtifactTypeHtml.class.php:160
-#: www/tracker/include/ArtifactTypeHtml.class.php:161
-#: www/tracker/include/ArtifactTypeHtml.class.php:223 www/tracker/item.php:193
-#: www/tracker/item.php:198
+#: www/tracker/include/ArtifactTypeHtml.class.php:162
+#: www/tracker/include/ArtifactTypeHtml.class.php:163
+#: www/tracker/include/ArtifactTypeHtml.class.php:225 www/tracker/item.php:198
+#: www/tracker/item.php:203
 msgid "Y-m-d H:i"
 msgstr "d.m.Y H:i"
 
@@ -456,8 +450,8 @@
 #: plugins/contribtracker/www/index.php:145
 #: plugins/contribtracker/www/project_admin.php:293
 #: plugins/mailman/www/admin/index.php:150
-#: plugins/mailman/www/admin/index.php:183 www/mail/admin/index.php:194
-#: www/mail/admin/index.php:226 www/snippet/package.php:152
+#: plugins/mailman/www/admin/index.php:183 www/mail/admin/index.php:193
+#: www/mail/admin/index.php:225 www/snippet/package.php:152
 msgid "Description:"
 msgstr "Beschreibung:"
 
@@ -498,9 +492,9 @@
 #: www/project/admin/editimages.php:271
 #: www/search/include/renderers/DocsHtmlSearchRenderer.class.php:51
 #: www/search/include/renderers/ProjectHtmlSearchRenderer.class.php:45
-#: www/snippet/submit.php:110 www/tracker/admin/form-updatetracker.php:52
+#: www/snippet/submit.php:110 www/tracker/admin/form-updatetracker.php:53
 #: www/tracker/admin/ind.php:113 www/tracker/admin/ind.php:142
-#: www/tracker/browse.php:666 www/tracker/ind.php:63
+#: www/tracker/browse.php:676 www/tracker/ind.php:63
 msgid "Description"
 msgstr "Beschreibung"
 
@@ -522,10 +516,10 @@
 msgstr "Gruppiere die Dokument-Zugehörigkeit in:"
 
 #: common/docman/include/utils.php:326 common/docman/views/editfile.php:132
-#: www/pm/browse_task.php:585 www/project/admin/database.php:208
-#: www/tracker/admin/form-customizelist.php:44 www/tracker/browse.php:519
-#: www/tracker/browse.php:675 www/tracker/browse.php:859
-#: www/tracker/query.php:344
+#: www/pm/browse_task.php:619 www/project/admin/database.php:208
+#: www/tracker/admin/form-customizelist.php:44 www/tracker/browse.php:527
+#: www/tracker/browse.php:688 www/tracker/browse.php:895
+#: www/tracker/query.php:346
 msgid "State"
 msgstr "Status"
 
@@ -796,28 +790,28 @@
 msgstr "Nachname:"
 
 #: common/docman/views/listfile.php:121
-#: common/tracker/ArtifactExtraField.class.php:326
+#: common/tracker/ArtifactExtraField.class.php:315
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:218
-#: www/admin/groupedit.php:106 www/admin/grouplist.php:92
+#: www/admin/groupedit.php:106 www/admin/grouplist.php:35
 #: www/admin/pluginman.php:118 www/admin/search.php:94
 #: www/admin/search.php:171 www/frs/admin/editrelease.php:235
 #: www/frs/admin/index.php:155 www/my/dashboard.php:67
 #: www/news/admin/index.php:137 www/people/editjob.php:74
 #: www/people/editjob.php:166 www/people/viewjob.php:75
-#: www/pm/browse_task.php:296 www/pm/browse_task.php:414
+#: www/pm/browse_task.php:296 www/pm/browse_task.php:415
 #: www/pm/ganttpage.php:156 www/pm/include/ProjectTaskHTML.class.php:117
 #: www/pm/include/pm_columns.php:38 www/pm/templates/detail_template.php:15
 #: www/reporting/usersummary.php:103
 #: www/tracker/admin/form-addextrafield.php:132
 #: www/tracker/admin/form-addextrafieldoption.php:101
 #: www/tracker/admin/form-updateextrafieldelement.php:60
-#: www/tracker/include/ArtifactTypeHtml.class.php:147 www/tracker/item.php:140
+#: www/tracker/include/ArtifactTypeHtml.class.php:149 www/tracker/item.php:141
 msgid "Status"
 msgstr "Status"
 
 #: common/docman/views/listfile.php:121 www/frs/index.php:183
 #: www/pm/ganttpage.php:160 www/project/admin/editimages.php:269
-#: www/tracker/include/ArtifactTypeHtml.class.php:203
+#: www/tracker/include/ArtifactTypeHtml.class.php:205
 msgid "Size"
 msgstr "Größe"
 
@@ -926,8 +920,8 @@
 #: common/include/rbac_texts.php:219
 #: common/widget/Widget_MyProjects.class.php:79
 #: plugins/mantisbt/www/index.php:49 www/include/Layout.class.php:694
-#: www/tracker/admin/ind.php:90 www/tracker/item.php:173
-#: www/tracker/item.php:374
+#: www/tracker/admin/ind.php:90 www/tracker/item.php:178
+#: www/tracker/item.php:397
 msgid "Admin"
 msgstr "Verwalten"
 
@@ -986,9 +980,9 @@
 #: www/tracker/admin/form-addextrafield.php:82
 #: www/tracker/admin/form-deleteextrafield.php:41
 #: www/tracker/admin/form-deletetracker.php:34
-#: www/tracker/admin/tracker.php:66 www/tracker/browse.php:170
-#: www/tracker/browse.php:495 www/tracker/deleteartifact.php:38
-#: www/tracker/item.php:256
+#: www/tracker/admin/tracker.php:66 www/tracker/browse.php:176
+#: www/tracker/browse.php:503 www/tracker/deleteartifact.php:38
+#: www/tracker/item.php:261
 msgid "Delete"
 msgstr "Löschen"
 
@@ -1074,7 +1068,7 @@
 
 #: common/forum/Forum.class.php:444 common/forum/Forum.class.php:479
 #: common/frs/FRSPackage.class.php:268 common/frs/FRSPackage.class.php:300
-#: common/tracker/ArtifactType.class.php:549
+#: common/tracker/ArtifactType.class.php:550
 msgid "You can only monitor if you are logged in"
 msgstr "Sie können nur Foren beobachten/überwachen, wenn Sie angemeldet sind."
 
@@ -1097,10 +1091,10 @@
 
 #: common/forum/Forum.class.php:620 common/frs/FRSPackage.class.php:447
 #: common/frs/FRSRelease.class.php:356 common/include/Group.class.php:1652
-#: common/mail/MailingList.class.php:393 common/pm/ProjectGroup.class.php:376
-#: common/pm/ProjectTask.class.php:513 common/tracker/Artifact.class.php:489
-#: common/tracker/ArtifactExtraField.class.php:429
-#: common/tracker/ArtifactType.class.php:816
+#: common/mail/MailingList.class.php:394 common/pm/ProjectGroup.class.php:376
+#: common/pm/ProjectTask.class.php:518 common/tracker/Artifact.class.php:490
+#: common/tracker/ArtifactExtraField.class.php:413
+#: common/tracker/ArtifactType.class.php:798
 msgid "Please tick all checkboxes."
 msgstr "Bitte hake alle Ankreuzkästchen an."
 
@@ -1192,7 +1186,7 @@
 #: www/admin/groupedit.php:242 www/admin/trove/trove_cat_edit.php:152
 #: www/admin/useredit.php:204 www/admin/vhost.php:189
 #: www/forum/admin/index.php:178 www/frs/admin/index.php:178
-#: www/mail/admin/index.php:229 www/mail/admin/index.php:280
+#: www/mail/admin/index.php:228 www/mail/admin/index.php:286
 #: www/people/people_utils.php:176 www/people/people_utils.php:321
 #: www/pm/admin/index.php:360 www/pm/calendar.php:289
 #: www/project/admin/database.php:234 www/project/admin/index.php:292
@@ -1273,7 +1267,7 @@
 msgid "Posted by"
 msgstr "Geposted von"
 
-#: common/forum/ForumHTML.class.php:65 common/include/descriptive.php:129
+#: common/forum/ForumHTML.class.php:65 common/include/descriptive.php:132
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:58
 #: plugins/contribtracker/common/ContribTrackerPlugin.class.php:109
 #: plugins/cvstracker/common/cvstrackerPlugin.class.php:109
@@ -1291,21 +1285,21 @@
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:51
 #: www/stats/lastlogins.php:50 www/stats/users_graph.php:85
 #: www/stats/views_graph.php:105 www/tracker/include/ArtifactHtml.class.php:46
-#: www/tracker/include/ArtifactTypeHtml.class.php:201
+#: www/tracker/include/ArtifactTypeHtml.class.php:203
 msgid "Date"
 msgstr "Datum"
 
 #: common/forum/ForumHTML.class.php:66 common/include/Navigation.class.php:367
-#: www/my/dashboard.php:63 www/my/diary.php:181 www/pm/browse_task.php:233
+#: www/my/dashboard.php:63 www/my/diary.php:181 www/pm/browse_task.php:234
 #: www/pm/include/ProjectTaskHTML.class.php:115
 #: www/pm/include/pm_columns.php:31 www/project/report/index.php:136
 #: www/search/include/renderers/ArtifactHtmlSearchRenderer.class.php:56
 #: www/search/include/renderers/NewsHtmlSearchRenderer.class.php:48
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:49
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:49
-#: www/tracker/admin/form-customizelist.php:42 www/tracker/browse.php:275
-#: www/tracker/browse.php:663 www/tracker/item.php:295
-#: www/tracker/query.php:197 www/tracker/query.php:381
+#: www/tracker/admin/form-customizelist.php:42 www/tracker/browse.php:281
+#: www/tracker/browse.php:673 www/tracker/item.php:318
+#: www/tracker/query.php:199 www/tracker/query.php:383
 msgid "Summary"
 msgstr "Kurzbeschreibung"
 
@@ -1343,13 +1337,13 @@
 #: common/forum/ForumHTML.class.php:115 common/forum/ForumHTML.class.php:122
 #: plugins/mailman/www/mailman_utils.php:208
 #: plugins/mailman/www/mailman_utils.php:211 www/frs/include/frs_utils.php:77
-#: www/mail/admin/index.php:285 www/mail/mail_utils.php:52
-#: www/news/news_utils.php:53 www/pm/include/ProjectGroupHTML.class.php:101
+#: www/mail/admin/index.php:291 www/mail/mail_utils.php:52
+#: www/news/news_utils.php:52 www/pm/include/ProjectGroupHTML.class.php:101
 #: www/pm/include/ProjectGroupHTML.class.php:107
-#: www/scm/include/scm_utils.php:51 www/survey/include/SurveyHTML.class.php:65
+#: www/scm/include/scm_utils.php:90 www/survey/include/SurveyHTML.class.php:65
 #: www/survey/include/SurveyHTML.class.php:90 www/tracker/admin/tracker.php:28
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:52
-#: www/tracker/include/ArtifactTypeHtml.class.php:799 www/tracker/ind.php:44
+#: www/tracker/include/ArtifactTypeHtml.class.php:801 www/tracker/ind.php:44
 msgid "Administration"
 msgstr "Administration"
 
@@ -1357,7 +1351,7 @@
 msgid "-tooltip:forum:admin"
 msgstr ""
 
-#: common/forum/ForumHTML.class.php:141 www/forum/monitor.php:59
+#: common/forum/ForumHTML.class.php:141
 msgid "Stop Monitoring"
 msgstr "Stoppe Beobachtung"
 
@@ -1418,10 +1412,9 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:156
 #: www/admin/admin_table.php:58 www/admin/admin_table.php:155
 #: www/admin/admin_table.php:214 www/forum/admin/index.php:428
-#: www/forum/monitor.php:65 www/my/rmproject.php:98
-#: www/people/editprofile.php:158 www/people/editprofile.php:217
-#: www/pm/templates/time_tracking.php:40 www/register/index.php:281
-#: www/reporting/timeadd.php:177
+#: www/my/rmproject.php:98 www/people/editprofile.php:158
+#: www/people/editprofile.php:217 www/pm/templates/time_tracking.php:40
+#: www/register/index.php:326 www/reporting/timeadd.php:177
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -1586,11 +1579,11 @@
 msgid "FRSFile Appears to be invalid"
 msgstr "FRSFile scheint ungültig zu sein"
 
-#: common/frs/FRSFile.class.php:148 common/frs/FRSFile.class.php:435
+#: common/frs/FRSFile.class.php:148 common/frs/FRSFile.class.php:436
 msgid "That filename already exists in this project space"
 msgstr "Dieser Dateiname existiert bereits in diesem Projekt"
 
-#: common/frs/FRSFile.class.php:185 common/frs/FRSFile.class.php:441
+#: common/frs/FRSFile.class.php:186 common/frs/FRSFile.class.php:442
 msgid "File cannot be moved to the permanent location"
 msgstr "Datei kann nicht zum aktuellen Ort verschoben werden"
 
@@ -1681,26 +1674,25 @@
 msgid "Database initialisation error:"
 msgstr "Datenbankmanipulation"
 
-#: common/include/Error.class.php:125 common/include/Group.class.php:445
-#: common/include/Group.class.php:527
+#: common/include/Error.class.php:133 common/include/Group.class.php:444
+#: common/include/Group.class.php:526
 msgid "Permission denied."
 msgstr "Erlaubnis verweigert"
 
-#: common/include/Error.class.php:142 common/include/User.class.php:279
-#: www/tracker/tracker.php:103
+#: common/include/Error.class.php:150 common/include/User.class.php:279
 msgid "Invalid Email Address"
 msgstr "Ungültige E-Mail Adresse"
 
-#: common/include/Error.class.php:146
+#: common/include/Error.class.php:154
 msgid "(none given)"
 msgstr "(keine gegeben)"
 
-#: common/include/Error.class.php:167
+#: common/include/Error.class.php:175
 #, fuzzy, php-format
 msgid "Error On Update: %s"
 msgstr "Fehler bei der Aktualisierung:"
 
-#: common/include/Error.class.php:208
+#: common/include/Error.class.php:218
 msgid "Missing Parameters"
 msgstr "Fehlende Parameter"
 
@@ -1750,40 +1742,40 @@
 "Ihre Projektbeschreibung ist zu lang. Bitte verkürzen Sie diese auf unter "
 "256 bytes."
 
-#: common/include/Group.class.php:364
+#: common/include/Group.class.php:363
 #, php-format
 msgid "ERROR: Could not create group: %s"
 msgstr "Fehler: Konnte Gruppe: %s nicht anlegen"
 
-#: common/include/Group.class.php:371
+#: common/include/Group.class.php:370
 #, php-format
 msgid "ERROR: Could not get group id: %s"
 msgstr "Fehler: Konnte Gruppe: %s nicht erreichen"
 
-#: common/include/Group.class.php:401
+#: common/include/Group.class.php:400
 #, php-format
 msgid "ERROR: Could not add admin to newly created group: %s"
 msgstr ""
 "Fehler: Konnte keinen Administrator zur neu eingetragenen Gruppe: %s "
 "hinzufügen"
 
-#: common/include/Group.class.php:440 common/include/Group.class.php:522
+#: common/include/Group.class.php:439 common/include/Group.class.php:521
 msgid "Could not get permission."
 msgstr "Zugriff nicht erhalten."
 
-#: common/include/Group.class.php:462
+#: common/include/Group.class.php:461
 #, php-format
 msgid "ERROR: DB: Could not change group properties: %s"
 msgstr "Fehler: Datenbank: Konnte die Gruppen-Eigenschaften: %s nicht ändern."
 
-#: common/include/Group.class.php:545
+#: common/include/Group.class.php:544
 #, php-format
 msgid "New Doc Address Appeared Invalid: %s"
 msgid_plural "New Doc Addresses Appeared Invalid: %s"
 msgstr[0] "Die neue Dokumentenadresse erscheint ungültig: %s"
 msgstr[1] "Die neuen Dokumentenadressen erscheinen ungültig: %s"
 
-#: common/include/Group.class.php:598
+#: common/include/Group.class.php:597
 msgid ""
 "Error updating project information: Maximum length for Project Description "
 "is 255 chars."
@@ -1791,25 +1783,25 @@
 "Fehler bei der Aktualisierung der Projekt- Informationen: Die maximale Länge "
 "für Projektbeschreibungen beträgt 255 Zeichen."
 
-#: common/include/Group.class.php:646
+#: common/include/Group.class.php:645
 #, php-format
 msgid "Error updating project information: %s"
 msgstr "Fehler bei der Aktualisierung der Projekt- Informationen: %s"
 
-#: common/include/Group.class.php:734
+#: common/include/Group.class.php:733
 msgid "Invalid Status Change"
 msgstr "Ungültige Status-Veränderung"
 
-#: common/include/Group.class.php:745
+#: common/include/Group.class.php:744
 #, php-format
 msgid "ERROR: DB: Could not change group status: %s"
 msgstr "Fehler: Datenbank: Konnte den Gruppenstatus: %s nicht verändern"
 
-#: common/include/Group.class.php:956
+#: common/include/Group.class.php:955
 msgid "Couldn't insert SCM_BOX to database"
 msgstr "Konnte SCM_BOX nicht in Datenbank einfügen"
 
-#: common/include/Group.class.php:960
+#: common/include/Group.class.php:959
 msgid "SCM Box can't be empty"
 msgstr "Das SCM Feld darf nicht leer sein"
 
@@ -1945,15 +1937,15 @@
 msgid "Wrong destination role"
 msgstr "Falsche Zielrolle"
 
-#: common/include/Group.class.php:2436
+#: common/include/Group.class.php:2438
 msgid "Group already active"
 msgstr "Diese Gruppe ist bereits aktiv."
 
-#: common/include/Group.class.php:2696 common/include/Group.class.php:2775
+#: common/include/Group.class.php:2698 common/include/Group.class.php:2779
 msgid "Group does not have any administrators."
 msgstr "Diese Gruppe besitzt keinen Administrator."
 
-#: common/include/Group.class.php:2704
+#: common/include/Group.class.php:2706
 #, php-format
 msgid ""
 "Your project registration for %4$s has been approved.\n"
@@ -2023,12 +2015,12 @@
 "\n"
 "-- Die %4$s Leitung"
 
-#: common/include/Group.class.php:2740
+#: common/include/Group.class.php:2743
 #, php-format
 msgid "%1$s Project Approved"
 msgstr "%1$s Projekt genehmigt"
 
-#: common/include/Group.class.php:2782
+#: common/include/Group.class.php:2786
 #, php-format
 msgid ""
 "Your project registration for %3$s has been denied.\n"
@@ -2047,21 +2039,21 @@
 "Gründe für die negative Entscheidung:\n"
 "\n"
 
-#: common/include/Group.class.php:2801
+#: common/include/Group.class.php:2806
 #, php-format
 msgid "%1$s Project Denied"
 msgstr "%1$s Projekt abgelehnt"
 
-#: common/include/Group.class.php:2833
+#: common/include/Group.class.php:2839
 msgid "Could not find user who has submitted the project."
 msgstr "Der Nutzer, der das Projekt anlegte, konnte nicht gefunden werden."
 
-#: common/include/Group.class.php:2840
+#: common/include/Group.class.php:2846
 #, fuzzy
 msgid "There is no administrator to send the mail to."
 msgstr "Konnte keinen Administrator finden, dem die Mail zugesandt werden kann"
 
-#: common/include/Group.class.php:2852
+#: common/include/Group.class.php:2858
 #, fuzzy, php-format
 msgid ""
 "New %1$s Project Submitted\n"
@@ -2079,12 +2071,12 @@
 "abzuweisen:\n"
 "%4$s "
 
-#: common/include/Group.class.php:2862
+#: common/include/Group.class.php:2868
 #, fuzzy, php-format
 msgid "Submitter: %1$s (%2$s)\n"
 msgstr "Gepostet von %1$s (%2$s)"
 
-#: common/include/Group.class.php:2868
+#: common/include/Group.class.php:2874
 #, php-format
 msgid ""
 "\n"
@@ -2096,12 +2088,12 @@
 "verwerfen:\n"
 "%1$s"
 
-#: common/include/Group.class.php:2872 common/include/Group.class.php:2887
+#: common/include/Group.class.php:2879 common/include/Group.class.php:2900
 #, php-format
 msgid "New %1$s Project Submitted"
 msgstr "Neues %1$s Projekt vorgeschlagen"
 
-#: common/include/Group.class.php:2880
+#: common/include/Group.class.php:2888
 #, php-format
 msgid ""
 "New %1$s Project Submitted\n"
@@ -2120,43 +2112,43 @@
 "Das %1$s-Admin-Team wird jetzt Ihre Projekt-Anmeldung überprüfen. Sie werden "
 "über deren Entscheidung benachrichtigt."
 
-#: common/include/Group.class.php:2905
+#: common/include/Group.class.php:2919
 msgid "Group name is too short"
 msgstr "Der Gruppenname ist zu kurz"
 
-#: common/include/Group.class.php:2908
+#: common/include/Group.class.php:2922
 msgid "Group name is too long"
 msgstr "Der Gruppenname ist zu lang"
 
-#: common/include/Group.class.php:2911
+#: common/include/Group.class.php:2925
 msgid "Group name already taken"
 msgstr "Der Gruppenname wird bereits verwendet"
 
-#: common/include/Group.class.php:3002
+#: common/include/Group.class.php:3016
 #, php-format
 msgid "ERROR - Could Not Update Group Unix Status: %s"
 msgstr "Fehler - Konnte den Unix Gruppen Status nicht aktualisieren: %s"
 
-#: common/include/Group.class.php:3061
+#: common/include/Group.class.php:3075
 msgid "Error: Enable to get users from group"
 msgstr "Fehler: Unmöglich die Benutzer der Gruppe anzuzeigen"
 
-#: common/include/Group.class.php:3082
+#: common/include/Group.class.php:3096
 #, fuzzy, php-format
 msgid "ERROR - Could Not Update Group DocmanCreateOnline Status: %s"
 msgstr "Fehler - Konnte den Unix Gruppen Status nicht aktualisieren: %s"
 
-#: common/include/Group.class.php:3100
+#: common/include/Group.class.php:3114
 #, fuzzy, php-format
 msgid "ERROR - Could Not Update Group UseWebdab Status: %s"
 msgstr "Fehler - Konnte den Unix Gruppen Status nicht aktualisieren: %s"
 
-#: common/include/Group.class.php:3118
+#: common/include/Group.class.php:3132
 #, fuzzy, php-format
 msgid "ERROR - Could Not Update Group UseDocmanSearch Status: %s"
 msgstr "Fehler - Konnte den Unix Gruppen Status nicht aktualisieren: %s"
 
-#: common/include/Group.class.php:3136
+#: common/include/Group.class.php:3150
 #, fuzzy, php-format
 msgid "ERROR - Could Not Update Group force_docman_reindex %s"
 msgstr "Fehler - Konnte den Unix Gruppen Status nicht aktualisieren: %s"
@@ -2178,32 +2170,39 @@
 "warten Sie auf die Antwort."
 
 #: common/include/GroupJoinRequest.class.php:228
-#: common/include/GroupJoinRequest.class.php:254
-#: common/include/GroupJoinRequest.class.php:268
 #, php-format
-msgid "Request to Join Project %1$s"
-msgstr "Anfrage dem Projekt %1$s beizutreten"
+msgid "Request to Join Project %1$s from %2$s (%3$s)"
+msgstr "Anfrage von %2$s (%3$s), dem Projekt %1$s beizutreten"
 
-#: common/include/GroupJoinRequest.class.php:230
+#: common/include/GroupJoinRequest.class.php:234
 #, php-format
 msgid ""
-"%1$s has requested to join your project. \n"
-"You can approve this request here: %2$s \n"
+"%1$s (%2$s) has requested to join your project. \n"
+"You can approve this request here: %3$s \n"
 "\n"
 "Comments by the user:\n"
-"%3$s"
+"%4$s"
 msgstr ""
-"%1$s bittet Ihrem Projekt beitreten zu können. Sie können diese Bitte hier "
-"(%2$s) akzeptieren. Kommentare des Nutzers: %3$s"
+"%1$s (%2$s) bittet Ihrem Projekt beitreten zu können.\n"
+"Sie können diese Bitte hier akzeptieren: %3$s\n"
+"\n"
+"Kommentare des Nutzers:\n"
+"%4$s"
 
-#: common/include/GroupJoinRequest.class.php:255
+#: common/include/GroupJoinRequest.class.php:259
+#: common/include/GroupJoinRequest.class.php:273
 #, php-format
+msgid "Request to Join Project %1$s"
+msgstr "Anfrage dem Projekt %1$s beizutreten"
+
+#: common/include/GroupJoinRequest.class.php:260
+#, php-format
 msgid "Your request to join the %1$s project was denied by an administrator."
 msgstr ""
 "Ihre Anfrage dem Projekt %1$s beizutreten wurde von einem Administrator "
 "abgelehnt."
 
-#: common/include/GroupJoinRequest.class.php:269
+#: common/include/GroupJoinRequest.class.php:274
 #, php-format
 msgid "Your request to join the %1$s project was granted by an administrator."
 msgstr ""
@@ -2211,6 +2210,7 @@
 "stattgegeben."
 
 #: common/include/Navigation.class.php:184
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:228
 #: www/themes/evolvis/Theme.class.php:118
 msgid "Log Out"
 msgstr "Abmelden"
@@ -2221,6 +2221,7 @@
 msgstr "Mein Account"
 
 #: common/include/Navigation.class.php:195
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:232
 #: www/themes/evolvis/Theme.class.php:137
 msgid "Log In"
 msgstr "Anmelden"
@@ -2287,9 +2288,9 @@
 #: common/include/Navigation.class.php:280 www/frs/include/frs_utils.php:76
 #: www/pm/include/ProjectGroupHTML.class.php:97
 #: www/pm/include/ProjectGroupHTML.class.php:105
-#: www/scm/include/scm_utils.php:50
+#: www/scm/include/scm_utils.php:86
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:48
-#: www/tracker/include/ArtifactTypeHtml.class.php:774
+#: www/tracker/include/ArtifactTypeHtml.class.php:776
 msgid "Reporting"
 msgstr "Auswertung"
 
@@ -2451,93 +2452,93 @@
 "Manche Plugins liefern keinen Namen. Ich würd gerne sagen welche aber leider "
 "kann ich nicht. Tut mir leid."
 
-#: common/include/RBAC.php:1158
+#: common/include/RBAC.php:1153
 #, php-format
 msgid "%s (global role)"
 msgstr "%1$s (globale Rolle)"
 
-#: common/include/RBAC.php:1162
+#: common/include/RBAC.php:1157
 #, php-format
 msgid "%s (in project %s)"
 msgstr "%s (in Projekt %s)"
 
-#: common/include/RBAC.php:1486
+#: common/include/RBAC.php:1481
 #, fuzzy
 msgid "Anonymous/not logged in"
 msgstr "Sie müssen eingeloggt sein"
 
-#: common/include/RBAC.php:1534
+#: common/include/RBAC.php:1529
 #, fuzzy
 msgid "Any user logged in"
 msgstr "Sie müssen sich erst einloggen"
 
-#: common/include/SCMPlugin.class.php:122
+#: common/include/SCMPlugin.class.php:127
 #, fuzzy
 msgid "Unimplemented SCM plugin."
 msgstr "<p>Nicht implementiertes SCM plugin.</p>"
 
-#: common/include/SCMPlugin.class.php:126
+#: common/include/SCMPlugin.class.php:131
 #, fuzzy
 msgid "Instructions for anonymous access for unimplemented SCM plugin."
 msgstr ""
 "<p>Anleitung für anonymen Zugriff auf nicht implementiertes SCM-Plugin.</p>"
 
-#: common/include/SCMPlugin.class.php:130
+#: common/include/SCMPlugin.class.php:135
 #, fuzzy
 msgid "Instructions for read-write access for unimplemented SCM plugin."
 msgstr ""
 "<p>Anleitung für Lese-/Schreibzugriff auf nicht implementiertes SCM-Plugin.</"
 "p>"
 
-#: common/include/SCMPlugin.class.php:134
+#: common/include/SCMPlugin.class.php:139
 #, fuzzy
 msgid "Instructions for snapshot access for unimplemented SCM plugin."
 msgstr ""
 "<p>Anleitung für Snapshot-Zugriff auf nicht implementiertes SCM-Plugin.</p>"
 
-#: common/include/SCMPlugin.class.php:139
-#: common/include/SCMPlugin.class.php:153
+#: common/include/SCMPlugin.class.php:144
+#: common/include/SCMPlugin.class.php:158
 msgid "Repository Browser"
 msgstr "Quellcoderepository ansehen"
 
-#: common/include/SCMPlugin.class.php:141
-#: common/include/SCMPlugin.class.php:155
+#: common/include/SCMPlugin.class.php:146
+#: common/include/SCMPlugin.class.php:160
 #, fuzzy
 msgid "Browsing the SCM tree is not yet implemented for this SCM plugin."
 msgstr ""
 "<p>Die Durchsuchung des SCM Baums ist für dieses SCM plugin noch nicht "
 "implementiert.</p>"
 
-#: common/include/SCMPlugin.class.php:145
+#: common/include/SCMPlugin.class.php:150
 msgid "Not implemented yet"
 msgstr "Noch nicht umgesetzt"
 
-#: common/include/SCMPlugin.class.php:162
+#: common/include/SCMPlugin.class.php:167
 #: plugins/scmcvs/common/CVSPlugin.class.php:148
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:193
 #: plugins/scmsvn/common/SVNPlugin.class.php:189
 msgid "Repository Statistics"
 msgstr "Quellcodestatistiken"
 
-#: common/include/SCMPlugin.class.php:164
+#: common/include/SCMPlugin.class.php:169
 #, fuzzy
 msgid "Not implemented for this SCM plugin yet."
 msgstr "Noch nicht umgesetzt"
 
-#: common/include/SCMPlugin.class.php:178
+#: common/include/SCMPlugin.class.php:183
 #, fuzzy
 msgid "Repository Information"
 msgstr "Weitere Informationen"
 
-#: common/include/SCMPlugin.class.php:197
+#: common/include/SCMPlugin.class.php:202
 msgid "Repository History"
 msgstr "Quellcode Historie"
 
-#: common/include/SCMPlugin.class.php:198
+#: common/include/SCMPlugin.class.php:203
 msgid "Data about current and past states of the repository"
 msgstr "Daten über aktuelle und vergangene Zustände der Quellcoderepository"
 
-#: common/include/SCMPlugin.class.php:227
+#: common/include/SCMPlugin.class.php:232
 #, fuzzy
 msgid "Enable Anonymous Read Access"
 msgstr "Ermögliche anonymen Zugang"
@@ -2906,41 +2907,43 @@
 msgid "Year-Month-Day with Norwegian labels"
 msgstr "Jahr-Monat-Tag mit norwegischen Bezeichnern"
 
-#: common/include/datepick.php:267
+#: common/include/datepick.php:266
 msgid "locale-dependent-default-datepick-format"
 msgstr "dmy_de"
 
-#: common/include/descriptive.php:78
+#: common/include/descriptive.php:80
 msgid "Sort comments antichronologically"
 msgstr "Sortiere Kommentare, neueste zuerst"
 
-#: common/include/descriptive.php:81
+#: common/include/descriptive.php:83
 msgid "Sort comments chronologically"
 msgstr "Sortiere Kommentare, älteste zuerst"
 
-#: common/include/descriptive.php:131
-msgid "Sender"
-msgstr "Sender"
+#: common/include/descriptive.php:134
+#: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:48
+#: www/tracker/admin/form-workflow.php:80
+msgid "From"
+msgstr "Von"
 
-#: common/include/descriptive.php:228 common/include/descriptive.php:229
+#: common/include/descriptive.php:231 common/include/descriptive.php:232
 msgid "Click to edit"
 msgstr "Klicken zum Bearbeiten"
 
-#: common/include/descriptive.php:284
+#: common/include/descriptive.php:287
 msgid "Write a comment"
 msgstr "Einen Kommentar verfassen"
 
-#: common/include/descriptive.php:540
+#: common/include/descriptive.php:543
 #, php-format
 msgid "%s (Task)"
 msgstr "%s (Task/Aufgabe)"
 
-#: common/include/descriptive.php:545
+#: common/include/descriptive.php:548
 #, php-format
 msgid "%s (Bug/FR)"
 msgstr "%s (Bug/FR)"
 
-#: common/include/descriptive.php:550
+#: common/include/descriptive.php:553
 #, php-format
 msgid "%s (Forum Message)"
 msgstr "%s (Forumnachricht)"
@@ -2949,7 +2952,7 @@
 msgid "Exiting with error"
 msgstr "Beendigung mit Fehler"
 
-#: common/include/exit.php:58
+#: common/include/exit.php:62
 #, fuzzy
 msgid ""
 "Permission denied. This project's administrator will have to grant you "
@@ -2957,12 +2960,12 @@
 msgstr ""
 "Dieser Projekt-Administrator muß Sie berechtigen, um diese Seite zu sehen."
 
-#: common/include/exit.php:71
+#: common/include/exit.php:75
 #, fuzzy
 msgid "You are not logged in."
 msgstr "Projekt-Administrator"
 
-#: common/include/exit.php:83
+#: common/include/exit.php:87
 #, fuzzy
 msgid ""
 "Permission denied. No project was chosen, project does not exist or you "
@@ -2970,21 +2973,21 @@
 msgstr ""
 "Keine Gruppe wurde ausgewählt oder Sie können auf diese nicht zugreifen"
 
-#: common/include/exit.php:97
+#: common/include/exit.php:101
 #, fuzzy
 msgid "Missing required parameters : "
 msgstr "Fehler - es fehlen benötigte Parameter"
 
-#: common/include/exit.php:102
+#: common/include/exit.php:106
 #, fuzzy, php-format
 msgid "Missing required parameters."
 msgstr "Fehler - es fehlen benötigte Parameter"
 
-#: common/include/exit.php:120
+#: common/include/exit.php:124
 msgid "The Site Administrator has turned off this feature."
 msgstr "Der Site Administrator hat dieses Feature ausgeschaltet."
 
-#: common/include/exit.php:129
+#: common/include/exit.php:133
 msgid "You Attempted To Double-submit this item. Please avoid double-clicking."
 msgstr ""
 "Sie haben versucht dieses Element doppelt abzuschicken. Bitte vermeiden Sie "
@@ -3024,28 +3027,28 @@
 msgid "Package JPGraph not installed"
 msgstr "Paket JPGraph wurde noch nicht installiert"
 
-#: common/include/jpgraph.php:48
+#: common/include/jpgraph.php:50
 msgid "Cannot display error picture: called recursively! Backtrace:"
 msgstr "Kann Fehlerbild nicht darstellen: Fehlerschleife! Backtrace:"
 
-#: common/include/jpgraph.php:49
+#: common/include/jpgraph.php:51
 msgid "Cannot display error picture, headers already sent! Backtrace:"
 msgstr ""
 "Kann Fehlerbild nicht darstellen, weil die Header bereits gesendet wurden! "
 "Backtrace:"
 
-#: common/include/jpgraph.php:66
+#: common/include/jpgraph.php:68
 #, php-format
 msgid "%s Error:"
 msgstr "%s Fehler:"
 
-#: common/include/jpgraph.php:80
+#: common/include/jpgraph.php:83
 msgid "A Forge error occured; maybe you’re not logged in or lack permissions."
 msgstr ""
 "In der Forge ist ein Fehler aufgetreten; vielleicht bist Du nicht "
 "eingeloggt, oder Dir fehlen Zugriffsrechte."
 
-#: common/include/jpgraph.php:91
+#: common/include/jpgraph.php:94
 msgid ""
 "A fatal JpGraph error occured; maybe your query did not yield any data "
 "points."
@@ -3053,14 +3056,14 @@
 "In JpGraph ist ein fataler Fehler aufgetreten; vielleicht hat Deine Abfrage "
 "keine Datenpunkte für den Graphen geliefert."
 
-#: common/include/jpgraph.php:93
+#: common/include/jpgraph.php:96
 msgid ""
 "A non-fatal JpGraph error occured; we’re nevertheless halting execution."
 msgstr ""
 "In JpGraph ist ein eigentlich nicht fataler Fehler aufgetreten, aber die "
 "Ausführung mußte trotzdem gestoppt werden."
 
-#: common/include/pre.php:281
+#: common/include/pre.php:279
 #, php-format
 msgid "Posted data is too large. %1$s exceeds the maximum size of %2$s"
 msgstr ""
@@ -3069,7 +3072,7 @@
 #: common/include/rbac_texts.php:43 common/include/rbac_texts.php:55
 #: common/include/rbac_texts.php:58 common/include/rbac_texts.php:60
 #: common/include/rbac_texts.php:62
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:215
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:232
 #, fuzzy
 msgid "No administrative access"
 msgstr "verwaltend"
@@ -3100,7 +3103,7 @@
 msgstr "Genehmigen"
 
 #: common/include/rbac_texts.php:50
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:195
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:212
 #, fuzzy
 msgid "Read access"
 msgstr "Kein Zugang"
@@ -3336,15 +3339,15 @@
 
 #: common/include/rbac_texts.php:212 common/include/rbac_texts.php:214
 #: common/include/rbac_texts.php:216 common/include/rbac_texts.php:218
-#: common/widget/Widget_MyArtifacts.class.php:116 www/admin/pluginman.php:176
+#: common/widget/Widget_MyArtifacts.class.php:127 www/admin/pluginman.php:176
 #: www/admin/pluginman.php:195 www/admin/pluginman.php:202
 #: www/admin/pluginman.php:203 www/include/html.php:314
 #: www/include/html.php:422 www/include/html.php:514 www/include/html.php:531
 #: www/include/html.php:565 www/include/html.php:606 www/include/html.php:645
 #: www/pm/ganttpage.php:62 www/tracker/include/ArtifactHtml.class.php:64
-#: www/tracker/include/ArtifactTypeHtml.class.php:428
-#: www/tracker/include/ArtifactTypeHtml.class.php:489
-#: www/tracker/include/ArtifactTypeHtml.class.php:721
+#: www/tracker/include/ArtifactTypeHtml.class.php:430
+#: www/tracker/include/ArtifactTypeHtml.class.php:491
+#: www/tracker/include/ArtifactTypeHtml.class.php:723
 msgid "None"
 msgstr "Keine"
 
@@ -3386,9 +3389,9 @@
 
 #: common/include/session.php:158 common/include/session.php:191
 #: common/include/session.php:242
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:131
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:187
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:297
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:140
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:196
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:306
 msgid "Invalid Password Or User Name"
 msgstr "Ungültiges Paßwort oder Benutzername"
 
@@ -3408,11 +3411,11 @@
 msgid "Account Not Active"
 msgstr "Account nicht aktiv"
 
-#: common/include/session.php:419
+#: common/include/session.php:430
 msgid "Your account is no longer active ; you have been disconnected"
 msgstr "Ihr Account ist nicht mehr aktiv; ihre Verbindung wurde unterbrochen"
 
-#: common/include/session.php:472
+#: common/include/session.php:483
 #, fuzzy, php-format
 msgid ""
 "Permission denied. The %s administrators will have to grant you permission "
@@ -3420,34 +3423,34 @@
 msgstr ""
 "Dieser Projekt-Administrator muß Sie berechtigen, um diese Seite zu sehen."
 
-#: common/include/session.php:528
+#: common/include/session.php:539
 #, fuzzy
 msgid "Could not fetch user session data"
 msgstr "Zugriff nicht erhalten."
 
-#: common/include/session.php:556
+#: common/include/session.php:567
 msgid "No admin users ?"
 msgstr "Keine administrativen Benutzer?"
 
-#: common/include/utils.php:178
+#: common/include/utils.php:180
 msgid "UTF-8"
 msgstr "UTF-8"
 
-#: common/include/utils.php:542
+#: common/include/utils.php:544
 msgid "Priority Colors"
 msgstr "Prioritätsfarben"
 
-#: common/include/utils.php:1242
+#: common/include/utils.php:1244
 #, fuzzy
 msgid "Error: a mailing list with the same email address already exists."
 msgstr "Ein Benutzer mit dieser Email-Adresse existiert bereits."
 
-#: common/include/utils.php:1258
+#: common/include/utils.php:1260
 #, fuzzy
 msgid "Error: a forum with the same email address already exists."
 msgstr "Ein Benutzer mit dieser Email-Adresse existiert bereits."
 
-#: common/include/utils.php:1500
+#: common/include/utils.php:1497
 msgid "Internal Error: Could not read from random device"
 msgstr "Interner Fehler: Kann nicht vom Zufallsgenerator lesen"
 
@@ -3535,7 +3538,7 @@
 msgid "Error Getting mailing list"
 msgstr "Existierende Mailinglisten"
 
-#: common/mail/MailingList.class.php:388
+#: common/mail/MailingList.class.php:389
 msgid "Sorry, this mailing list is special and must not be deleted."
 msgstr "Sorry, diese Malingliste kann nicht gelöscht werden."
 
@@ -3559,11 +3562,11 @@
 msgid "All Fields Are Required."
 msgstr "Alle Felder erforderlich."
 
-#: common/pm/ProjectTask.class.php:731
+#: common/pm/ProjectTask.class.php:738
 msgid "Circular Dependency Detected'"
 msgstr "Periodische Abhängigkeiten entdeckt"
 
-#: common/pm/ProjectTask.class.php:1216
+#: common/pm/ProjectTask.class.php:1238
 #, fuzzy, php-format
 msgid "[%1$s - %2$s] [Task #%3$d] "
 msgstr "[%1$s - %2$s] Task [#%3$d] "
@@ -3792,8 +3795,8 @@
 #: plugins/mailman/www/admin/index.php:208 plugins/mailman/www/index.php:26
 #: plugins/mailman/www/index.php:33 plugins/mailman/www/index.php:36
 #: plugins/mailman/www/index.php:48 www/forum/admin/pendingmsgdetail.php:51
-#: www/forum/admin/pendingmsgdetail.php:53 www/mail/admin/index.php:154
-#: www/mail/admin/index.php:250 www/snippet/download.php:45
+#: www/forum/admin/pendingmsgdetail.php:53 www/mail/admin/index.php:153
+#: www/mail/admin/index.php:249 www/snippet/download.php:45
 #: www/survey/admin/question.php:64 www/survey/admin/question.php:66
 #: www/survey/admin/show_results.php:69 www/survey/admin/show_results.php:73
 #: www/survey/admin/show_results.php:84 www/survey/admin/show_results.php:86
@@ -3817,8 +3820,8 @@
 msgid "Artifact: Only group members can view private artifact types"
 msgstr "Produkt: Nur Gruppenmitglieder können private Produkttypen sehen"
 
-#: common/tracker/Artifact.class.php:206 common/tracker/Artifact.class.php:749
-#: www/tracker/tracker.php:96 www/tracker/tracker.php:294
+#: common/tracker/Artifact.class.php:206 common/tracker/Artifact.class.php:751
+#: www/tracker/tracker.php:96 www/tracker/tracker.php:292
 msgid ""
 "Artifact: This ArtifactType Does Not Allow Anonymous Submissions. Please "
 "Login."
@@ -3833,23 +3836,23 @@
 msgid "Artifact: Message Body Is Required"
 msgstr "Gegenstand: Rumpf der Nachricht erforderlich"
 
-#: common/tracker/Artifact.class.php:240
+#: common/tracker/Artifact.class.php:241
 msgid "Artifact: Error remapping status"
 msgstr "Artifact: Fehler bom remapStatus"
 
-#: common/tracker/Artifact.class.php:582
+#: common/tracker/Artifact.class.php:583
 msgid "SetMonitor::Valid Email Address Required"
 msgstr "SetMonitor::Gültige Email-Adresse benötigt"
 
-#: common/tracker/Artifact.class.php:600
+#: common/tracker/Artifact.class.php:601
 msgid "Now Monitoring Artifact"
 msgstr "Beobachtung aktiviert"
 
-#: common/tracker/Artifact.class.php:610
+#: common/tracker/Artifact.class.php:611
 msgid "Artifact Monitoring Deactivated"
 msgstr "Beobachtung deaktiviert"
 
-#: common/tracker/Artifact.class.php:1141
+#: common/tracker/Artifact.class.php:1146
 msgid "Nothing Changed - Update Cancelled"
 msgstr "Keine Änderungen - Aktualisierung abgebrochen"
 
@@ -3862,63 +3865,57 @@
 msgid "ArtifactCanned: name and assignee are Required"
 msgstr "ArtifactCanned: Name und Bevollmächtigter werden benötigt"
 
-#: common/tracker/ArtifactExtraField.class.php:108
-#: common/tracker/ArtifactExtraField.class.php:378
+#: common/tracker/ArtifactExtraField.class.php:120
+#: common/tracker/ArtifactExtraField.class.php:362
 msgid "a field name is required"
 msgstr "Ein Feldname ist erforderlich"
 
-#: common/tracker/ArtifactExtraField.class.php:124
-#: common/tracker/ArtifactExtraField.class.php:387
-#, fuzzy
-msgid "Field name already exists"
-msgstr "Dieser Benutzername existiert bereits."
+#: common/tracker/ArtifactExtraField.class.php:136
+#: common/tracker/ArtifactExtraField.class.php:371
+#, php-format
+msgid "Field name \"%s\" already exists"
+msgstr "Feldname \"%s\" existiert bereits"
 
-#: common/tracker/ArtifactExtraField.class.php:186
-#: common/tracker/ArtifactExtraField.class.php:192
-#: www/tracker/admin/updates.php:100 www/tracker/admin/updates.php:199
-msgid "Error inserting an element"
-msgstr "Fehler beim Einfügen eines Elementes"
-
-#: common/tracker/ArtifactExtraField.class.php:320
+#: common/tracker/ArtifactExtraField.class.php:309
 #: www/tracker/admin/form-addextrafield.php:125
 msgid "Select Box"
 msgstr "Auswahl Box"
 
-#: common/tracker/ArtifactExtraField.class.php:321
+#: common/tracker/ArtifactExtraField.class.php:310
 #: www/tracker/admin/form-addextrafield.php:126
 msgid "Check Box"
 msgstr "Check Box"
 
-#: common/tracker/ArtifactExtraField.class.php:322
+#: common/tracker/ArtifactExtraField.class.php:311
 #: www/tracker/admin/form-addextrafield.php:127
 msgid "Radio Buttons"
 msgstr "Radio Buttons"
 
-#: common/tracker/ArtifactExtraField.class.php:323
+#: common/tracker/ArtifactExtraField.class.php:312
 #: www/tracker/admin/form-addextrafield.php:128
 msgid "Text Field"
 msgstr "Textfeld"
 
-#: common/tracker/ArtifactExtraField.class.php:324
+#: common/tracker/ArtifactExtraField.class.php:313
 #: www/tracker/admin/form-addextrafield.php:129
 msgid "Multi-Select Box"
 msgstr "Mehrfachauswahl Box"
 
-#: common/tracker/ArtifactExtraField.class.php:325
+#: common/tracker/ArtifactExtraField.class.php:314
 #: www/tracker/admin/form-addextrafield.php:130
 msgid "Text Area"
 msgstr "Textbereich"
 
-#: common/tracker/ArtifactExtraField.class.php:327
+#: common/tracker/ArtifactExtraField.class.php:316
 #, fuzzy
 msgid "Relation"
 msgstr "Auflösung"
 
-#: common/tracker/ArtifactExtraField.class.php:328
+#: common/tracker/ArtifactExtraField.class.php:317
 msgid "Integer"
 msgstr "Integer"
 
-#: common/tracker/ArtifactExtraField.class.php:496
+#: common/tracker/ArtifactExtraField.class.php:480
 msgid ""
 "The alias (field name) contains invalid characters. Only letters, numbers, "
 "commercial at (@), underscores (_) and hyphen (-) allowed."
@@ -3926,13 +3923,13 @@
 "Der Alias (Feldname) enthält ungültige Zeichen. Nur Buchstaben, Zahlen, "
 "Klammeraffe (@), Unterstrich (_) und Bindestrich (-) sind erlaubt."
 
-#: common/tracker/ArtifactExtraField.class.php:499
+#: common/tracker/ArtifactExtraField.class.php:483
 #, php-format
 msgid "'%1$s' is a reserved alias. Please provide another name."
 msgstr ""
 "'%1$s' ist ein reservierter Alias. Bitte wählen Sie einen anderen Namen."
 
-#: common/tracker/ArtifactExtraField.class.php:583
+#: common/tracker/ArtifactExtraField.class.php:565
 msgid "Out of range value"
 msgstr "Wert außerhalb des zulässigen Bereichs"
 
@@ -3959,7 +3956,7 @@
 msgstr "Anfrage bereits gestellt"
 
 #: common/tracker/ArtifactQuery.class.php:150
-#: common/tracker/ArtifactQuery.class.php:682
+#: common/tracker/ArtifactQuery.class.php:667
 #, fuzzy
 msgid ""
 "You must have tracker admin rights to set or update a project level query."
@@ -3967,31 +3964,31 @@
 "Sie benötigen Admin-Rechte für den Tracker um eine Projekt-Level-Anfrage "
 "einzurichten oder upzudaten."
 
-#: common/tracker/ArtifactQuery.class.php:678
+#: common/tracker/ArtifactQuery.class.php:663
 msgid "Query does not exist"
 msgstr "Anfrage existiert nicht"
 
-#: common/tracker/ArtifactType.class.php:207
-#: common/tracker/ArtifactType.class.php:978
+#: common/tracker/ArtifactType.class.php:208
+#: common/tracker/ArtifactType.class.php:961
 msgid ""
 "ArtifactType: Name, Description, Due Period, and Status Timeout are required"
 msgstr ""
 "ArtifactType: Name, Beschreibung, Frist, und Statustimeout werden benötigt"
 
-#: common/tracker/ArtifactType.class.php:214
-#: common/tracker/ArtifactType.class.php:996
+#: common/tracker/ArtifactType.class.php:215
+#: common/tracker/ArtifactType.class.php:979
 msgid "E-mail address(es) appeared invalid"
 msgstr "Die E-Mail-Adresse(n) erscheint ungültig"
 
-#: common/tracker/ArtifactType.class.php:567
+#: common/tracker/ArtifactType.class.php:568
 msgid "Now Monitoring Tracker"
 msgstr "Sie beobachten nun den Tracker."
 
-#: common/tracker/ArtifactType.class.php:577
+#: common/tracker/ArtifactType.class.php:578
 msgid "Tracker Monitoring Deactivated"
 msgstr "Beobachtung des Trackers deaktiviert."
 
-#: common/tracker/ArtifactType.class.php:989
+#: common/tracker/ArtifactType.class.php:972
 #, fuzzy
 msgid "Tracker name already used"
 msgstr "Gruppenname bereits verwendet"
@@ -4021,33 +4018,33 @@
 #: www/pm/include/ProjectView.class.php:238
 #: www/project/admin/editimages.php:237 www/project/admin/roledelete.php:85
 #: www/project/admin/roleedit.php:359 www/project/request.php:69
-#: www/register/index.php:280 www/survey/include/SurveyHTML.class.php:551
+#: www/register/index.php:325 www/survey/include/SurveyHTML.class.php:551
 #: www/tracker/admin/form-addcanned.php:69
 #: www/tracker/admin/form-addextrafield.php:145
 #: www/tracker/admin/form-addextrafieldoption.php:104
-#: www/tracker/admin/form-clonetracker.php:59
+#: www/tracker/admin/form-clonetracker.php:89
 #: www/tracker/admin/form-customizelist.php:77
 #: www/tracker/admin/form-deleteextrafieldelement.php:63
 #: www/tracker/admin/form-extrafieldcopy.php:97
 #: www/tracker/admin/form-updatecanned.php:49
 #: www/tracker/admin/form-updateextrafield.php:79
 #: www/tracker/admin/form-updateextrafieldelement.php:67
-#: www/tracker/admin/form-updatetracker.php:80
+#: www/tracker/admin/form-updatetracker.php:83
 #: www/tracker/admin/form-uploadtemplate.php:39
-#: www/tracker/admin/form-workflow.php:121
+#: www/tracker/admin/form-workflow.php:158
 #: www/tracker/admin/form-workflow_roles.php:76 www/tracker/admin/ind.php:165
 msgid "Submit"
 msgstr "Abschicken"
 
 #: common/widget/WidgetLayoutManager.class.php:242
-#: common/widget/WidgetLayoutManager.class.php:246 www/include/html.php:915
-#: www/include/project_home.php:73 www/widgets/widgets.php:73
+#: common/widget/WidgetLayoutManager.class.php:246 www/include/html.php:921
+#: www/include/project_home.php:67 www/widgets/widgets.php:73
 #, fuzzy
 msgid "Add widgets"
 msgstr "Datum hinzufügen"
 
 #: common/widget/WidgetLayoutManager.class.php:243
-#: common/widget/WidgetLayoutManager.class.php:247 www/include/html.php:919
+#: common/widget/WidgetLayoutManager.class.php:247 www/include/html.php:925
 #: www/widgets/widgets.php:71
 #, fuzzy
 msgid "Customize layout"
@@ -4118,12 +4115,12 @@
 msgid "assigned to or submitted by me [AS]"
 msgstr "zugewiesen oder eingereicht von mir [AS]"
 
-#: common/widget/Widget_MyArtifacts.class.php:114
+#: common/widget/Widget_MyArtifacts.class.php:125
 #, fuzzy
 msgid "You have no artifacts"
 msgstr "Sie haben keine Terminkalendereinträge"
 
-#: common/widget/Widget_MyArtifacts.class.php:264
+#: common/widget/Widget_MyArtifacts.class.php:275
 msgid "List artifacts you have submitted or assigned to you, by project."
 msgstr ""
 "Liste der von ihnen übermittelten oder ihnen zugewiesenen Artefakte des "
@@ -4357,16 +4354,16 @@
 msgid "List the surveys you have not answered."
 msgstr "Liste die nicht beantworteten Umfragen."
 
-#: common/widget/Widget_MyTasks.class.php:118
+#: common/widget/Widget_MyTasks.class.php:146
 #, fuzzy
 msgid "No task yet"
 msgstr "Noch nicht aktiviert"
 
-#: common/widget/Widget_MyTasks.class.php:122
+#: common/widget/Widget_MyTasks.class.php:150
 msgid "My Tasks"
 msgstr "Meine Aufgaben (Tasks)"
 
-#: common/widget/Widget_MyTasks.class.php:141
+#: common/widget/Widget_MyTasks.class.php:169
 msgid "List the tasks assigned to you."
 msgstr ""
 
@@ -4457,13 +4454,13 @@
 msgstr "Anmerkungen"
 
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:64
-#: www/tracker/include/ArtifactTypeHtml.class.php:789 www/tracker/item.php:240
+#: www/tracker/include/ArtifactTypeHtml.class.php:791 www/tracker/item.php:245
 msgid "Monitor"
 msgstr "Beobachte"
 
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:67
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:143
-#: plugins/mediawiki/www/plugin_admin.php:157 www/new/index.php:119
+#: plugins/mediawiki/www/plugin_admin.php:161 www/new/index.php:119
 msgid "Download"
 msgstr "Download"
 
@@ -4518,20 +4515,20 @@
 msgid "Project Admins"
 msgstr "Projektbetreuer"
 
-#: common/widget/Widget_ProjectMembers.class.php:74 www/admin/grouplist.php:95
+#: common/widget/Widget_ProjectMembers.class.php:74
 msgid "Members"
 msgstr "Mitglieder"
 
-#: common/widget/Widget_ProjectMembers.class.php:119
+#: common/widget/Widget_ProjectMembers.class.php:121
 #, fuzzy, php-format
 msgid "View the %1$d Member(s)"
 msgstr "Zeige Mitglieder"
 
-#: common/widget/Widget_ProjectMembers.class.php:126
+#: common/widget/Widget_ProjectMembers.class.php:128
 msgid "Request to join"
 msgstr "Beitrittsgesuch"
 
-#: common/widget/Widget_ProjectMembers.class.php:133
+#: common/widget/Widget_ProjectMembers.class.php:135
 #, fuzzy
 msgid "List the project members."
 msgstr "[Zeige/Bearbeite Projekt-Mitglieder]"
@@ -4605,7 +4602,7 @@
 #: common/widget/Widget_ProjectPublicAreas.class.php:165
 #: plugins/scmgit/www/index.php:23 plugins/scmgit/www/index.php:36
 #: www/register/index.php:221 www/scm/admin/index.php:72
-#: www/scm/admin/index.php:89 www/scm/browser.php:30 www/scm/index.php:32
+#: www/scm/admin/index.php:89 www/scm/browser.php:42 www/scm/index.php:32
 #: www/scm/viewvc.php:134
 msgid "SCM Repository"
 msgstr "SCM Repository"
@@ -4856,7 +4853,7 @@
 #: plugins/scmsvn/common/SVNPlugin.class.php:192 www/admin/useredit.php:234
 #: www/project/admin/editimages.php:267 www/reporting/usersummary.php:101
 #: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:44
-#: www/sendmessage.php:69 www/tracker/include/ArtifactTypeHtml.class.php:200
+#: www/sendmessage.php:69 www/tracker/include/ArtifactTypeHtml.class.php:202
 msgid "Name"
 msgstr "Name"
 
@@ -4947,7 +4944,7 @@
 msgstr "Attribute"
 
 #: plugins/contribtracker/common/ContribTrackerPlugin.class.php:112
-#: www/project/admin/massfinish.php:80 www/project/admin/users.php:316
+#: www/project/admin/massfinish.php:80 www/project/admin/users.php:317
 msgid "Role"
 msgstr "Rolle"
 
@@ -6023,10 +6020,11 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:233
 #: plugins/mailman/www/admin/index.php:148
 #: plugins/mailman/www/admin/index.php:180 www/admin/groupedit.php:159
-#: www/admin/groupedit.php:180 www/forum/admin/index.php:109
+#: www/admin/groupedit.php:180 www/admin/grouplist.php:194
+#: www/admin/grouplist.php:197 www/forum/admin/index.php:109
 #: www/forum/admin/index.php:114 www/forum/admin/index.php:153
 #: www/forum/admin/index.php:158 www/forum/admin/index.php:237
-#: www/mail/admin/index.php:192 www/mail/admin/index.php:223
+#: www/mail/admin/index.php:191 www/mail/admin/index.php:222
 #: www/people/editprofile.php:247 www/pm/admin/index.php:288
 #: www/pm/admin/index.php:330 www/survey/admin/show_results_aggregate.php:193
 #: www/survey/include/SurveyHTML.class.php:206
@@ -6040,10 +6038,11 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:233
 #: plugins/mailman/www/admin/index.php:149
 #: plugins/mailman/www/admin/index.php:181 www/admin/groupedit.php:158
-#: www/admin/groupedit.php:179 www/forum/admin/index.php:110
+#: www/admin/groupedit.php:179 www/admin/grouplist.php:194
+#: www/admin/grouplist.php:197 www/forum/admin/index.php:110
 #: www/forum/admin/index.php:115 www/forum/admin/index.php:154
 #: www/forum/admin/index.php:159 www/forum/admin/index.php:238
-#: www/mail/admin/index.php:193 www/mail/admin/index.php:224
+#: www/mail/admin/index.php:192 www/mail/admin/index.php:223
 #: www/people/editprofile.php:246 www/pm/admin/index.php:289
 #: www/pm/admin/index.php:331 www/survey/admin/show_results_aggregate.php:207
 #: www/survey/include/SurveyHTML.class.php:207
@@ -6147,7 +6146,7 @@
 #: plugins/globalsearch/www/index.php:163
 #, fuzzy, php-format
 msgid "Search results for %1$s"
-msgstr "Suchergebnisse für<em>%1$s</em>"
+msgstr "Suchergebnisse für %1$s"
 
 #: plugins/globalsearch/www/index.php:168
 #: www/search/include/renderers/ProjectHtmlSearchRenderer.class.php:44
@@ -6758,7 +6757,7 @@
 #: plugins/mailman/include/mailmanPlugin.class.php:155
 #: www/admin/globalroleedit.php:150 www/admin/globalroleedit.php:165
 #: www/admin/globalroleedit.php:175 www/include/Layout.class.php:1275
-#: www/my/rmproject.php:92 www/project/admin/users.php:360
+#: www/my/rmproject.php:92 www/project/admin/users.php:364
 msgid "Remove"
 msgstr "Entfernen"
 
@@ -6792,7 +6791,7 @@
 msgid "Mailman plugin"
 msgstr "Post-Admin"
 
-#: plugins/mailman/www/admin/deletelist.php:52 www/mail/admin/index.php:231
+#: plugins/mailman/www/admin/deletelist.php:52 www/mail/admin/index.php:230
 msgid "Permanently Delete List"
 msgstr "Liste dauerhaft Löschen"
 
@@ -6813,7 +6812,7 @@
 #: plugins/mailman/www/admin/index.php:94
 #: plugins/mailman/www/admin/index.php:164 www/mail/admin/index.php:64
 #: www/mail/admin/index.php:91 www/mail/admin/index.php:114
-#: www/mail/admin/index.php:209
+#: www/mail/admin/index.php:208
 msgid "Error getting the list"
 msgstr "Fehler beim Aufruf der Liste"
 
@@ -6830,7 +6829,7 @@
 msgid "List updated"
 msgstr "Liste aktualisiert"
 
-#: plugins/mailman/www/admin/index.php:116 www/mail/admin/index.php:137
+#: plugins/mailman/www/admin/index.php:116 www/mail/admin/index.php:136
 msgid "Add a Mailing List"
 msgstr "Eine Mailingliste hinzufügen"
 
@@ -6845,41 +6844,41 @@
 "%1$s</strong></p><p> Es dauert <span class=\"important\">6-24 Stunden</"
 "span>bis die Liste angelegt ist.</p>"
 
-#: plugins/mailman/www/admin/index.php:131 www/mail/admin/index.php:154
+#: plugins/mailman/www/admin/index.php:131 www/mail/admin/index.php:153
 msgid "Unable to get the lists"
 msgstr "Kein Zugriff auf die Listen möglich"
 
-#: plugins/mailman/www/admin/index.php:144 www/mail/admin/index.php:188
+#: plugins/mailman/www/admin/index.php:144 www/mail/admin/index.php:187
 msgid "Mailing List Name:"
 msgstr "Name der Mailingliste :"
 
 #: plugins/mailman/www/admin/index.php:147
 #: plugins/mailman/www/admin/index.php:179 www/forum/admin/index.php:108
-#: www/forum/admin/index.php:157 www/mail/admin/index.php:191
-#: www/mail/admin/index.php:222 www/pm/admin/index.php:287
+#: www/forum/admin/index.php:157 www/mail/admin/index.php:190
+#: www/mail/admin/index.php:221 www/pm/admin/index.php:287
 #: www/pm/admin/index.php:329
 msgid "Is Public?"
 msgstr "Ist öffentlich?"
 
-#: plugins/mailman/www/admin/index.php:153 www/mail/admin/index.php:197
+#: plugins/mailman/www/admin/index.php:153 www/mail/admin/index.php:196
 msgid "Add This List"
 msgstr "Diese Liste hinzufügen"
 
-#: plugins/mailman/www/admin/index.php:169 www/mail/admin/index.php:215
+#: plugins/mailman/www/admin/index.php:169 www/mail/admin/index.php:214
 msgid "Mail admin"
 msgstr "Post-Admin"
 
-#: plugins/mailman/www/admin/index.php:200 www/mail/admin/index.php:244
+#: plugins/mailman/www/admin/index.php:200 www/mail/admin/index.php:243
 msgid "Mailing List Administration"
 msgstr "Administration der Mailingliste"
 
 #: plugins/mailman/www/admin/index.php:208 plugins/mailman/www/index.php:48
-#: www/mail/admin/index.php:250
+#: www/mail/admin/index.php:249
 #, php-format
 msgid "Unable to get the list %s"
 msgstr "Kein Zugriff auf Liste %s möglich."
 
-#: plugins/mailman/www/admin/index.php:213 www/mail/admin/index.php:255
+#: plugins/mailman/www/admin/index.php:213 www/mail/admin/index.php:260
 #, php-format
 msgid ""
 "You can administrate lists from here. Please note that private lists can "
@@ -6889,7 +6888,7 @@
 "private Listen immernoch von Mitgliedern Ihres Projektes angeschaut werden "
 "können, die aber nicht in %1$s aufgelistet sind."
 
-#: plugins/mailman/www/admin/index.php:216 www/mail/admin/index.php:258
+#: plugins/mailman/www/admin/index.php:216 www/mail/admin/index.php:263
 msgid "Add Mailing List"
 msgstr "Mailinglisten hinzufügen"
 
@@ -6981,7 +6980,7 @@
 msgstr "Administrieren"
 
 #: plugins/mailman/www/mailman_utils.php:112
-#: plugins/mailman/www/mailman_utils.php:172 www/mail/admin/index.php:283
+#: plugins/mailman/www/mailman_utils.php:172 www/mail/admin/index.php:289
 #: www/mail/index.php:91
 msgid "Not activated yet"
 msgstr "Noch nicht aktiviert"
@@ -6993,7 +6992,6 @@
 msgstr "Fehler beim Ablehnen der Gruppe"
 
 #: plugins/mailman/www/mailman_utils.php:130 www/admin/unsubscribe.php:60
-#: www/forum/monitor.php:65
 msgid "Unsubscribe"
 msgstr "Abbestellen"
 
@@ -7123,70 +7121,79 @@
 msgid "You are not Admin of this project"
 msgstr "Sie sind bereits Mitglied dieses Projekts. "
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:193
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:210
 msgid "Mediawiki read access"
-msgstr "MediaWiki Schreibzugriff"
+msgstr "MediaWiki Lesezugriff"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:194
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:211
 msgid "No reading"
-msgstr "Keine Wertrückgabe"
+msgstr "Nicht lesen"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:199
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:216
 msgid "Mediawiki write access"
 msgstr "MediaWiki Schreibzugriff"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:200
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:217
 msgid "No editing"
-msgstr "Nur lesen"
+msgstr "Nicht bearbeiten"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:201
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:218
 msgid "Edit existing pages only"
 msgstr "Bestehende Seiten bearbeiten"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:202
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:219
 msgid "Edit and create pages"
 msgstr "Bearbeiten und neue Seiten erstellen"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:203
-#, fuzzy
-msgid "Edit, create, move, delete pages"
-msgstr "Bearbeiten und neue Seiten erstellen"
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:220
+msgid "Edit, create, move pages"
+msgstr "Bearbeiten, Seiten verschieben, neue Seiten erstellen"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:207
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:224
 msgid "Mediawiki file upload"
-msgstr "Ungültiger File-Upload"
+msgstr "Mediawiki Dateien hochladen"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:208
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:225
 msgid "No uploading"
-msgstr "Datei zum hochladen"
+msgstr "Keine Upload-Rechte"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:209
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:226
 msgid "Upload permitted"
-msgstr "Datei hochladen"
+msgstr "Upload-Rechte (neue Dateien)"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:210
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:227
 msgid "Upload and re-upload"
-msgstr "Ein neues Logo hochladen"
+msgstr "Upload und bestehende Dateien ersetzen"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:214
-#, fuzzy
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:231
 msgid "Mediawiki administrative tasks"
-msgstr "MediaWiki Schreibzugriff"
+msgstr "MediaWiki Administrationsaufgaben"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:216
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:233
 msgid "Edit interface, import XML dumps"
-msgstr "Erstelle Interface, füge XML Dumps ein"
+msgstr "Sidebar bearbeiten, XML-Dumps importieren"
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:343
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:237
+msgid "Mediawiki remove pages from history"
+msgstr "MediaWiki Seiten aus der Historië entfernen"
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:239
+msgid "No irreversible deletion"
+msgstr "Keine unwiderrufliche Löschung"
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:240
+msgid "Delete pages from history and undelete them"
+msgstr "Seiten unwiderruflich löschen"
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:377
 msgid "MediaWiki Plugin admin"
 msgstr "MediaWiki Plugin-Administration"
 
-#: plugins/mediawiki/www/LocalSettings.php:58
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:241
+msgid "Project Summary"
+msgstr "Projektübersicht"
+
+#: plugins/mediawiki/www/LocalSettings.php:59
 #, fuzzy, php-format
 msgid ""
 "Mediawiki for project %s not created yet, please wait for a few minutes."
@@ -7196,7 +7203,7 @@
 msgid "wiki"
 msgstr "Wiki"
 
-#: plugins/mediawiki/www/frame.php:38
+#: plugins/mediawiki/www/frame.php:40
 msgid "Wiki not created yet, please wait for a few minutes."
 msgstr "Das Wiki ist noch nicht aufgebaut, bitte warten Sie einige Minuten."
 
@@ -7256,30 +7263,41 @@
 #: plugins/mediawiki/www/plugin_admin.php:124
 #: www/frs/include/frs_utils.php:223 www/frs/include/frs_utils.php:261
 msgid "Unknown file upload error."
-msgstr "Unbekannter Dateihochlade Fehler."
+msgstr "Unbekannter Fehler beim Hochladen einer Datei."
 
+#: plugins/mediawiki/www/plugin_admin.php:138
+#, php-format
+msgid "MediaWiki Plugin Admin for %s"
+msgstr "MediaWiki Plugin-Administration für das %s-Projekt"
+
 #: plugins/mediawiki/www/plugin_admin.php:147
 msgid "Nightly XML dump"
-msgstr "Nächtlicher XML Dump"
+msgstr "Nächtlicher XML-Dump"
 
-#: plugins/mediawiki/www/plugin_admin.php:149
+#: plugins/mediawiki/www/plugin_admin.php:150
 #, php-format
 msgid "<a href=\"%s\">Download</a> the nightly created XML dump (backup) here."
 msgstr ""
+"Lade den nächtlich erstellten <a href=\"%s\">XML-Dump (Backup)</a> hier "
+"herunter."
 
-#: plugins/mediawiki/www/plugin_admin.php:156
+#: plugins/mediawiki/www/plugin_admin.php:154
+msgid "XML dumps are not available for private wikis."
+msgstr "XML-Dumps sind nicht bei privaten Wikis verfügbar."
+
+#: plugins/mediawiki/www/plugin_admin.php:160
 msgid "Current logo:"
 msgstr "Aktuelles Logo:"
 
-#: plugins/mediawiki/www/plugin_admin.php:161
+#: plugins/mediawiki/www/plugin_admin.php:165
 msgid "No per-project logo currently installed."
 msgstr "Zur Zeit kein projektlokales Logo installiert."
 
-#: plugins/mediawiki/www/plugin_admin.php:169
+#: plugins/mediawiki/www/plugin_admin.php:173
 msgid "Upload a new logo"
 msgstr "Ein neues Logo hochladen"
 
-#: plugins/mediawiki/www/plugin_admin.php:171
+#: plugins/mediawiki/www/plugin_admin.php:175
 msgid ""
 "NOTE: In some browsers you must select the file in the file-upload dialog "
 "and click \"OK\".  Double-clicking doesn't register the file."
@@ -7288,12 +7306,12 @@
 "auswählen und dann auf \"OK\" klicken. Ein Doppelklick wählt die Datei nicht "
 "aus."
 
-#: plugins/mediawiki/www/plugin_admin.php:173
+#: plugins/mediawiki/www/plugin_admin.php:177
 #: www/frs/admin/editrelease.php:287 www/frs/admin/qrs.php:201
 msgid "Upload a new file"
 msgstr "Eine neue Datei hochladen"
 
-#: plugins/mediawiki/www/plugin_admin.php:179
+#: plugins/mediawiki/www/plugin_admin.php:184
 #: www/frs/admin/editrelease.php:302 www/frs/admin/qrs.php:217
 #, php-format
 msgid ""
@@ -7304,7 +7322,7 @@
 "\"%2$s\">incoming-Verzeichnis (%1$s) des Projektes</a> hochgeladen wurde, "
 "auswählen."
 
-#: plugins/mediawiki/www/plugin_admin.php:181
+#: plugins/mediawiki/www/plugin_admin.php:186
 #: www/frs/admin/editrelease.php:304 www/frs/admin/qrs.php:219
 msgid ""
 "This direct <tt>sftp://</tt> link only works with some browsers, such as "
@@ -7313,17 +7331,17 @@
 "Dieser direkte <tt>sftp://</tt>-Link funktioniert nur mit manchen Browsern, "
 "zum Beispiel Konqueror."
 
-#: plugins/mediawiki/www/plugin_admin.php:182
+#: plugins/mediawiki/www/plugin_admin.php:187
 #: www/frs/admin/editrelease.php:292 www/frs/admin/editrelease.php:305
 #: www/frs/admin/qrs.php:220
 msgid "Choose an already uploaded file:"
 msgstr "Bereits hochgeladene Datei wählen:"
 
-#: plugins/mediawiki/www/plugin_admin.php:188
+#: plugins/mediawiki/www/plugin_admin.php:193
 msgid "… or delete the currently uploaded logo and revert to the site default"
 msgstr "… oder das zur Zeit aktive Logo löschen und zum Standard revertieren"
 
-#: plugins/mediawiki/www/plugin_admin.php:189
+#: plugins/mediawiki/www/plugin_admin.php:194
 msgid "Upload new logo"
 msgstr "Neues Logo hochladen"
 
@@ -8053,7 +8071,7 @@
 #: plugins/scmbzr/common/BzrPlugin.class.php:68
 #: plugins/scmcvs/common/CVSPlugin.class.php:64
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:82
-#: plugins/scmgit/common/GitPlugin.class.php:61
+#: plugins/scmgit/common/GitPlugin.class.php:82
 #: plugins/scmsvn/common/SVNPlugin.class.php:78
 #, php-format
 msgid "<strong>%1$s</strong> commits, <strong>%2$s</strong> adds"
@@ -8121,8 +8139,8 @@
 
 #: plugins/scmbzr/common/BzrPlugin.class.php:108
 #: plugins/scmcvs/common/CVSPlugin.class.php:106
-#: plugins/scmgit/common/GitPlugin.class.php:132
-#: plugins/scmgit/common/GitPlugin.class.php:139
+#: plugins/scmgit/common/GitPlugin.class.php:153
+#: plugins/scmgit/common/GitPlugin.class.php:160
 #: plugins/scmsvn/common/SVNPlugin.class.php:150
 #: plugins/scmsvn/common/SVNPlugin.class.php:157
 msgid "developername"
@@ -8163,7 +8181,7 @@
 "Mounten Sie die VOB entweder mit einem <tt>Cleartool Mount%1$s</tt> oder "
 "wählen Sie die <tt>%1$s</tt> VOB in Ihrem ClearCase Explorer."
 
-#: plugins/scmccase/common/CCasePlugin.class.php:111 www/tracker/item.php:430
+#: plugins/scmccase/common/CCasePlugin.class.php:111 www/tracker/item.php:453
 msgid "History"
 msgstr "Verlauf"
 
@@ -8274,7 +8292,7 @@
 
 #: plugins/scmcvs/common/CVSPlugin.class.php:119
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:154
-#: plugins/scmgit/common/GitPlugin.class.php:185
+#: plugins/scmgit/common/GitPlugin.class.php:206
 msgid "Download the nightly snapshot"
 msgstr "Nächtlichen git Checkout-Snapshot herunterladen"
 
@@ -8412,21 +8430,28 @@
 msgid "Clone: "
 msgstr "Telefon:"
 
-#: plugins/scmgit/common/GitPlugin.class.php:66
-#, fuzzy
+#: plugins/scmgit/common/GitPlugin.class.php:51
+msgid "gitweb"
+msgstr "gitweb"
+
+#: plugins/scmgit/common/GitPlugin.class.php:54
+msgid "Display a list of all subrepositories of all projects using the git SCM"
+msgstr ""
+"Zeige eine Liste aller Unter-Repositories aller git verwendenden Projekte an"
+
+#: plugins/scmgit/common/GitPlugin.class.php:87
 msgid ""
 "Documentation for Git is available at <a href=\"http://git-scm.com/\">http://"
 "git-scm.com/</a>."
 msgstr ""
-"<p>Dokumentation für git ist verfügbar <a href=\"http://git-scm.com/\">here</"
-"a>.</p>"
+"Dokumentation für git ist auf <a href=\"http://git-scm.com/\">http://git-scm."
+"com/</a> verfügbar."
 
-#: plugins/scmgit/common/GitPlugin.class.php:72
-#, fuzzy
+#: plugins/scmgit/common/GitPlugin.class.php:93
 msgid "Anonymous Git Access"
-msgstr "Ermögliche anonymen Zugang"
+msgstr "Ermögliche anonymen Lese-Zugang"
 
-#: plugins/scmgit/common/GitPlugin.class.php:74
+#: plugins/scmgit/common/GitPlugin.class.php:95
 #, fuzzy
 msgid ""
 "This project's Git repository can be checked out through anonymous access "
@@ -8436,12 +8461,11 @@
 "Projektes kann durch einen anonymen Zugang mit den folgenden Kommandos "
 "geklont (ausgecheckt) werden.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:87
-#, fuzzy
+#: plugins/scmgit/common/GitPlugin.class.php:108
 msgid "Developer's repository"
-msgstr "Entwickler (test)"
+msgstr "privates Entwickler-Repository"
 
-#: plugins/scmgit/common/GitPlugin.class.php:89
+#: plugins/scmgit/common/GitPlugin.class.php:110
 msgid ""
 "One of this project's members also has a personal Git repository that can be "
 "checked out anonymously."
@@ -8455,12 +8479,12 @@
 "Manche Mitglieder des Projekts haben eine persönliche Git-Ablage die Anonym "
 "durchsucht werden kann"
 
-#: plugins/scmgit/common/GitPlugin.class.php:113
-#: plugins/scmgit/common/GitPlugin.class.php:128
+#: plugins/scmgit/common/GitPlugin.class.php:134
+#: plugins/scmgit/common/GitPlugin.class.php:149
 msgid "Developer GIT Access via SSH"
 msgstr "GIT-Entwicklerzugang über SSH"
 
-#: plugins/scmgit/common/GitPlugin.class.php:115
+#: plugins/scmgit/common/GitPlugin.class.php:136
 #, fuzzy
 msgid ""
 "Only project developers can access the GIT tree via this method. SSH must be "
@@ -8472,13 +8496,13 @@
 "<i>developername</i> durch den korrekten Wert. Geben Sie nach der "
 "Aufforderung Ihr Site-Paßwort ein.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:120
-#: plugins/scmgit/common/GitPlugin.class.php:135
+#: plugins/scmgit/common/GitPlugin.class.php:141
+#: plugins/scmgit/common/GitPlugin.class.php:156
 msgid "Developer GIT Access via HTTP"
 msgstr "GIT-Entwicklerzugang über HTTP"
 
-#: plugins/scmgit/common/GitPlugin.class.php:122
-#: plugins/scmgit/common/GitPlugin.class.php:137
+#: plugins/scmgit/common/GitPlugin.class.php:143
+#: plugins/scmgit/common/GitPlugin.class.php:158
 #, fuzzy
 msgid ""
 "Only project developers can access the GIT tree via this method. Enter your "
@@ -8489,7 +8513,7 @@
 "Ersetzen Sie <i>developername</i> durch den korrekten Wert. Geben Sie nach "
 "der Aufforderung Ihr Site-Paßwort ein.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:130
+#: plugins/scmgit/common/GitPlugin.class.php:151
 #, fuzzy
 msgid ""
 "Only project developers can access the GIT tree via this method. SSH must be "
@@ -8502,11 +8526,11 @@
 "<i>developername</i> durch den korrekten Wert. Geben Sie nach der "
 "Aufforderung Ihr Site-Paßwort ein.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:150
+#: plugins/scmgit/common/GitPlugin.class.php:171
 msgid "Access to your personal repository"
 msgstr "Zugang zur persönlichen Ablage"
 
-#: plugins/scmgit/common/GitPlugin.class.php:152
+#: plugins/scmgit/common/GitPlugin.class.php:173
 #, fuzzy
 msgid ""
 "You have a personal repository for this project, accessible through SSH with "
@@ -8516,11 +8540,11 @@
 "Projektentwickler können mit dieser Methode auf den SVN - Baum zugreifen. "
 "Geben Sie nach der Aufforderung Ihr Site-Paßwort ein.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:159
+#: plugins/scmgit/common/GitPlugin.class.php:180
 msgid "Request a personal repository"
 msgstr "Anfrage für eine persönliche Ablage"
 
-#: plugins/scmgit/common/GitPlugin.class.php:161
+#: plugins/scmgit/common/GitPlugin.class.php:182
 msgid ""
 "You can clone the project repository into a personal one into which you "
 "alone will be able to write.  Other members of the project will only have "
@@ -8534,20 +8558,20 @@
 "Projekt-Ablage. Beachten sie das die Erstellung einer eigenen ablage ihre "
 "Zeit braucht (im Normalfall weniger als eine Stunde)."
 
-#: plugins/scmgit/common/GitPlugin.class.php:164
+#: plugins/scmgit/common/GitPlugin.class.php:185
 #, php-format
 msgid "<a href=\"%s\">Request a personal repository</a>."
 msgstr "<a href=\"%s\">Eigene Ablage beantragen</a>."
 
-#: plugins/scmgit/common/GitPlugin.class.php:182
+#: plugins/scmgit/common/GitPlugin.class.php:203
 msgid "Snapshots"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:209
+#: plugins/scmgit/common/GitPlugin.class.php:230
 msgid "Git Repository Browser"
 msgstr "git Repository ansehen"
 
-#: plugins/scmgit/common/GitPlugin.class.php:211
+#: plugins/scmgit/common/GitPlugin.class.php:232
 #, fuzzy
 msgid ""
 "Browsing the Git tree gives you a view into the current status of this "
@@ -8558,10 +8582,20 @@
 "Einblick in den aktuellen Status des Projekt-Codes. Sie können zudem die "
 "vollständige Historie aller Files im Repository einsehen.</p>"
 
-#: plugins/scmgit/common/GitPlugin.class.php:215
-msgid "Browse Git Repository"
-msgstr "Durchsuche git Repository"
+#: plugins/scmgit/common/GitPlugin.class.php:236
+#, fuzzy
+msgid "Browse primary Git Repository"
+msgstr "primäres git-Repository ansehen"
 
+#: plugins/scmgit/common/GitPlugin.class.php:639
+msgid "Create new subrepository with name:"
+msgstr "Neues Unter-Repository anlegen mit Namen:"
+
+#: plugins/scmgit/common/GitPlugin.class.php:679
+#, php-format
+msgid "Subrepository %s scheduled for creation."
+msgstr "Unter-Repository %s wird bald angelegt."
+
 #: plugins/scmgit/www/index.php:24
 msgid ""
 "You have already requested a personal Git repository for this project.  If "
@@ -9117,7 +9151,7 @@
 msgstr "Aktualisiert"
 
 #: www/account/index.php:101 www/account/index.php:106
-#: www/include/html.php:934
+#: www/include/html.php:940
 msgid "Account Maintenance"
 msgstr "Accountverwaltung"
 
@@ -9753,7 +9787,7 @@
 #: www/activity/index.php:244 www/pm/include/ProjectTaskHTML.class.php:154
 #: www/project/admin/project_admin_utils.php:147
 #: www/tracker/include/ArtifactHtml.class.php:47
-#: www/tracker/include/ArtifactTypeHtml.class.php:202
+#: www/tracker/include/ArtifactTypeHtml.class.php:204
 msgid "By"
 msgstr "Von"
 
@@ -9762,8 +9796,8 @@
 msgstr "Commit für das Tracker Element"
 
 #: www/activity/index.php:273 www/activity/index.php:278
-#: www/tracker/taskmgr.php:103 www/tracker/taskmgr.php:157
-#: www/tracker/tracker.php:321
+#: www/tracker/taskmgr.php:104 www/tracker/taskmgr.php:170
+#: www/tracker/tracker.php:319
 msgid "Tracker Item"
 msgstr "Tracker Element"
 
@@ -9914,7 +9948,7 @@
 msgstr "Füge diese Standardantwort zu den vorgespeicherten Antworten hinzu"
 
 #: www/admin/approve-pending.php:161 www/admin/pending-news.php:152
-#: www/project/admin/users.php:263
+#: www/project/admin/users.php:264
 msgid "Reject"
 msgstr "Ablehnen"
 
@@ -10129,7 +10163,7 @@
 msgstr "Aktuelle Version"
 
 #: www/admin/globalroleedit.php:149 www/admin/search.php:90
-#: www/admin/unsubscribe.php:113 www/project/admin/users.php:315
+#: www/admin/unsubscribe.php:113 www/project/admin/users.php:316
 #: www/search/include/renderers/PeopleHtmlSearchRenderer.class.php:44
 #: www/top/topusers.php:63
 msgid "User name"
@@ -10172,7 +10206,7 @@
 msgstr "Einstellungen"
 
 #: www/admin/globalroleedit.php:254 www/admin/globalroleedit.php:256
-#: www/project/admin/users.php:453
+#: www/project/admin/users.php:457
 #, fuzzy
 msgid "Delete role"
 msgstr "Datei löschen"
@@ -10236,11 +10270,11 @@
 "%3$s>give<%4$s> it “Project visibility” permissions."
 msgstr ""
 
-#: www/admin/groupedit.php:148 www/admin/grouplist.php:93
+#: www/admin/groupedit.php:148 www/admin/grouplist.php:36
 msgid "Public?"
 msgstr "Öffentlich?"
 
-#: www/admin/groupedit.php:169 www/admin/grouplist.php:96
+#: www/admin/groupedit.php:169 www/admin/grouplist.php:39
 #, fuzzy
 msgid "Template?"
 msgstr "Template auswählen"
@@ -10257,35 +10291,38 @@
 msgid "Resend New Project Instruction Email"
 msgstr "Sende erneut neue Email mit Projekt-Anweisungen"
 
-#: www/admin/grouplist.php:27 www/include/Layout.class.php:1351
-#: www/themes/evolvis/Theme.class.php:540
-msgid "Project List"
-msgstr "Projektliste"
-
-#: www/admin/grouplist.php:52
-#, fuzzy
-msgid "Projects that begin with"
-msgstr "Gruppen, die anfangen mit"
-
-#: www/admin/grouplist.php:89
-#, fuzzy
+#: www/admin/grouplist.php:32
 msgid "Project Name (click to edit)"
-msgstr "Gruppen-Name (anklicken zum Bearbeiten)"
+msgstr "Projektname (anklicken zum Bearbeiten)"
 
-#: www/admin/grouplist.php:90
+#: www/admin/grouplist.php:33
 msgid "Register Time"
-msgstr "Registrierungszeit"
+msgstr "Registrierungszeitpunkt"
 
-#: www/admin/grouplist.php:91 www/admin/search.php:168
-#: www/admin/useredit.php:235 www/project/admin/massadd.php:91
+#: www/admin/grouplist.php:34 www/admin/search.php:168
+#: www/admin/useredit.php:235 www/project/admin/massadd.php:111
 #: www/project/admin/massfinish.php:79
 msgid "Unix name"
-msgstr "Unix-Name"
+msgstr "Unix-Gruppenname"
 
-#: www/admin/grouplist.php:94 www/snippet/submit.php:119
-msgid "License"
+#: www/admin/grouplist.php:37
+msgid "Licence"
 msgstr "Lizenz"
 
+#: www/admin/grouplist.php:38
+msgid "Members#"
+msgstr "Zahl Mitglieder"
+
+#: www/admin/grouplist.php:201 www/include/Layout.class.php:1351
+#: www/themes/evolvis/Theme.class.php:567
+msgid "Project List"
+msgstr "Projektliste"
+
+#: www/admin/grouplist.php:206
+#, php-format
+msgid "Projects that begin with \"%s\""
+msgstr "Projekte, die mit \"%s\" anfangen"
+
 #: www/admin/index.php:46
 msgid "User Maintenance"
 msgstr "Benutzerverwaltung"
@@ -10331,7 +10368,7 @@
 msgid "Edit Role"
 msgstr "Rolle bearbeiten"
 
-#: www/admin/index.php:94 www/project/admin/users.php:478
+#: www/admin/index.php:94 www/project/admin/users.php:482
 #, fuzzy
 msgid "Create Role"
 msgstr "Erstellen"
@@ -10545,8 +10582,8 @@
 #: www/admin/massmail.php:136 www/admin/search.php:89 www/admin/search.php:167
 #: www/my/dashboard.php:61 www/pm/include/ProjectTaskHTML.class.php:114
 #: www/pm/index.php:99 www/project/admin/editimages.php:265
-#: www/tracker/admin/form-addcanned.php:41 www/tracker/browse.php:273
-#: www/tracker/browse.php:660 www/tracker/query.php:195
+#: www/tracker/admin/form-addcanned.php:41 www/tracker/browse.php:279
+#: www/tracker/browse.php:669 www/tracker/query.php:197
 msgid "ID"
 msgstr "ID"
 
@@ -10634,7 +10671,7 @@
 #: www/news/admin/index.php:133 www/pm/templates/detail_template.php:64
 #: www/search/include/renderers/ArtifactHtmlSearchRenderer.class.php:57
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:50
-#: www/tracker/browse.php:684 www/tracker/item.php:201
+#: www/tracker/browse.php:698 www/tracker/item.php:206
 msgid "Submitted by"
 msgstr "Gepostet von"
 
@@ -10648,10 +10685,10 @@
 
 #: www/admin/pending-news.php:155 www/my/diary.php:185
 #: www/news/admin/index.php:143 www/news/submit.php:150
-#: www/pm/browse_task.php:424 www/pm/include/ProjectView.class.php:326
-#: www/pm/include/ProjectView.class.php:330
-#: www/pm/include/ProjectView.class.php:334
-#: www/pm/include/ProjectView.class.php:339 www/pm/include/pm_columns.php:43
+#: www/pm/browse_task.php:425 www/pm/include/ProjectView.class.php:329
+#: www/pm/include/ProjectView.class.php:333
+#: www/pm/include/ProjectView.class.php:337
+#: www/pm/include/ProjectView.class.php:342 www/pm/include/pm_columns.php:43
 #: www/pm/templates/detail_template.php:7 www/tracker/item.php:128
 msgid "Details"
 msgstr "Details"
@@ -10715,9 +10752,9 @@
 msgstr "Plugin Name"
 
 #: www/admin/pluginman.php:119 www/people/people_utils.php:158
-#: www/people/people_utils.php:299 www/project/admin/users.php:317
-#: www/project/admin/users.php:407 www/project/admin/users.php:495
-#: www/project/admin/users.php:519
+#: www/people/people_utils.php:299 www/project/admin/users.php:318
+#: www/project/admin/users.php:411 www/project/admin/users.php:499
+#: www/project/admin/users.php:523
 msgid "Action"
 msgstr "Aktion"
 
@@ -10829,7 +10866,7 @@
 msgstr[1] "Benutzer-Suche mit Merkmalen <em>%1$s</em>: %2$s Übereinstimmungen"
 
 #: www/admin/search.php:91 www/admin/unsubscribe.php:114
-#: www/admin/useredit.php:116 www/project/admin/massadd.php:90
+#: www/admin/useredit.php:116 www/project/admin/massadd.php:112
 #: www/project/admin/massfinish.php:78
 #: www/search/include/renderers/PeopleHtmlSearchRenderer.class.php:45
 #: www/top/topusers.php:64
@@ -11461,7 +11498,7 @@
 msgid "Details:"
 msgstr "Details:"
 
-#: www/export/rssAboTask.php:161 www/news/news_utils.php:183
+#: www/export/rssAboTask.php:161 www/news/news_utils.php:181
 msgid "Comment"
 msgstr "Kommentar"
 
@@ -11690,13 +11727,13 @@
 msgid "Realname"
 msgstr "Richtiger Name"
 
-#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:82
+#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:66
 #: www/forum/new.php:72 www/forum/save.php:58
 #, fuzzy
 msgid "Forum ID"
 msgstr "Forum"
 
-#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:82
+#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:66
 #: www/forum/new.php:72 www/forum/save.php:58 www/frs/monitor.php:72
 #, fuzzy
 msgid "Project ID"
@@ -11715,7 +11752,7 @@
 
 #: www/forum/attachment.php:42 www/forum/attachment.php:126
 #: www/forum/attachment.php:154
-#: www/tracker/include/ArtifactTypeHtml.class.php:196
+#: www/tracker/include/ArtifactTypeHtml.class.php:198
 msgid "Attachments"
 msgstr "Anhänge"
 
@@ -11872,21 +11909,11 @@
 msgid "You Must Choose a Message First"
 msgstr "Sie müssen zuerst eine Nachricht auswählen"
 
-#: www/forum/monitor.php:61
-#, fuzzy, php-format
-msgid "You are about to stop monitoring the %1$s forum."
-msgstr "Sie beobachten keine Foren."
-
-#: www/forum/monitor.php:63
-#, fuzzy
-msgid "Do you really want to unsubscribe ?"
-msgstr "Fehler, konnte Benutzer nicht austragen:"
-
-#: www/forum/monitor.php:72
+#: www/forum/monitor.php:56
 msgid "Forum monitoring deactivated"
 msgstr "Beobachtung dieses Forums beendet"
 
-#: www/forum/monitor.php:78
+#: www/forum/monitor.php:62
 msgid "Forum monitoring started"
 msgstr "Beobachtung dieses Forums begonnen"
 
@@ -12513,7 +12540,7 @@
 msgid "Display all public projects as trove tree"
 msgstr "Zeige vollständige Projektliste/Bearbeite Projekte"
 
-#: www/include/Layout.class.php:1353 www/themes/evolvis/Theme.class.php:541
+#: www/include/Layout.class.php:1353 www/themes/evolvis/Theme.class.php:568
 msgid "Display an alphabetically sorted list of all public projects"
 msgstr "Zeige eine alphabetisch sortierte Liste aller Projekte an"
 
@@ -12897,9 +12924,9 @@
 msgstr "Evolvis Hilfedienst: %s"
 
 #: www/include/html.php:355 www/include/html.php:488 www/include/html.php:752
-#: www/pm/browse_task.php:550 www/pm/browse_task.php:575
-#: www/pm/browse_task.php:586 www/tracker/browse.php:843
-#: www/tracker/browse.php:851 www/tracker/browse.php:860
+#: www/pm/browse_task.php:584 www/pm/browse_task.php:609
+#: www/pm/browse_task.php:620 www/tracker/browse.php:879
+#: www/tracker/browse.php:887 www/tracker/browse.php:896
 msgid "No Change"
 msgstr "Keine Änderung"
 
@@ -12911,25 +12938,25 @@
 msgid "Highest"
 msgstr "Höchstes"
 
-#: www/include/html.php:852
+#: www/include/html.php:855
 #, fuzzy, php-format
-msgid "Project access problem: %s"
-msgstr "Projekt Ressourcennutzung"
+msgid "Could not access the project #%d"
+msgstr "Konnte kein Foren-Objekt einholen"
 
-#: www/include/html.php:854
+#: www/include/html.php:859
 #, fuzzy, php-format
-msgid "Project Problem: %s"
-msgstr "Projekt %s"
+msgid "Error accessing the project #%d: %s"
+msgstr "Fehler bei der Aktualisierung der Projekt- Informationen: %s"
 
-#: www/include/html.php:907 www/my/bookmark_add.php:28
+#: www/include/html.php:913 www/my/bookmark_add.php:28
 msgid "My Personal Page"
 msgstr "Meine persönliche Seite"
 
-#: www/include/html.php:909 www/themes/evolvis/Theme.class.php:121
+#: www/include/html.php:915 www/themes/evolvis/Theme.class.php:121
 msgid "Manage projects, assigned tasks, bugs, etc."
 msgstr "Bearbeite Projekte, stelle Aufgaben, Fehler, usw."
 
-#: www/include/html.php:917
+#: www/include/html.php:923
 #, fuzzy
 msgid ""
 "Select widgets to add to the User Summary page from a list of available "
@@ -12938,46 +12965,36 @@
 "Wähle Widgets die zur Projektaufstellung hinzugefügt werden aus einer Liste "
 "verfügbarer Widgets"
 
-#: www/include/html.php:921 www/include/project_home.php:82
+#: www/include/html.php:927 www/include/project_home.php:76
 msgid "Customise number and sizes of columns to use for widgets"
 msgstr ""
 "Benutzerdefinierte Anzahl und Größe der Spalten die in Widgets verwendet "
 "werden."
 
-#: www/include/html.php:924
+#: www/include/html.php:930
 #, fuzzy
 msgid "Trackers dashboard"
 msgstr "Tracker aktualisiert"
 
-#: www/include/html.php:926
+#: www/include/html.php:932
 msgid "Have an overview about all tracker items related to you"
 msgstr ""
 "Erhalten sie einen Überblick über alle Tracker-Objekte die für sie relevant "
 "sind"
 
-#: www/include/html.php:929
+#: www/include/html.php:935
 msgid "Diary & Notes"
 msgstr "Terminkalender & Notizen"
 
-#: www/include/html.php:931
+#: www/include/html.php:937
 msgid "-tooltip:diary-and-notes"
 msgstr ""
 
-#: www/include/html.php:936
+#: www/include/html.php:942
 msgid "Change the password, SSH keys; configure account settings"
 msgstr "Paßwort, SSH-Schlüssel ändern; Benutzerkonteneinstellungen ändern"
 
-#: www/include/html.php:940 www/register/index.php:166
-#: www/themes/evolvis/Theme.class.php:536
-msgid "Register Project"
-msgstr "Registriere Projekt"
-
-#: www/include/html.php:942 www/themes/evolvis/Theme.class.php:537
-#, fuzzy
-msgid "Register a new Project on the forge"
-msgstr "Neues Projekt registrieren"
-
-#: www/include/html.php:1281 www/notepad.php:48
+#: www/include/html.php:1277 www/notepad.php:48
 msgid "FusionForge Notepad"
 msgstr "FusionForge Notizblock"
 
@@ -12986,12 +13003,12 @@
 msgid "Project Home"
 msgstr "Projektname"
 
-#: www/include/project_home.php:74
+#: www/include/project_home.php:68
 #, fuzzy
 msgid "Customise Layout"
 msgstr "Anpassbares Feld Gelöscht"
 
-#: www/include/project_home.php:81
+#: www/include/project_home.php:75
 msgid ""
 "Select widgets to add to the Project Summary page from a list of available "
 "widgets"
@@ -12999,7 +13016,7 @@
 "Wähle Widgets die zur Projektaufstellung hinzugefügt werden aus einer Liste "
 "verfügbarer Widgets"
 
-#: www/include/tool_reports.php:65 www/pm/include/ProjectView.class.php:387
+#: www/include/tool_reports.php:65 www/pm/include/ProjectView.class.php:390
 #: www/pm/index.php:102 www/reporting/usersummary.php:54
 #: www/tracker/ind.php:63
 msgid "Open"
@@ -13423,47 +13440,59 @@
 msgstr "Mailingliste erfolgreich gelöscht"
 
 #: www/mail/admin/deletelist.php:63
-#, fuzzy
 msgid "Permanently Delete Mailing List "
-msgstr "Liste dauerhaft Löschen"
+msgstr "Dauerhaft löschen der Mailingliste "
 
-#: www/mail/admin/index.php:127
-#, fuzzy
-msgid "Password reset requested"
-msgstr "Paßwort (Wiederholung):"
+#: www/mail/admin/index.php:120
+msgid "Mailing list configuration not writable"
+msgstr "Mailinglistenkonfiguration nicht schreibbar"
 
-#: www/mail/admin/index.php:139
-#, fuzzy, php-format
+#: www/mail/admin/index.php:138
+#, php-format
 msgid ""
 "Lists are named in this manner:<br /><strong>projectname-listname@%1$s</"
 "strong>"
 msgstr ""
-"<p>Listen werden folgendermaßen benannt:<br /><strong> projectname-listname@"
-"%1$s</strong></p><p> Es dauert <span class=\"important\">6-24 Stunden</"
-"span>bis die Liste angelegt ist.</p>"
+"Listen werden im Schema <strong>Projektname-Listenname@%1$s</strong> benannt."
 
-#: www/mail/admin/index.php:143
-#, fuzzy
+#: www/mail/admin/index.php:142
 msgid ""
-"It will take <span class=\"important\">6-24 Hours</span> for your list to be "
-"created."
+"It will take <span class=\"important\">about one hour</span> for your list "
+"to be created."
 msgstr ""
-"<p>Listen werden folgendermaßen benannt:<br /><strong> projectname-listname@"
-"%1$s</strong></p><p> Es dauert <span class=\"important\">6-24 Stunden</"
-"span>bis die Liste angelegt ist.</p>"
+"Es dauert <span class=\"important\">zirka eine Stunde</span>, bis die Liste "
+"erstellt worden sein wird."
 
-#: www/mail/admin/index.php:160
+#: www/mail/admin/index.php:159
 msgid "Existing mailing lists"
 msgstr "Existierende Mailinglisten"
 
-#: www/mail/admin/index.php:264 www/mail/index.php:76
+#: www/mail/admin/index.php:256
+#, php-format
+msgid "Setting mailing list administrator password to: %s"
+msgstr "Setze das Mailinglistenadministratorenpaßwort auf: %s"
+
+#: www/mail/admin/index.php:270 www/mail/index.php:76
 msgid "Mailing list"
 msgstr "Mailingliste"
 
-#: www/mail/admin/index.php:290
-msgid "Reset admin password"
+#: www/mail/admin/index.php:297
+msgid "Reset Admin Password"
 msgstr "Admin-Paßwort zurücksetzen"
 
+#: www/mail/admin/index.php:300
+msgid "Not available"
+msgstr "nicht verfügbar"
+
+#: www/mail/admin/index.php:309
+msgid ""
+"To enable changing the ML Admin Password, ask your sysadmin to add www-data "
+"to the list group."
+msgstr ""
+"Um eine Änderung des ML Admin-Paßwortes zu ermöglichen, muß Dein "
+"Systemadministrator den Systemnutzer www-data zur Systemgruppe list "
+"hinzufügen."
+
 #: www/mail/index.php:46
 #, fuzzy
 msgid "Could Not Get MailingListFactory"
@@ -13561,19 +13590,19 @@
 msgid "Changed"
 msgstr "Ändern"
 
-#: www/my/dashboard.php:69 www/pm/browse_task.php:218
-#: www/pm/browse_task.php:412 www/pm/browse_task.php:576
+#: www/my/dashboard.php:69 www/pm/browse_task.php:219
+#: www/pm/browse_task.php:413 www/pm/browse_task.php:610
 #: www/pm/include/pm_columns.php:37 www/pm/templates/detail_template.php:20
-#: www/tracker/admin/form-customizelist.php:45 www/tracker/browse.php:274
-#: www/tracker/browse.php:678 www/tracker/browse.php:847
-#: www/tracker/item.php:153 www/tracker/query.php:196
+#: www/tracker/admin/form-customizelist.php:45 www/tracker/browse.php:280
+#: www/tracker/browse.php:691 www/tracker/browse.php:883
+#: www/tracker/item.php:156 www/tracker/query.php:198
 msgid "Priority"
 msgstr "Priorität"
 
-#: www/my/dashboard.php:71 www/pm/browse_task.php:410
-#: www/pm/browse_task.php:583 www/pm/templates/detail_template.php:30
-#: www/tracker/browse.php:681 www/tracker/browse.php:850
-#: www/tracker/item.php:167
+#: www/my/dashboard.php:71 www/pm/browse_task.php:411
+#: www/pm/browse_task.php:617 www/pm/templates/detail_template.php:30
+#: www/tracker/browse.php:694 www/tracker/browse.php:886
+#: www/tracker/item.php:172
 msgid "Assigned to"
 msgstr "Zugewiesen an"
 
@@ -13812,45 +13841,45 @@
 msgid "No News Found"
 msgstr "Keine Neuigkeiten gefunden"
 
-#: www/news/news_utils.php:41
+#: www/news/news_utils.php:42
 #, fuzzy
 msgid "View News"
 msgstr "Benutze Neuigkeiten"
 
-#: www/news/news_utils.php:43
+#: www/news/news_utils.php:44
 msgid "-tooltip:news:view"
 msgstr ""
 
-#: www/news/news_utils.php:45 www/news/news_utils.php:228
+#: www/news/news_utils.php:46 www/news/news_utils.php:226
 msgid "Submit News Item"
 msgstr "Newsbeitrag einschicken"
 
-#: www/news/news_utils.php:47
+#: www/news/news_utils.php:48
 msgid "-tooltip:news:new"
 msgstr ""
 
-#: www/news/news_utils.php:55
+#: www/news/news_utils.php:54
 msgid "-tooltip:news:admin"
 msgstr ""
 
-#: www/news/news_utils.php:121 www/news/news_utils.php:252
+#: www/news/news_utils.php:119 www/news/news_utils.php:250
 msgid "No News Items Found"
 msgstr "Keine Nachrichten gefunden"
 
-#: www/news/news_utils.php:185 www/pm/include/ProjectView.class.php:351
+#: www/news/news_utils.php:183 www/pm/include/ProjectView.class.php:354
 #: www/survey/include/SurveyHTML.class.php:652
 msgid "Comments"
 msgstr "Kommentar"
 
-#: www/news/news_utils.php:189
+#: www/news/news_utils.php:187
 msgid "Read More/Comment"
 msgstr "Weiterlesen/Kommentieren"
 
-#: www/news/news_utils.php:216
+#: www/news/news_utils.php:214
 msgid "News archive"
 msgstr "News-Archiv"
 
-#: www/news/news_utils.php:286
+#: www/news/news_utils.php:284
 msgid "Not Found"
 msgstr "Keine gefunden"
 
@@ -14048,8 +14077,8 @@
 #: www/people/createjob.php:49 www/people/editjob.php:52
 #: www/people/editjob.php:74 www/people/editjob.php:163
 #: www/people/people_utils.php:350 www/people/people_utils.php:406
-#: www/pm/browse_task.php:297 www/pm/browse_task.php:408
-#: www/pm/browse_task.php:573 www/pm/ganttpage.php:157
+#: www/pm/browse_task.php:297 www/pm/browse_task.php:409
+#: www/pm/browse_task.php:607 www/pm/ganttpage.php:157
 #: www/pm/include/pm_columns.php:35 www/pm/templates/detail_template.php:25
 #: www/pm/templates/time_tracking.php:7 www/reporting/timeadd.php:142
 #: www/snippet/package.php:163 www/snippet/submit.php:131
@@ -14370,21 +14399,21 @@
 msgstr "Alle Felder werden benötigt!"
 
 #: www/people/editprofile.php:283 www/people/skills_utils.php:50
-#: www/people/skills_utils.php:157 www/pm/browse_task.php:215
-#: www/pm/browse_task.php:402 www/pm/ganttpage.php:70
+#: www/people/skills_utils.php:157 www/pm/browse_task.php:216
+#: www/pm/browse_task.php:401 www/pm/ganttpage.php:70
 #: www/pm/include/pm_columns.php:32 www/pm/templates/detail_template.php:42
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:50
-#: www/tracker/include/ArtifactTypeHtml.class.php:145
+#: www/tracker/include/ArtifactTypeHtml.class.php:147
 msgid "Start Date"
 msgstr "Startdatum"
 
 #: www/people/editprofile.php:284 www/people/skills_utils.php:51
-#: www/people/skills_utils.php:158 www/pm/browse_task.php:216
+#: www/people/skills_utils.php:158 www/pm/browse_task.php:217
 #: www/pm/browse_task.php:404 www/pm/ganttpage.php:71
 #: www/pm/include/pm_columns.php:33 www/pm/templates/detail_template.php:47
 #: www/reporting/usersummary.php:106
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:51
-#: www/tracker/include/ArtifactTypeHtml.class.php:146
+#: www/tracker/include/ArtifactTypeHtml.class.php:148
 msgid "End Date"
 msgstr "Enddatum"
 
@@ -14564,8 +14593,8 @@
 
 #: www/people/viewjob.php:80 www/pm/include/ProjectTaskHTML.class.php:118
 #: www/project/report/index.php:137
-#: www/tracker/admin/form-customizelist.php:43 www/tracker/browse.php:276
-#: www/tracker/browse.php:669 www/tracker/query.php:198
+#: www/tracker/admin/form-customizelist.php:43 www/tracker/browse.php:282
+#: www/tracker/browse.php:682 www/tracker/query.php:200
 msgid "Open Date"
 msgstr "Eröffnet am"
 
@@ -14650,7 +14679,6 @@
 msgstr "Keine Kategorien definiert"
 
 #: www/pm/admin/index.php:215 www/pm/admin/index.php:259
-#: www/pm/browse_task.php:432 www/pm/include/pm_columns.php:47
 #: www/reporting/timecategory.php:72 www/reporting/timecategory.php:91
 msgid "Category Name"
 msgstr "Name der Kategorie"
@@ -14740,7 +14768,7 @@
 "unwiderbringlich zu löschen!"
 
 #: www/pm/admin/index.php:403 www/pm/index.php:47 www/pm/task.php:95
-#: www/tracker/browse.php:92 www/tracker/taskmgr.php:138
+#: www/tracker/browse.php:96 www/tracker/taskmgr.php:151
 msgid "Could Not Get Factory"
 msgstr "Konnte nicht auf Factory zurgreifen"
 
@@ -14780,43 +14808,43 @@
 msgid "Edit/Update Subproject"
 msgstr "Ändere/Aktualisiere Projekt"
 
-#: www/pm/browse_task.php:135
+#: www/pm/browse_task.php:136
 msgid "Browse tasks"
 msgstr "Aufgaben durchsuchen"
 
-#: www/pm/browse_task.php:194 www/pm/browse_task.php:205
+#: www/pm/browse_task.php:195 www/pm/browse_task.php:206
 #: www/pm/browse_task.php:296 www/pm/ganttpage.php:56 www/pm/ganttpage.php:58
 #: www/pm/ganttpage.php:60 www/pm/ganttpage.php:62
-#: www/reporting/usersummary.php:53 www/tracker/browse.php:261
-#: www/tracker/browse.php:340 www/tracker/browse.php:347
-#: www/tracker/query.php:344
+#: www/reporting/usersummary.php:53 www/tracker/browse.php:267
+#: www/tracker/browse.php:346 www/tracker/browse.php:353
+#: www/tracker/query.php:346
 msgid "Any"
 msgstr "Alle"
 
-#: www/pm/browse_task.php:196 www/pm/browse_task.php:547
-#: www/pm/ganttpage.php:58 www/tracker/browse.php:266
+#: www/pm/browse_task.php:197 www/pm/browse_task.php:581
+#: www/pm/ganttpage.php:58 www/tracker/browse.php:272
 msgid "Unassigned"
 msgstr "Nicht zugeordnet"
 
-#: www/pm/browse_task.php:213 www/pm/browse_task.php:398
+#: www/pm/browse_task.php:214 www/pm/browse_task.php:397
 #: www/pm/ganttpage.php:68 www/pm/include/ProjectTaskHTML.class.php:83
 msgid "Task Id"
 msgstr "Aufgaben-ID"
 
-#: www/pm/browse_task.php:214 www/pm/browse_task.php:400
+#: www/pm/browse_task.php:215 www/pm/browse_task.php:399
 #: www/pm/ganttpage.php:69 www/pm/include/ProjectTaskHTML.class.php:84
 #: www/pm/templates/detail_template.php:99
-#: www/tracker/include/ArtifactTypeHtml.class.php:144
+#: www/tracker/include/ArtifactTypeHtml.class.php:146
 msgid "Task Summary"
 msgstr "Zusammenfassung der Aufgabe"
 
-#: www/pm/browse_task.php:217 www/pm/browse_task.php:406
+#: www/pm/browse_task.php:218 www/pm/browse_task.php:407
 #: www/pm/ganttpage.php:72 www/pm/include/pm_columns.php:34
 #: www/pm/templates/detail_template.php:10
 msgid "Percent Complete"
 msgstr "Prozent fertig"
 
-#: www/pm/browse_task.php:234
+#: www/pm/browse_task.php:235
 msgid "Detailed"
 msgstr "detailliert"
 
@@ -14826,8 +14854,8 @@
 msgstr "Unterprojekt"
 
 #: www/pm/browse_task.php:295 www/pm/ganttpage.php:155
-#: www/tracker/browse.php:279 www/tracker/browse.php:516
-#: www/tracker/query.php:201 www/tracker/query.php:341
+#: www/tracker/browse.php:285 www/tracker/browse.php:524
+#: www/tracker/query.php:203 www/tracker/query.php:343
 msgid "Assignee"
 msgstr "Bearbeiter"
 
@@ -14856,72 +14884,72 @@
 msgid "Add tasks using the link above"
 msgstr "Fügen Sie Aufgaben hinzu, indem Sie auf den obigen Link klicken"
 
-#: www/pm/browse_task.php:351 www/tracker/browse.php:549
+#: www/pm/browse_task.php:351 www/tracker/browse.php:557
 #, php-format
 msgid "Displaying %d results."
 msgstr "Stelle %d Ergebnisse dar."
 
-#: www/pm/browse_task.php:416
+#: www/pm/browse_task.php:417
 msgid "Project Task Id"
 msgstr ""
 
-#: www/pm/browse_task.php:418 www/pm/include/pm_columns.php:40
-#: www/snippet/browse.php:83 www/tracker/query.php:339
+#: www/pm/browse_task.php:419 www/pm/include/pm_columns.php:40
+#: www/snippet/browse.php:83 www/tracker/query.php:341
 msgid "Creator"
 msgstr "Ersteller"
 
-#: www/pm/browse_task.php:420 www/pm/include/pm_columns.php:41
+#: www/pm/browse_task.php:421 www/pm/include/pm_columns.php:41
 #, fuzzy
 msgid "Duration"
 msgstr "Operationen"
 
-#: www/pm/browse_task.php:422 www/pm/include/pm_columns.php:42
+#: www/pm/browse_task.php:423 www/pm/include/pm_columns.php:42
 #, fuzzy
 msgid "Parent Id"
 msgstr "Für Projekt"
 
-#: www/pm/browse_task.php:426 www/pm/include/pm_columns.php:44
+#: www/pm/browse_task.php:427 www/pm/include/pm_columns.php:44
 #: www/pm/templates/detail_template.php:55
 msgid "Estimated Hours"
 msgstr "Geschätzte Stunden"
 
-#: www/pm/browse_task.php:428 www/pm/include/pm_columns.php:45
+#: www/pm/browse_task.php:429 www/pm/include/pm_columns.php:45
 #, fuzzy
 msgid "Status Id"
 msgstr "Status"
 
-#: www/pm/browse_task.php:430 www/pm/include/pm_columns.php:46
+#: www/pm/browse_task.php:431 www/pm/include/pm_columns.php:46
 #, fuzzy
 msgid "Category Id"
 msgstr "Kategorie"
 
-#: www/pm/browse_task.php:434 www/pm/include/pm_columns.php:48
+#: www/pm/browse_task.php:433 www/pm/include/pm_columns.php:47
 #, fuzzy
 msgid "Last Modified Date"
 msgstr "Zuletzt veränderter Datumsbereich"
 
-#: www/pm/browse_task.php:436 www/pm/include/pm_columns.php:49
+#: www/pm/browse_task.php:435 www/pm/include/pm_columns.php:48
 msgid "External Id"
 msgstr "Externe ID"
 
-#: www/pm/browse_task.php:438 www/pm/include/pm_columns.php:50
+#: www/pm/browse_task.php:437 www/pm/include/pm_columns.php:49
 #, fuzzy
 msgid "Sub-Project"
 msgstr "Unterprojekt"
 
-#: www/pm/browse_task.php:531 www/tracker/browse.php:804
+#: www/pm/browse_task.php:565 www/tracker/browse.php:840
 msgid "Mass Update"
 msgstr "Massen-Update"
 
-#: www/pm/browse_task.php:566
+#: www/pm/browse_task.php:600
 msgid "Check all"
 msgstr "Alle auswählen"
 
-#: www/pm/browse_task.php:568
+#: www/pm/browse_task.php:602
 msgid "Clear all"
 msgstr "Alle abwählen"
 
-#: www/pm/browse_task.php:570 www/tracker/browse.php:826
+#: www/pm/browse_task.php:604 www/tracker/browse.php:862
 msgid ""
 "<strong>Admin:</strong> If you wish to apply changes to all items selected "
 "above, use these controls to change their properties and click once on "
@@ -14931,15 +14959,15 @@
 "Änderungen durchführen möchten, nutzen Sie diese Bedienungselemente, um ihre "
 "Eigenschaften zu ändern, und klicken Sie anschließend auf \"Massen-Update\"."
 
-#: www/pm/browse_task.php:589 www/pm/templates/detail_template.php:79
+#: www/pm/browse_task.php:623 www/pm/templates/detail_template.php:79
 msgid "Subproject"
 msgstr "Unterprojekt"
 
-#: www/pm/browse_task.php:592 www/tracker/browse.php:867
+#: www/pm/browse_task.php:626 www/tracker/browse.php:903
 msgid "Mass update"
 msgstr "Massen-Update"
 
-#: www/pm/browse_task.php:640
+#: www/pm/browse_task.php:674
 msgid "* Denotes overdue tasks"
 msgstr "* markiert überfällige Aufgaben"
 
@@ -15122,7 +15150,7 @@
 msgid "Yes, I want to delete this task"
 msgstr "Ja, ich möchte diese Aufgabe löschen"
 
-#: www/pm/downloadcsv.php:96 www/pm/gantt.php:31 www/tracker/taskmgr.php:62
+#: www/pm/downloadcsv.php:103 www/pm/gantt.php:31 www/tracker/taskmgr.php:62
 msgid "Could Not Get ProjectTaskFactory"
 msgstr "Konnte nicht auf ProjektTaskFaktory zugreifen"
 
@@ -15239,30 +15267,30 @@
 msgid "No Changes Have Been Made"
 msgstr "Es wurden keine Änderungen gemacht"
 
-#: www/pm/include/ProjectView.class.php:359
+#: www/pm/include/ProjectView.class.php:362
 msgid "No comments have been written."
 msgstr "Es wurden bislang keine Kommentare verfaßt."
 
-#: www/pm/include/ProjectView.class.php:475
+#: www/pm/include/ProjectView.class.php:478
 msgid "View Calendar"
 msgstr "Zeige Kalender"
 
-#: www/pm/include/ProjectView.class.php:540
+#: www/pm/include/ProjectView.class.php:543
 #: www/tracker/admin/form-addextrafield.php:60
 msgid "Copy"
 msgstr "Kopieren"
 
-#: www/pm/include/ProjectView.class.php:553
-#: www/pm/include/ProjectView.class.php:555
+#: www/pm/include/ProjectView.class.php:556
+#: www/pm/include/ProjectView.class.php:558
 msgid "Subscribe to task"
 msgstr "Task abonnieren"
 
-#: www/pm/include/ProjectView.class.php:565
-#: www/pm/include/ProjectView.class.php:567
+#: www/pm/include/ProjectView.class.php:568
+#: www/pm/include/ProjectView.class.php:570
 msgid "Delete this task"
 msgstr "Diese Aufgabe löschen"
 
-#: www/pm/include/ProjectView.class.php:594
+#: www/pm/include/ProjectView.class.php:597
 msgid "Add category"
 msgstr "Kategorie hinzufügen"
 
@@ -15271,11 +15299,11 @@
 msgid "Assigned To"
 msgstr "Zugewiesen an"
 
-#: www/pm/include/pm_columns.php:84
+#: www/pm/include/pm_columns.php:83
 msgid "Select PM Display Columns"
 msgstr "Task-Anzeigespalten auswählen"
 
-#: www/pm/include/pm_columns.php:90
+#: www/pm/include/pm_columns.php:89
 msgid "Select Columns"
 msgstr "Spalten auswählen"
 
@@ -15307,7 +15335,7 @@
 "Wählen Sie ein Unterprojekt aus und Sie können Aufgaben dafür durchsuchen, "
 "ändern und hinzufügen."
 
-#: www/pm/pm_task.php:84 www/pm/templates/time_tracking.php:1
+#: www/pm/pm_task.php:86 www/pm/templates/time_tracking.php:1
 #: www/reporting/timeadd.php:102
 msgid "Time tracking"
 msgstr "Zeitverfolgung"
@@ -15340,31 +15368,31 @@
 msgid "Number of tasks still not completed"
 msgstr "Anzahl der unfertigen Aufgaben"
 
-#: www/pm/reporting/index.php:210
+#: www/pm/reporting/index.php:209
 msgid "Tasks By Category"
 msgstr "Aufgaben nach Kategorie"
 
-#: www/pm/reporting/index.php:211
+#: www/pm/reporting/index.php:210
 msgid "Open Tasks By Category"
 msgstr "Öffne Aufgaben nach Kategorie"
 
-#: www/pm/reporting/index.php:212
+#: www/pm/reporting/index.php:211
 msgid "All Tasks By Category"
 msgstr "Alle Aufgaben nach Kategorie"
 
-#: www/pm/reporting/index.php:240
+#: www/pm/reporting/index.php:239
 msgid "Tasks By Assignee"
 msgstr "Aufgaben nach Techniker"
 
-#: www/pm/reporting/index.php:241
+#: www/pm/reporting/index.php:240
 msgid "Open Tasks By Assignee"
 msgstr "Öffne Aufgaben nach Techniker"
 
-#: www/pm/reporting/index.php:242
+#: www/pm/reporting/index.php:241
 msgid "All Tasks By Assignee"
 msgstr "Alle Aufgaben nach Techniker"
 
-#: www/pm/reporting/index.php:243
+#: www/pm/reporting/index.php:242
 msgid ""
 "<p>Note that same task can be assigned to several technicians. Such task "
 "will be counted for each of them.</p>"
@@ -15392,11 +15420,11 @@
 msgid "Abort"
 msgstr "Abbrechen"
 
-#: www/pm/t_lookup.php:35
+#: www/pm/t_lookup.php:43
 msgid "Task ID"
 msgstr "Aufgaben-ID"
 
-#: www/pm/t_lookup.php:41
+#: www/pm/t_lookup.php:49
 msgid "No Task with ID: "
 msgstr "Keine Aufgabe mit ID: "
 
@@ -15456,7 +15484,7 @@
 msgid "Task Successfully Deleted"
 msgstr "Aufgabe erfolgreich gelöscht"
 
-#: www/pm/templates/detail_template.php:69 www/tracker/item.php:227
+#: www/pm/templates/detail_template.php:69 www/tracker/item.php:232
 msgid "Permalink"
 msgstr "Permalink"
 
@@ -15608,7 +15636,7 @@
 "FEHLER - Datei muß größer als 20 bytes und kleiner als 256000 Bytes sein"
 
 #: www/project/admin/editimages.php:59 www/tracker/tracker.php:151
-#: www/tracker/tracker.php:400
+#: www/tracker/tracker.php:398
 #, fuzzy
 msgid "Invalid filename"
 msgstr "Ungültiger Dateiname."
@@ -15777,7 +15805,7 @@
 "Kurzbeschreibung(255 Zeichen maximal, HTML wird von dieser Beschreibung "
 "ignoriert)"
 
-#: www/project/admin/index.php:151
+#: www/project/admin/index.php:150
 #, fuzzy
 msgid "Long Project Description"
 msgstr "Lange Projektbeschreibung"
@@ -15828,11 +15856,11 @@
 msgid "(send on all updates)"
 msgstr "(Bei allen Aktualisierungen senden)"
 
-#: www/project/admin/massadd.php:67 www/project/admin/users.php:298
+#: www/project/admin/massadd.php:68 www/project/admin/users.php:299
 msgid "Add Users From List"
 msgstr "Benutzer von der Liste hinzufügen"
 
-#: www/project/admin/massadd.php:71
+#: www/project/admin/massadd.php:72
 #, fuzzy
 msgid ""
 "Check the box next to the name of the user(s) you want to add. Your choices "
@@ -15844,7 +15872,7 @@
 "untenstehenden Buchstaben klicken. Wenn Sie fertig sind, klicken Sie auf "
 "\"Finish\" um den hinzuzufügenden Nutzern ihre Rollen zuzuweisen."
 
-#: www/project/admin/massadd.php:77
+#: www/project/admin/massadd.php:78
 #, fuzzy
 msgid ""
 "Choose the <strong>First Letter</strong> of the name of the person you wish "
@@ -15853,16 +15881,21 @@
 "<p>Wählen Sie den <strong>ersten Buchstaben</strong> des Namens der Person, "
 "die Sie hinzufügen wollen.</p>"
 
-#: www/project/admin/massadd.php:87 www/project/admin/users.php:104
+#: www/project/admin/massadd.php:88 www/project/admin/users.php:104
 #, fuzzy
 msgid "No Matching Users Found"
 msgstr "<p>Keine übereinstimmenden Benutzer gefunden</p>"
 
-#: www/project/admin/massadd.php:92
+#: www/project/admin/massadd.php:110
 msgid "Add user"
 msgstr "Nutzer hinzufügen"
 
-#: www/project/admin/massadd.php:116
+#: www/project/admin/massadd.php:124
+#, php-format
+msgid "%2$s, %1$s"
+msgstr "%1$s %2$s"
+
+#: www/project/admin/massadd.php:131
 msgid "Finish"
 msgstr "Fertig"
 
@@ -16024,7 +16057,7 @@
 msgid "Could Not Get RoleObserver"
 msgstr "Konnte die Rolle nicht bekommen"
 
-#: www/project/admin/roleedit.php:141 www/project/admin/users.php:486
+#: www/project/admin/roleedit.php:141 www/project/admin/users.php:490
 msgid "Edit Observer"
 msgstr "Bearbeite Beobachter"
 
@@ -16173,14 +16206,12 @@
 msgstr "ablehnen ausgewählt"
 
 #: www/project/admin/users.php:114 www/project/admin/users.php:174
-#, fuzzy
-msgid "Member Added Successfully"
-msgstr "Benutzer erfolgreich hinzugefügt"
+msgid "Project Role assigned to Member successfully"
+msgstr "Projektrolle erfolgreich dem Benutzer zugewiesen"
 
 #: www/project/admin/users.php:138
-#, fuzzy
-msgid "Member Removed Successfully"
-msgstr "Benutzer erfolgreich gelöscht"
+msgid "Project Role removed from Member successfully"
+msgstr "Projektrolle erfolgreich vom Benutzer entfernt"
 
 #: www/project/admin/users.php:151
 #, fuzzy
@@ -16212,54 +16243,54 @@
 msgid "Pending Membership Requests"
 msgstr "Anstehende Anfragen"
 
-#: www/project/admin/users.php:261
+#: www/project/admin/users.php:262
 msgid "Accept"
 msgstr "Annehmen"
 
-#: www/project/admin/users.php:272 www/project/admin/users.php:274
-#: www/project/admin/users.php:293
+#: www/project/admin/users.php:273 www/project/admin/users.php:275
+#: www/project/admin/users.php:294
 #, fuzzy
 msgid "Add Member"
 msgstr "Mitglieder"
 
-#: www/project/admin/users.php:304
+#: www/project/admin/users.php:305
 #, fuzzy
 msgid "Current Project Members"
 msgstr "[Zeige/Bearbeite Projekt-Mitglieder]"
 
-#: www/project/admin/users.php:373
+#: www/project/admin/users.php:377
 msgid "Grant extra role"
 msgstr "weitere Rolle erteilen"
 
-#: www/project/admin/users.php:393 www/tracker/admin/form-workflow.php:119
+#: www/project/admin/users.php:397
 msgid "Edit Roles"
 msgstr "Rollen bearbeiten"
 
-#: www/project/admin/users.php:405 www/project/admin/users.php:494
-#: www/project/admin/users.php:518
+#: www/project/admin/users.php:409 www/project/admin/users.php:498
+#: www/project/admin/users.php:522
 #, fuzzy
 msgid "Role name"
 msgstr "Rollenname"
 
-#: www/project/admin/users.php:435
+#: www/project/admin/users.php:439
 #, fuzzy
 msgid "Edit Permissions"
 msgstr "Berechtigungen aktualisiert"
 
-#: www/project/admin/users.php:492
+#: www/project/admin/users.php:496
 msgid "Currently used external roles"
 msgstr "zur Zeit benutzte externe Rolle"
 
-#: www/project/admin/users.php:507
+#: www/project/admin/users.php:511
 #, fuzzy
 msgid "Unlink Role"
 msgstr "Rolle bearbeiten"
 
-#: www/project/admin/users.php:516
+#: www/project/admin/users.php:520
 msgid "Available external roles"
 msgstr "Verfügbare externe Rollen"
 
-#: www/project/admin/users.php:537
+#: www/project/admin/users.php:541
 #, fuzzy
 msgid "Link external role"
 msgstr "Interner Fehler"
@@ -16374,7 +16405,7 @@
 msgstr "Kontakt"
 
 #: www/project/report/index.php:237 www/reporting/usersummary.php:102
-#: www/tracker/taskmgr.php:108
+#: www/tracker/taskmgr.php:109
 msgid "Task"
 msgstr "Aufgabe"
 
@@ -16508,6 +16539,10 @@
 "Stunden werden Sie eine Benachrichtigung mit der Entscheidung und weiteren "
 "Instruktionen erhalten.</p><p>Danke, daß Sie %1$s gewählt haben."
 
+#: www/register/index.php:166 www/themes/evolvis/Theme.class.php:562
+msgid "Register Project"
+msgstr "Registriere Projekt"
+
 #: www/register/index.php:170
 msgid ""
 "To apply for project registration, you should fill in basic information "
@@ -16626,16 +16661,16 @@
 "auswählen, aber nur eines (oder gar keins). Bitte wählen Sie das SCM System, "
 "das sie verwenden möchten.</p>"
 
-#: www/register/index.php:222
+#: www/register/index.php:226
 msgid "No SCM"
 msgstr "Kein SCM"
 
-#: www/register/index.php:231
+#: www/register/index.php:268
 #, fuzzy
 msgid "Project template"
 msgstr "Projektbaum"
 
-#: www/register/index.php:238
+#: www/register/index.php:275
 #, php-format
 msgid ""
 "You can either start from an empty project, or pick a project that will act "
@@ -16648,12 +16683,12 @@
 "der Vorlage sofort übernehmen (Die selben Aufgaben und Genehmigungen, die "
 "selben Tracker, den selben Satz von freigeschalteten Plugins usw.)."
 
-#: www/register/index.php:240 www/register/index.php:260
+#: www/register/index.php:277 www/register/index.php:301
 #, fuzzy
 msgid "Start from empty project"
 msgstr "Das ganze Projekt durchsuchen"
 
-#: www/register/index.php:242
+#: www/register/index.php:279
 #, php-format
 msgid ""
 "Please pick a project that will act as a template for yours.  Your project "
@@ -16665,7 +16700,7 @@
 "Genehmigungen, die selben Tracker, den selben Satz von freigeschalteten "
 "Plugins usw.)."
 
-#: www/register/index.php:254
+#: www/register/index.php:295
 #, php-format
 msgid ""
 "You can either start from an empty project, or use the %s project as a "
@@ -16678,7 +16713,7 @@
 "sofort übernehmen (Die selben Aufgaben und Genehmigungen, die selben "
 "Tracker, den selben Satz von freigeschalteten Plugins usw.)."
 
-#: www/register/index.php:266
+#: www/register/index.php:311
 #, php-format
 msgid ""
 "Your project will initially have the same configuration as the %s project "
@@ -16689,7 +16724,7 @@
 "(Die selben Aufgaben und Genehmigungen, die selben Tracker, den selben Satz "
 "von freigeschalteten Plugins usw.)."
 
-#: www/register/index.php:273
+#: www/register/index.php:318
 #, php-format
 msgid "Since no template project is available, your project will start empty."
 msgstr "Wenn keine Projektvorlage vorhanden ist, wird ihr Projekt leer starten"
@@ -16923,8 +16958,8 @@
 "Wählen Sie ein Projekt/Unterprojekt im Aufgabenmanager. Sie müssen dann eine "
 "Aufgabe und Kategorie wählen, in der Sie Ihre Zeit erfassen."
 
-#: www/reporting/timeadd.php:197 www/tracker/taskmgr.php:104
-#: www/tracker/taskmgr.php:158
+#: www/reporting/timeadd.php:197 www/tracker/taskmgr.php:105
+#: www/tracker/taskmgr.php:171
 #, fuzzy
 msgid "Tasks Project"
 msgstr "Task Manager Projekt"
@@ -17041,24 +17076,48 @@
 #: www/scm/admin/index.php:104
 msgid "Error - Site has SCM but no plugins registered"
 msgstr ""
-"Fehler - Die Site verfügt über SCM hat aber keine registrierten Plugins."
+"Fehler - Die Site verfügt über SCM, hat aber keine registrierten Plugins."
 
-#: www/scm/include/scm_utils.php:49
-#, fuzzy
-msgid "View Source Code"
-msgstr "Source-Code benutzen"
+#: www/scm/browser.php:38
+msgid "Could not get SCM Plugin instance"
+msgstr "Konnte das SCM-Plugin nicht instanziïeren"
 
-#: www/scm/include/scm_utils.php:59
-msgid "-tooltip:scm:view"
+#: www/scm/browser.php:40
+msgid ""
+"SCM Browser not displayable; possibly because it’s not anonymously "
+"accessible?"
 msgstr ""
+"SCM-Browser nicht darstellbar; vielleicht ist dieses Projekt versteckt?"
 
-#: www/scm/include/scm_utils.php:60
+#: www/scm/include/scm_utils.php:43
+msgid "More than one SCM plugin in use."
+msgstr "Mehr als ein SCM-Plugin in Benutzung."
+
+#: www/scm/include/scm_utils.php:72
+msgid "Access Source Code"
+msgstr "Quellcode zugreifen"
+
+#: www/scm/include/scm_utils.php:74
+msgid "-tooltip:scm:view"
+msgstr "Zeige Zugriffsinformationen (Checkout-URLs) an"
+
+#: www/scm/include/scm_utils.php:78
+msgid "Browse Source Code"
+msgstr "Quellcode ansehen"
+
+#: www/scm/include/scm_utils.php:81
+msgid "Look at the source code repository using your webbrowser!"
+msgstr "Sieh Dir den Quellkode in Deinem Webbrowser an!"
+
+#: www/scm/include/scm_utils.php:88
 msgid "-tooltip:scm:reporting"
 msgstr ""
 
-#: www/scm/include/scm_utils.php:61
+#: www/scm/include/scm_utils.php:92
 msgid "-tooltip:scm:admin"
 msgstr ""
+"Stelle ein, welches SCM-Plugin Du verwenden möchtest, ob anonymer Zugriff "
+"(und der SCM-Browser) möglich ist, und lege Unterrepositories an"
 
 #: www/scm/include/viewvc_utils.php:115
 msgid ""
@@ -17231,7 +17290,7 @@
 #: www/search/include/renderers/HtmlSearchRenderer.class.php:100
 #, php-format
 msgid "Search results for <em>%1$s</em>"
-msgstr "Suchergebnisse für<em>%1$s</em>"
+msgstr "Suchergebnisse für <em>%1$s</em>"
 
 #: www/search/include/renderers/HtmlSearchRenderer.class.php:102
 #, php-format
@@ -17248,13 +17307,8 @@
 msgid "Project Search"
 msgstr "Projektübersicht"
 
-#: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:48
-#: www/tracker/admin/form-workflow.php:61
-msgid "From"
-msgstr "Von"
-
 #: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:49
-#: www/tracker/admin/form-workflow.php:62
+#: www/tracker/admin/form-workflow.php:81
 msgid "To"
 msgstr "An"
 
@@ -17893,11 +17947,15 @@
 msgid "Script Type"
 msgstr "Skripttyp"
 
+#: www/snippet/submit.php:119
+msgid "License"
+msgstr "Lizenz"
+
 #: www/snippet/submit.php:142
 msgid "Paste the Code Here"
 msgstr "Fügen Sie den Code hier ein"
 
-#: www/soap/index.php:164
+#: www/soap/index.php:163
 msgid "en_US"
 msgstr "de_DE"
 
@@ -18690,6 +18748,10 @@
 msgid "Toggle"
 msgstr "Ein-/Ausklappen"
 
+#: www/themes/evolvis/Theme.class.php:563
+msgid "Register a new Project on the forge"
+msgstr "Ein neues Projekt auf der Forge registrieren"
+
 #: www/top/index.php:29
 #, fuzzy, php-format
 msgid "Top %1$s Projects"
@@ -18862,11 +18924,13 @@
 msgstr "Ein neues anpassbares Feld hinzufügen"
 
 #: www/tracker/admin/form-addextrafield.php:115
+#: www/tracker/admin/form-updateextrafield.php:48
 #, fuzzy
 msgid "Custom Field name (human-readable)"
 msgstr "Extrafeld aktualisiert"
 
 #: www/tracker/admin/form-addextrafield.php:119
+#: www/tracker/admin/form-updateextrafield.php:72
 #, fuzzy
 msgid "Field alias (internal name)"
 msgstr "Seiten-Mailinglisten Verwaltung"
@@ -18881,21 +18945,20 @@
 msgstr "Auswahlbox Techniker/ Bearbeiter"
 
 #: www/tracker/admin/form-addextrafield.php:135
-#, fuzzy
 msgid "Relation between artifacts"
-msgstr "Artefakt löschen"
+msgstr "Relation zwischen Artefakten"
 
 #: www/tracker/admin/form-addextrafield.php:137
 msgid ""
-"Text Fields and Text Areas need to have Size/Maxlength and Rows/Cols "
-"defined, respectively."
+"Text Fields, Text Areas and Relations between artifacts need to have Size/"
+"Maxlength and Rows/Cols defined, respectively."
 msgstr ""
-"Textfelder und Textbereiche müssen jeweils Größe/Maximale Länge und Reihen/"
-"Spalten definiert haben."
+"Textfelder, Textbereiche und Artefaktrelationen müssen jeweils maximale "
+"Länge/Größe und Zeilen/Spalten definiert haben."
 
 #: www/tracker/admin/form-addextrafield.php:138
 msgid "Text Field Size/Text Area Rows"
-msgstr "Textfeldgröße /Textbereich Spalten"
+msgstr "Textfeldgröße /Textbereich Zeilen"
 
 #: www/tracker/admin/form-addextrafield.php:140
 msgid "Text Field Maxlength/Text Area Columns"
@@ -18929,8 +18992,8 @@
 #: www/tracker/admin/updates.php:39 www/tracker/admin/updates.php:58
 #: www/tracker/admin/updates.php:87 www/tracker/admin/updates.php:181
 #: www/tracker/admin/updates.php:223 www/tracker/admin/updates.php:246
-#: www/tracker/admin/updates.php:374 www/tracker/admin/updates.php:394
-#: www/tracker/admin/updates.php:417 www/tracker/admin/updates.php:469
+#: www/tracker/admin/updates.php:381 www/tracker/admin/updates.php:401
+#: www/tracker/admin/updates.php:424 www/tracker/admin/updates.php:476
 #, fuzzy
 msgid "Unable to create ArtifactExtraField Object"
 msgstr "Außerstande ein ArtifactExtraField Objekt anzulegen"
@@ -18965,32 +19028,27 @@
 msgid "Add New Element"
 msgstr "Neues Element hinzufügen"
 
-#: www/tracker/admin/form-clonetracker.php:32
-#, fuzzy
-msgid "Unable to Create Template Group Object"
-msgstr "Außerstande ein ArtifactCanned Objekt anzulegen"
+#: www/tracker/admin/form-clonetracker.php:67
+msgid "Error looking up template projects"
+msgstr "Kann Vorlagenprojekte nicht finden"
 
-#: www/tracker/admin/form-clonetracker.php:48
-#: www/tracker/include/ArtifactTypeHtml.class.php:835
-msgid "Clone Tracker"
-msgstr "Tracker-Vorlage klonen"
+#: www/tracker/admin/form-clonetracker.php:68
+msgid "No template project found"
+msgstr "Keine Vorlagenprojekte gefunden"
 
-#: www/tracker/admin/form-clonetracker.php:51
-#, fuzzy
-msgid ""
-"The site administrator must first set up template trackers in the template "
-"projet with default values and set permissions propertly so you can access "
-"them."
-msgstr ""
-"Wählen Sie den Template Tracker zum Klonen. Der Site Administrator muß "
-"Tracker mit Standardwerten aufsetzen und Erlaubnisse korrekt einrichten "
-"damit Sie Zugang erhalten."
+#: www/tracker/admin/form-clonetracker.php:72
+msgid "Some errors occured during template project lookup"
+msgstr "Beim Finden der Vorlagenprojekte tauchten Fehler auf"
 
-#: www/tracker/admin/form-clonetracker.php:54
+#: www/tracker/admin/form-clonetracker.php:75 www/tracker/admin/tracker.php:61
+msgid "Apply Template Tracker"
+msgstr "Vorlagenprojekt-Tracker auf diesen Tracker anwenden (klonen)"
+
+#: www/tracker/admin/form-clonetracker.php:77
 msgid "Choose the template tracker to clone."
-msgstr "Template-Tracker zum klonen auswählen"
+msgstr "Template-Tracker zum Klonen auswählen"
 
-#: www/tracker/admin/form-clonetracker.php:57
+#: www/tracker/admin/form-clonetracker.php:84
 msgid ""
 "WARNING!!! Cloning this tracker will duplicate all the fields and all the "
 "elements from those fields into this tracker. There is nothing to prevent "
@@ -19018,17 +19076,17 @@
 msgid "Submitted By"
 msgstr "Gepostet von"
 
-#: www/tracker/admin/form-customizelist.php:48 www/tracker/browse.php:277
-#: www/tracker/browse.php:672 www/tracker/query.php:199
+#: www/tracker/admin/form-customizelist.php:48 www/tracker/browse.php:283
+#: www/tracker/browse.php:685 www/tracker/query.php:201
 msgid "Close Date"
 msgstr "Schließdatum"
 
-#: www/tracker/admin/form-customizelist.php:49 www/tracker/item.php:312
-#: www/tracker/item.php:323 www/tracker/query.php:383
+#: www/tracker/admin/form-customizelist.php:49 www/tracker/item.php:335
+#: www/tracker/item.php:346 www/tracker/query.php:385
 msgid "Detailed description"
 msgstr "Genaue Beschreibung"
 
-#: www/tracker/admin/form-customizelist.php:50 www/tracker/browse.php:687
+#: www/tracker/admin/form-customizelist.php:50 www/tracker/browse.php:702
 #, fuzzy
 msgid "Related tasks"
 msgstr "Verwandte Aufgaben"
@@ -19060,7 +19118,7 @@
 
 #: www/tracker/admin/form-deleteextrafieldelement.php:42
 #: www/tracker/admin/form-updateextrafieldelement.php:40
-#: www/tracker/admin/updates.php:252 www/tracker/admin/updates.php:475
+#: www/tracker/admin/updates.php:252 www/tracker/admin/updates.php:482
 msgid "Unable to create ArtifactExtraFieldElement Object"
 msgstr "Außerstande ein ArtifactExtraFieldElement Objekt anzulegen"
 
@@ -19087,21 +19145,21 @@
 "Sie sind dabei diesen Tracker und dessen gesamten Inhalt dauerhaft und "
 "unwiderbringlich zu löschen!"
 
-#: www/tracker/admin/form-extrafieldcopy.php:53
+#: www/tracker/admin/form-extrafieldcopy.php:52
 #, fuzzy
 msgid "Cannot find a destination tracker where you have administration rights."
 msgstr "Contribution Tracker Administration"
 
-#: www/tracker/admin/form-extrafieldcopy.php:56
+#: www/tracker/admin/form-extrafieldcopy.php:55
 #, php-format
 msgid "Copy choices from custom field %1$s"
 msgstr "Kopieren Sie Wahlmöglichkeiten aus dem benutzerdefinierten Feld %1$s"
 
-#: www/tracker/admin/form-extrafieldcopy.php:69
+#: www/tracker/admin/form-extrafieldcopy.php:68
 msgid "Copy From"
 msgstr "Kopieren von"
 
-#: www/tracker/admin/form-extrafieldcopy.php:75
+#: www/tracker/admin/form-extrafieldcopy.php:74
 msgid "Into trackers and custom fields"
 msgstr "In Tracker und extra Felder"
 
@@ -19115,10 +19173,6 @@
 msgid "Modify a custom field in %s"
 msgstr "Bearbeiten Sie ein benutzerdefiniertes Feld in %s"
 
-#: www/tracker/admin/form-updateextrafield.php:48
-msgid "Custom Field Name"
-msgstr "Extrafeldname"
-
 #: www/tracker/admin/form-updateextrafield.php:53
 #, fuzzy
 msgid "Text Area Rows"
@@ -19139,10 +19193,6 @@
 msgid "Text Field Maxlength"
 msgstr "Textfeld maximale Länge/Textbereich Spalten"
 
-#: www/tracker/admin/form-updateextrafield.php:72
-msgid "Field alias"
-msgstr "Alias (Feldname)"
-
 #: www/tracker/admin/form-updateextrafield.php:75
 #, fuzzy
 msgid "Field is mandatory"
@@ -19164,39 +19214,43 @@
 msgid "Modify a custom field element in %s"
 msgstr "Bearbeiten eines benutzerdefinierten Feldelementes in %s"
 
-#: www/tracker/admin/form-updatetracker.php:36
+#: www/tracker/admin/form-updatetracker.php:37
 #, fuzzy, php-format
 msgid "Update settings for %s"
 msgstr "Einstellungen aktualisieren"
 
-#: www/tracker/admin/form-updatetracker.php:41
+#: www/tracker/admin/form-updatetracker.php:42
 msgid ""
 "<strong>Name:</strong> (examples: meeting minutes, test results, RFP Docs)"
 msgstr ""
 "<strong> Name:</strong> (Beispiele: Protokoll des Meetings, Testergebnisse, "
 "RFP Dokumente)"
 
-#: www/tracker/admin/form-updatetracker.php:63 www/tracker/admin/ind.php:148
+#: www/tracker/admin/form-updatetracker.php:64 www/tracker/admin/ind.php:146
+msgid "Allow non-logged-in postings"
+msgstr "Erlaube anonyme Beiträge"
+
+#: www/tracker/admin/form-updatetracker.php:66 www/tracker/admin/ind.php:148
 msgid "Send email on new submission to address"
 msgstr "Schicke E-Mail bei Neueinträgen an"
 
-#: www/tracker/admin/form-updatetracker.php:66 www/tracker/admin/ind.php:151
+#: www/tracker/admin/form-updatetracker.php:69 www/tracker/admin/ind.php:151
 msgid "Send email on all changes"
 msgstr "Schicke E-Mail bei allen Änderungen"
 
-#: www/tracker/admin/form-updatetracker.php:68 www/tracker/admin/ind.php:153
+#: www/tracker/admin/form-updatetracker.php:71 www/tracker/admin/ind.php:153
 msgid "Days till considered overdue"
 msgstr "Tage bis überfällig angenommen"
 
-#: www/tracker/admin/form-updatetracker.php:71 www/tracker/admin/ind.php:156
+#: www/tracker/admin/form-updatetracker.php:74 www/tracker/admin/ind.php:156
 msgid "Days till pending tracker items time out"
 msgstr "Tage bis unbearbeitete Trackerelemente Timeout haben"
 
-#: www/tracker/admin/form-updatetracker.php:74 www/tracker/admin/ind.php:159
+#: www/tracker/admin/form-updatetracker.php:77 www/tracker/admin/ind.php:159
 msgid "Free form text for the \"submit new item\" page"
 msgstr "Freitext für die \"Neues Objekt vorschlagen\" Seite"
 
-#: www/tracker/admin/form-updatetracker.php:77 www/tracker/admin/ind.php:162
+#: www/tracker/admin/form-updatetracker.php:80 www/tracker/admin/ind.php:162
 msgid "Free form text for the \"browse items\" page"
 msgstr "Freitext für die \"Durchsuche Objekte\" Seite"
 
@@ -19210,7 +19264,7 @@
 msgid "Select Template"
 msgstr "Template löschen"
 
-#: www/tracker/admin/form-workflow.php:30
+#: www/tracker/admin/form-workflow.php:33
 #, fuzzy
 msgid ""
 "To create a workflow, you need first to create a custom field of type "
@@ -19219,38 +19273,56 @@
 "Um einen Workflow zu erzeugen müssen Sie zuerst ein benutzerdefiniertes Feld "
 "des 'Status'-Typs anlegen."
 
-#: www/tracker/admin/form-workflow.php:34
-msgid "Internal error: Illegal number of status fields (WKFL01)."
-msgstr "Interner Fehler: Ungültiger Statuswert im Feld (WKFL01)."
+#: www/tracker/admin/form-workflow.php:36
+msgid "Internal error: Illegal number of status fields (only one allowed)."
+msgstr "Interner Fehler: Ungültige Anzahl an Statusfeldern (nur eins erlaubt)."
 
-#: www/tracker/admin/form-workflow.php:37
+#: www/tracker/admin/form-workflow.php:40
 msgid "Configure workflow"
 msgstr "Workflow konfigurieren"
 
-#: www/tracker/admin/form-workflow.php:55
-#, fuzzy, php-format
+#: www/tracker/admin/form-workflow.php:47
+msgid "Cannot continue due to an error."
+msgstr "Kann ob eines Fehlers nicht fortfahren."
+
+#: www/tracker/admin/form-workflow.php:62
+#, php-format
 msgid "Allowed initial values for the %1$s field"
-msgstr "Erlaubte Ausgangswerte für das %1$s - Feld"
+msgstr "Erlaubte Ausgangswerte für das %1$s-Feld"
 
-#: www/tracker/admin/form-workflow.php:63
-#, fuzzy
+#: www/tracker/admin/form-workflow.php:93
 msgid "Initial values"
-msgstr "Ungültige Bewertungsgröße"
+msgstr "Anfänglich erlaubte Werte"
 
-#: www/tracker/admin/form-workflow.php:66
-#, fuzzy
-msgid "From Value"
-msgstr "Alter Wert"
+#: www/tracker/admin/form-workflow.php:105
+#, php-format
+msgid "Allowed transitions for the %1$s field"
+msgstr "Erlaubte Übergänge für das %1$s-Feld"
 
+#: www/tracker/admin/form-workflow.php:143
+#: www/tracker/admin/form-workflow.php:145
+#: www/tracker/admin/form-workflow.php:154
+msgid "Edit roles"
+msgstr "Rollen bearbeiten"
+
+#: www/tracker/admin/form-workflow.php:152
+#, php-format
+msgid ""
+"Tip: Click on %s to configure allowed roles for a transition (all by "
+"default)."
+msgstr ""
+"Tip: auf %s klicken, um die erlaubten Rollen für einen Übergang "
+"(Zustandstransition) zu konfigurieren; standardmäßig sind alle Rollen "
+"freigeschaltet."
+
 #: www/tracker/admin/form-workflow_roles.php:56
-#, fuzzy, php-format
+#, php-format
 msgid "Configuring allowed roles for the transitions from %1$s to %2$s"
-msgstr "Konfigurieren Sie erlaube Rollen für den Übergang von %1$s zu %2$s"
+msgstr "Konfiguriere erlaube Rollen für den Übergang von %1$s zu %2$s"
 
 #: www/tracker/admin/ind.php:48
-#, fuzzy
 msgid "Tracker created successfully"
-msgstr "Aufgabe erfolgreich erstellt"
+msgstr "Tracker erfolgreich erstellt"
 
 #: www/tracker/admin/ind.php:62 www/tracker/ind.php:27
 #, fuzzy
@@ -19314,10 +19386,6 @@
 msgid "Publicly Available"
 msgstr "Öffentlich sichtbar"
 
-#: www/tracker/admin/ind.php:146
-msgid "Allow non-logged-in postings"
-msgstr "Erlaube anonyme Beiträge"
-
 #: www/tracker/admin/index.php:68 www/tracker/admin/updates.php:170
 #: www/tracker/download.php:43 www/tracker/tracker.php:53
 #, fuzzy
@@ -19334,7 +19402,7 @@
 msgstr "Erfolgreich gelöscht."
 
 #: www/tracker/admin/tracker.php:31
-#: www/tracker/include/ArtifactTypeHtml.class.php:744
+#: www/tracker/include/ArtifactTypeHtml.class.php:746
 msgid "New Tracker"
 msgstr "Neuer Tracker"
 
@@ -19344,7 +19412,7 @@
 msgstr "Standardwert für neue Tracker"
 
 #: www/tracker/admin/tracker.php:36
-#: www/tracker/include/ArtifactTypeHtml.class.php:810
+#: www/tracker/include/ArtifactTypeHtml.class.php:812
 msgid "Update Settings"
 msgstr "Einstellungen aktualisieren"
 
@@ -19354,7 +19422,7 @@
 msgstr "Richten Sie Einstellungen ein, wie z.B. Ablaufzeit, Emailadressen"
 
 #: www/tracker/admin/tracker.php:41
-#: www/tracker/include/ArtifactTypeHtml.class.php:815
+#: www/tracker/include/ArtifactTypeHtml.class.php:817
 msgid "Manage Custom Fields"
 msgstr "Hinzufügen/Aktualisieren Extra-Felder"
 
@@ -19371,7 +19439,7 @@
 "Produkttypen"
 
 #: www/tracker/admin/tracker.php:46
-#: www/tracker/include/ArtifactTypeHtml.class.php:820
+#: www/tracker/include/ArtifactTypeHtml.class.php:822
 msgid "Manage Workflow"
 msgstr "Workflow verwalten"
 
@@ -19380,7 +19448,7 @@
 msgstr "Tracker Workflow bearbeiten."
 
 #: www/tracker/admin/tracker.php:51
-#: www/tracker/include/ArtifactTypeHtml.class.php:825
+#: www/tracker/include/ArtifactTypeHtml.class.php:827
 msgid "Customize List"
 msgstr "Liste Anpassen"
 
@@ -19389,7 +19457,7 @@
 msgstr "Anzeige für den Tracker Anpassen"
 
 #: www/tracker/admin/tracker.php:56
-#: www/tracker/include/ArtifactTypeHtml.class.php:830
+#: www/tracker/include/ArtifactTypeHtml.class.php:832
 msgid "Add/Update Canned Responses"
 msgstr "Vorgefertigte Antworten hinzufügen/aktualisieren"
 
@@ -19398,10 +19466,6 @@
 msgid "Create/change generic response messages for the tracker."
 msgstr "Allgemeine Antworten für den Tracker hinzufügen/ändern"
 
-#: www/tracker/admin/tracker.php:61
-msgid "Apply Template Tracker"
-msgstr "Template-Tracker auf diesen anwenden"
-
 #: www/tracker/admin/tracker.php:62
 msgid "Duplicate parameters and fields from a template trackers in this one."
 msgstr "Parameter und Felder aus einem Template-Tracker in diesen kopieren"
@@ -19422,6 +19486,10 @@
 msgid "Custom Field Deleted"
 msgstr "Anpassbares Feld Gelöscht"
 
+#: www/tracker/admin/updates.php:100 www/tracker/admin/updates.php:199
+msgid "Error inserting an element"
+msgstr "Fehler beim Einfügen eines Elementes"
+
 #: www/tracker/admin/updates.php:103
 msgid "Element inserted"
 msgstr "Element eingefügt"
@@ -19439,8 +19507,8 @@
 msgid "Canned Response Inserted"
 msgstr "Vorgespeicherte Antwort eingefügt"
 
-#: www/tracker/admin/updates.php:144 www/tracker/admin/updates.php:300
-#: www/tracker/admin/updates.php:324 www/tracker/admin/updates.php:338
+#: www/tracker/admin/updates.php:144 www/tracker/admin/updates.php:307
+#: www/tracker/admin/updates.php:331 www/tracker/admin/updates.php:345
 msgid "Error updating"
 msgstr "Fehler beim Aktualisieren"
 
@@ -19454,8 +19522,8 @@
 msgstr "Tracker-Vorlage klonen"
 
 #: www/tracker/admin/updates.php:228 www/tracker/admin/updates.php:259
-#: www/tracker/admin/updates.php:379 www/tracker/admin/updates.php:402
-#: www/tracker/admin/updates.php:422
+#: www/tracker/admin/updates.php:386 www/tracker/admin/updates.php:409
+#: www/tracker/admin/updates.php:429
 msgid "Error updating a custom field"
 msgstr "Fehler beim Aktualisieren eines Extrafeldnamens"
 
@@ -19472,157 +19540,162 @@
 msgid "Clone ID"
 msgstr "Forge ID"
 
-#: www/tracker/admin/updates.php:278
+#: www/tracker/admin/updates.php:281
 #, fuzzy
+msgid "Error looking up template project"
+msgstr "Fehler beim Erstellen des Mitarbeiter-Objektes: %s"
+
+#: www/tracker/admin/updates.php:284
+#, fuzzy
 msgid "Error cloning fields: "
 msgstr "Fehler beim Einfügen eines Extrafeldes"
 
-#: www/tracker/admin/updates.php:280
+#: www/tracker/admin/updates.php:286
 #, fuzzy
 msgid "Successfully Cloned Tracker Fields "
 msgstr "Tracker Verknüpfung erfolgreich hinzugefügt"
 
-#: www/tracker/admin/updates.php:303 www/tracker/admin/updates.php:327
-#: www/tracker/admin/updates.php:382 www/tracker/admin/updates.php:411
-#: www/tracker/admin/updates.php:425
+#: www/tracker/admin/updates.php:310 www/tracker/admin/updates.php:334
+#: www/tracker/admin/updates.php:389 www/tracker/admin/updates.php:418
+#: www/tracker/admin/updates.php:432
 msgid "Tracker Updated"
 msgstr "Tracker aktualisiert"
 
-#: www/tracker/admin/updates.php:361
+#: www/tracker/admin/updates.php:368
 #, fuzzy
 msgid "Renderer Uploaded"
 msgstr "Hochgeladen"
 
-#: www/tracker/admin/updates.php:363
+#: www/tracker/admin/updates.php:370
 #, fuzzy
 msgid "Renderer File empty"
 msgstr "Renderer hochgeladen"
 
-#: www/tracker/admin/updates.php:438
+#: www/tracker/admin/updates.php:445
 #, fuzzy
 msgid "ERROR: Initial values not saved, no initial state given."
 msgstr ""
 "FEHLER: Ausgangswerte nicht gespeichert, kein Ausgangszustand existiert."
 
-#: www/tracker/admin/updates.php:442
+#: www/tracker/admin/updates.php:449
 msgid "Initial values saved."
 msgstr "Ausgangswerte gespeichert."
 
-#: www/tracker/admin/updates.php:451 www/tracker/admin/updates.php:460
+#: www/tracker/admin/updates.php:458 www/tracker/admin/updates.php:467
 msgid "Workflow saved"
 msgstr "Workflow gespeichert."
 
-#: www/tracker/admin/updates.php:478
+#: www/tracker/admin/updates.php:485
 #, fuzzy
 msgid "Error deleting an element"
 msgstr "Fehler beim Einfügen eines Elementes"
 
-#: www/tracker/admin/updates.php:481
+#: www/tracker/admin/updates.php:488
 #, fuzzy
 msgid "Element deleted"
 msgstr "Element aktualisiert"
 
-#: www/tracker/browse.php:158
+#: www/tracker/browse.php:164
 msgid "Query Name"
 msgstr "Name der Suchanfrage"
 
-#: www/tracker/browse.php:162 www/tracker/browse.php:494
+#: www/tracker/browse.php:168 www/tracker/browse.php:502
 msgid "Load"
 msgstr "Laden"
 
-#: www/tracker/browse.php:174
+#: www/tracker/browse.php:180
 #, fuzzy
 msgid "Deleted query successful."
 msgstr "Löschung Erfolgreich"
 
-#: www/tracker/browse.php:217
+#: www/tracker/browse.php:223
 #, fuzzy, php-format
 msgid "Saved query with name \"%s\"."
 msgstr "Gespeicherte Suchanfrage mit Name: "
 
-#: www/tracker/browse.php:278 www/tracker/query.php:200
+#: www/tracker/browse.php:284 www/tracker/query.php:202
 msgid "Submitter"
 msgstr "Sender"
 
-#: www/tracker/browse.php:295 www/tracker/query.php:217
+#: www/tracker/browse.php:301 www/tracker/query.php:219
 msgid "Ascending"
 msgstr "Aufsteigend"
 
-#: www/tracker/browse.php:296 www/tracker/query.php:218
+#: www/tracker/browse.php:302 www/tracker/query.php:220
 msgid "Descending"
 msgstr "Absteigend"
 
-#: www/tracker/browse.php:306 www/tracker/query.php:229
+#: www/tracker/browse.php:312 www/tracker/query.php:231
 msgid "Any changes"
 msgstr "Jede Änderung"
 
-#: www/tracker/browse.php:307 www/tracker/query.php:230
+#: www/tracker/browse.php:313 www/tracker/query.php:232
 msgid "Last 24H"
 msgstr "Letzten 24 h"
 
-#: www/tracker/browse.php:308 www/tracker/query.php:231
+#: www/tracker/browse.php:314 www/tracker/query.php:233
 msgid "Last 7days"
 msgstr "Letzten 7 Tage"
 
-#: www/tracker/browse.php:309 www/tracker/query.php:232
+#: www/tracker/browse.php:315 www/tracker/query.php:234
 msgid "Last 2weeks"
 msgstr "Letzte 2 Wochen"
 
-#: www/tracker/browse.php:310 www/tracker/query.php:233
+#: www/tracker/browse.php:316 www/tracker/query.php:235
 msgid "Last 1month"
 msgstr "Letzten Monat"
 
-#: www/tracker/browse.php:369
+#: www/tracker/browse.php:375
 msgid "Power Query [OLD]"
 msgstr "(alte) Powersuche"
 
-#: www/tracker/browse.php:421
+#: www/tracker/browse.php:427
 msgid "Power Query"
 msgstr "(alte) Powersuche"
 
-#: www/tracker/browse.php:423 www/tracker/browse.php:428
-#: www/tracker/query.php:252 www/tracker/query.php:256
+#: www/tracker/browse.php:429 www/tracker/browse.php:434
+#: www/tracker/query.php:254 www/tracker/query.php:258
 msgid "Build Query"
 msgstr "Suche erzeugen"
 
-#: www/tracker/browse.php:434
+#: www/tracker/browse.php:440
 #, fuzzy
 msgid "Advanced queries"
 msgstr "Erweiterte Suche"
 
-#: www/tracker/browse.php:454
+#: www/tracker/browse.php:460
 msgid "Select Query"
 msgstr "Suchanfrage wählen"
 
-#: www/tracker/browse.php:456
+#: www/tracker/browse.php:462
 msgid "Select One"
 msgstr "Eine auswählen"
 
-#: www/tracker/browse.php:467
+#: www/tracker/browse.php:473
 msgid "Tracker Queries"
 msgstr "Tracker-Suchanfragen"
 
-#: www/tracker/browse.php:484
+#: www/tracker/browse.php:491
 msgid "Private Queries"
 msgstr "Private Suchanfragen"
 
-#: www/tracker/browse.php:509
+#: www/tracker/browse.php:517
 msgid "Simple Filtering and Sorting"
 msgstr "Einfaches Filtern und Sortieren"
 
-#: www/tracker/browse.php:538 www/tracker/query.php:390
+#: www/tracker/browse.php:546 www/tracker/query.php:392
 msgid "Order by"
 msgstr "Sortieren nach"
 
-#: www/tracker/browse.php:541
+#: www/tracker/browse.php:549
 msgid "Quick Browse"
 msgstr "Schnellsuche"
 
-#: www/tracker/browse.php:566
+#: www/tracker/browse.php:574
 msgid "Default"
 msgstr "Standard"
 
-#: www/tracker/browse.php:567
+#: www/tracker/browse.php:575
 msgid ""
 "Viewing only opened records by default, use 'Advanced queries' or 'Simple "
 "Filtering and Sorting' to change."
@@ -19630,46 +19703,46 @@
 "Standardmäßig nur geöffnete Aufzeichnungen ansehen, nutzen Sie 'Erweiterte "
 "Suche' oder 'Einfaches Filtern und Sortieren' um dies zu ändern."
 
-#: www/tracker/browse.php:656
+#: www/tracker/browse.php:665
 #, php-format
 msgid "unknown #%d"
 msgstr "unbekannte Nr. %d"
 
-#: www/tracker/browse.php:690
+#: www/tracker/browse.php:706
 #, php-format
 msgid "unknown (\"%s\")"
 msgstr "unbekannt (\"%s\")"
 
-#: www/tracker/browse.php:822
+#: www/tracker/browse.php:858
 #, fuzzy
 msgid "Check  all"
 msgstr "Alle auswählen"
 
-#: www/tracker/browse.php:824
+#: www/tracker/browse.php:860
 #, fuzzy
 msgid "Clear  all"
 msgstr "Alle abwählen"
 
-#: www/tracker/browse.php:851
-#: www/tracker/include/ArtifactTypeHtml.class.php:656
-#: www/tracker/include/ArtifactTypeHtml.class.php:688
+#: www/tracker/browse.php:887
+#: www/tracker/include/ArtifactTypeHtml.class.php:658
+#: www/tracker/include/ArtifactTypeHtml.class.php:690
 msgid "Nobody"
 msgstr "Niemanden"
 
-#: www/tracker/browse.php:855
+#: www/tracker/browse.php:891
 msgid "Canned Response"
 msgstr "Vorgespeicherte Antwort"
 
-#: www/tracker/browse.php:872 www/tracker/browse.php:874
+#: www/tracker/browse.php:908 www/tracker/browse.php:910
 msgid "Caption"
 msgstr "Legende"
 
-#: www/tracker/browse.php:877
+#: www/tracker/browse.php:913
 #, php-format
 msgid "* Denotes requests > %1$s Days Old"
 msgstr "* Anfragen, die älter als %1$s Tage sind"
 
-#: www/tracker/browse.php:887
+#: www/tracker/browse.php:923
 msgid "No items found"
 msgstr "Keine Beiträge gefunden"
 
@@ -19691,10 +19764,10 @@
 msgstr "Ja, ich möchte dieses Produkt löschen"
 
 #: www/tracker/download.php:51 www/tracker/taskmgr.php:36
-#: www/tracker/tracker.php:94 www/tracker/tracker.php:290
-#: www/tracker/tracker.php:480 www/tracker/tracker.php:497
-#: www/tracker/tracker.php:526 www/tracker/tracker.php:547
-#: www/tracker/tracker.php:596
+#: www/tracker/tracker.php:94 www/tracker/tracker.php:288
+#: www/tracker/tracker.php:479 www/tracker/tracker.php:506
+#: www/tracker/tracker.php:535 www/tracker/tracker.php:556
+#: www/tracker/tracker.php:605
 msgid "Artifact Could Not Be Created"
 msgstr "Artefakt konnte nicht erzeugt werden"
 
@@ -19724,89 +19797,89 @@
 msgstr "Foren für %1$s"
 
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:45
-#: www/tracker/include/ArtifactTypeHtml.class.php:750
+#: www/tracker/include/ArtifactTypeHtml.class.php:752
 #, fuzzy
 msgid "View Trackers"
 msgstr "Neuer Tracker"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:139
+#: www/tracker/include/ArtifactTypeHtml.class.php:141
 msgid "No related tasks."
 msgstr "Keine Aufgabenbezüge."
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:149
+#: www/tracker/include/ArtifactTypeHtml.class.php:151
 msgid "Remove Relation"
 msgstr "Entferne Beziehung"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:186
+#: www/tracker/include/ArtifactTypeHtml.class.php:188
 #, php-format
 msgid "Average completion rate: %d%%"
 msgstr "Durchschnittliche Abschussrate: %d%%"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:231
+#: www/tracker/include/ArtifactTypeHtml.class.php:233
 #, fuzzy
 msgid "Tick an attachment and submit to delete it."
 msgstr "Anhaken und abschicken, um die Beziehung zu entfernen."
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:611
+#: www/tracker/include/ArtifactTypeHtml.class.php:613
 #, php-format
 msgid "[#%d] (unknown)"
 msgstr "[#%d] (unbekannt)"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:625
+#: www/tracker/include/ArtifactTypeHtml.class.php:627
 msgid ""
 "Tip: Enter a space-separated list of artifact ids ([#NNN] also accepted)"
 msgstr ""
 "Tipp: Geben Sie eine durch Leerzeichen getrennte Liste von Artefakt-IDs ein "
 "([#NNN] wird auch akzeptiert)."
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:746
+#: www/tracker/include/ArtifactTypeHtml.class.php:748
 #, fuzzy
 msgid "Create a new Tracker"
 msgstr "Standardwert für neue Tracker"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:752
+#: www/tracker/include/ArtifactTypeHtml.class.php:754
 msgid "-tooltip:tracker:viewtrackers"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:758
+#: www/tracker/include/ArtifactTypeHtml.class.php:760
 msgid "Browse all items in the current Tracker"
 msgstr "Alle Elemente im aktuellen Tracker druchsuchen"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:761
+#: www/tracker/include/ArtifactTypeHtml.class.php:763
 msgid "Download .csv"
 msgstr ".csv herunterladen"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:764
+#: www/tracker/include/ArtifactTypeHtml.class.php:766
 msgid "Download an overview over the items in the current Tracker as CSV file"
 msgstr ""
 "Herunterladen einer Übersicht über die Elemente im aktuellen Tracker als CSV "
 "Datei"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:767
+#: www/tracker/include/ArtifactTypeHtml.class.php:769
 msgid "Submit New"
 msgstr "Eintrag anlegen"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:770
+#: www/tracker/include/ArtifactTypeHtml.class.php:772
 msgid "Enter a new item into the current Tracker"
 msgstr "Neues Element in den aktuellen Tracker eintragen"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:777
+#: www/tracker/include/ArtifactTypeHtml.class.php:779
 msgid "-tooltip:tracker:reporting"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:780
+#: www/tracker/include/ArtifactTypeHtml.class.php:782
 msgid "Stop Monitor"
 msgstr "Beobachtung beenden"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:784
+#: www/tracker/include/ArtifactTypeHtml.class.php:786
 msgid "-tooltip:tracker:stopmonitor"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:793
+#: www/tracker/include/ArtifactTypeHtml.class.php:795
 msgid "-tooltip:tracker:startmonitor"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:803
+#: www/tracker/include/ArtifactTypeHtml.class.php:805
 msgid ""
 "Administrating that tracker; click here to return to the Tracker Admin "
 "overview page"
@@ -19814,50 +19887,54 @@
 "Verwalte den Tracker; hier anklicken um zur Tracker Admin Übersichtsseite zu "
 "kommen."
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:805
+#: www/tracker/include/ArtifactTypeHtml.class.php:807
 msgid "Administrate the current tracker"
 msgstr "Aktuellen Tracker verwalten"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:813
+#: www/tracker/include/ArtifactTypeHtml.class.php:815
 msgid "-tooltip:tracker:updatesettings"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:818
+#: www/tracker/include/ArtifactTypeHtml.class.php:820
 #, fuzzy
 msgid "-tooltip:tracker:managecustomfields"
 msgstr "In Tracker und extra Felder"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:823
+#: www/tracker/include/ArtifactTypeHtml.class.php:825
 msgid "Assign Role permissions to state transitions"
 msgstr "Befugnisse der Rolle zur Festlegung der Übergänge"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:828
+#: www/tracker/include/ArtifactTypeHtml.class.php:830
 msgid "-tooltip:tracker:customiselist"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:833
+#: www/tracker/include/ArtifactTypeHtml.class.php:835
 msgid "-tooltip:tracker:cannedresp"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:838
+#: www/tracker/include/ArtifactTypeHtml.class.php:837
+msgid "Clone Tracker"
+msgstr "Vorlagentracker anwenden (klonen)"
+
+#: www/tracker/include/ArtifactTypeHtml.class.php:840
 msgid "-tooltip:tracker:clonetracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:840
+#: www/tracker/include/ArtifactTypeHtml.class.php:842
 #, fuzzy
 msgid "Really delete the entire tracker"
 msgstr "Diesen Tracker dauerhaft löschen."
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:843
+#: www/tracker/include/ArtifactTypeHtml.class.php:845
 #, fuzzy
 msgid "Irrevocably delete this entire Tracker and all its contents"
 msgstr ""
 "Sie sind dabei diesen Tracker und dessen gesamten Inhalt dauerhaft und "
 "unwiderbringlich zu löschen!"
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:954
-#: www/tracker/include/ArtifactTypeHtml.class.php:959
-#: www/tracker/query.php:366
+#: www/tracker/include/ArtifactTypeHtml.class.php:958
+#: www/tracker/include/ArtifactTypeHtml.class.php:963
+#: www/tracker/query.php:368
 #, php-format
 msgid "(%% for wildcards)"
 msgstr "(%% als Joker)"
@@ -19897,172 +19974,190 @@
 msgid "%1$s %2$s: Submit New"
 msgstr "%1$s %2$s: Erstellen"
 
-#: www/tracker/item.php:189
+#: www/tracker/item.php:194
 msgid "New submission"
 msgstr "Neu Eingabe"
 
-#: www/tracker/item.php:192
+#: www/tracker/item.php:197
 msgid "Date Submitted"
 msgstr "Datum abgeschickt"
 
-#: www/tracker/item.php:197
+#: www/tracker/item.php:202
 msgid "Date Closed"
 msgstr "Datum geschlossen"
 
-#: www/tracker/item.php:210
+#: www/tracker/item.php:215
 msgid "Data Type"
 msgstr "Datentyp"
 
-#: www/tracker/item.php:237
+#: www/tracker/item.php:242
 msgid "Stop monitor"
 msgstr "Stoppe Beobachtung"
 
-#: www/tracker/item.php:265 www/tracker/item.php:387 www/tracker/query.php:265
+#: www/tracker/item.php:270 www/tracker/item.php:410 www/tracker/query.php:267
 msgid "Save Changes"
 msgstr "Änderungen speichern"
 
-#: www/tracker/item.php:272
+#: www/tracker/item.php:276
+msgid "Please login"
+msgstr "Bitte einloggen"
+
+#: www/tracker/item.php:283
+msgid "Please log in."
+msgstr "Bitte melde Dich beim System an."
+
+#: www/tracker/item.php:284
+msgid ""
+"If you <strong>cannot</strong> login, then enter your email address here to "
+"submit a new item, post a comment or make any other permitted changes."
+msgstr ""
+
+#: www/tracker/item.php:286
+msgid "Anonymous User eMail"
+msgstr "Anonymer Benutzer eMail"
+
+#: www/tracker/item.php:295
 #, fuzzy
 msgid "Debugging Functions"
 msgstr "Mathematische Funktionen"
 
-#: www/tracker/item.php:289
+#: www/tracker/item.php:312
 #, fuzzy
 msgid "Item Description"
 msgstr "Beschreibung"
 
-#: www/tracker/item.php:331 www/tracker/query.php:385
+#: www/tracker/item.php:354 www/tracker/query.php:387
 msgid "Followups"
 msgstr "Kommentare"
 
-#: www/tracker/item.php:332
+#: www/tracker/item.php:355
 msgid "No Followups Have Been Posted"
 msgstr "Es wurden bislang keine Kommentare verfaßt."
 
-#: www/tracker/item.php:346
+#: www/tracker/item.php:369
 msgid "Attach files to this submission"
 msgstr "Dateien an diesen Eintrag anhängen"
 
-#: www/tracker/item.php:354
+#: www/tracker/item.php:377
 msgid "Create an attachment"
 msgstr "Dateianhang erstellen"
 
-#: www/tracker/item.php:369
+#: www/tracker/item.php:392
 msgid "OR use a canned response"
 msgstr "ODER eine vorgespeicherte Antwort benutzen"
 
-#: www/tracker/item.php:384
+#: www/tracker/item.php:407
 msgid "indicates required fields."
 msgstr "zeigt Pflichtfelder an."
 
-#: www/tracker/item.php:394
+#: www/tracker/item.php:417
 msgid "Item Relationships"
 msgstr "Beziehungen zwischen Einträgen"
 
-#: www/tracker/item.php:403
+#: www/tracker/item.php:426
 msgid "You do not have sufficient privileges to view Task relations."
 msgstr "Du hast ungenügende Rechte, Aufgabenbeziehungen einzusehen."
 
-#: www/tracker/item.php:405
+#: www/tracker/item.php:428
 msgid "This project does not use Tasks."
 msgstr "Dieses Projekt benutzt Aufgaben nicht."
 
-#: www/tracker/item.php:411
+#: www/tracker/item.php:434
 msgid "Build Task Relation"
 msgstr "Erstelle Aufgabenverbindung"
 
-#: www/tracker/item.php:412
+#: www/tracker/item.php:435
 msgid "Related Tasks"
 msgstr "Verwandte Aufgaben"
 
-#: www/tracker/item.php:434
+#: www/tracker/item.php:457
 msgid "Instructions"
 msgstr "Anleitung"
 
-#: www/tracker/item.php:437
+#: www/tracker/item.php:460
 msgid "DO NOT enter passwords or confidential information in your message!"
 msgstr ""
 "Fügen Sie KEINE Paßwörter oder vertrauliche Informationen in Ihre Nachricht "
 "ein!"
 
-#: www/tracker/query.php:67
+#: www/tracker/query.php:68
 #, fuzzy
 msgid "Query Successfully Created"
 msgstr "Element erfolgreich angelegt"
 
-#: www/tracker/query.php:115
+#: www/tracker/query.php:117
 #, fuzzy
 msgid "Query Updated"
 msgstr "Tagebuch aktualisiert"
 
-#: www/tracker/query.php:144
+#: www/tracker/query.php:146
 #, fuzzy
 msgid "Query Deleted"
 msgstr "Datei gelöscht"
 
-#: www/tracker/query.php:156
+#: www/tracker/query.php:158
 msgid "Missing Build Query Action"
 msgstr "Keine Suche vorhanden"
 
-#: www/tracker/query.php:288 www/tracker/query.php:299
+#: www/tracker/query.php:290 www/tracker/query.php:301
 msgid "Name and Save Query"
 msgstr "Suchanfrage benennen und speichern"
 
-#: www/tracker/query.php:289
+#: www/tracker/query.php:291
 msgid "Load Query"
 msgstr "Suchanfrage laden"
 
-#: www/tracker/query.php:292
+#: www/tracker/query.php:294
 msgid "Update Query"
 msgstr "Suchanfrage aktualisieren"
 
-#: www/tracker/query.php:293
+#: www/tracker/query.php:295
 msgid "Delete Query"
 msgstr "Suchanfrage löschen"
 
-#: www/tracker/query.php:296
+#: www/tracker/query.php:298
 msgid "Run Query"
-msgstr "Suche erzeugen"
+msgstr "Suchanfrage durchführen"
 
-#: www/tracker/query.php:319
+#: www/tracker/query.php:321
 #, fuzzy, php-format
 msgid "Note: The default project query is currently '%1$s'."
 msgstr "Hinweis: Die Standard Projektsuche ist momentan '%1$s'."
 
-#: www/tracker/query.php:322
+#: www/tracker/query.php:324
 #, fuzzy
 msgid "Note: There is no default project query defined."
 msgstr "Hinweis: Es gibt keine standardmäßig festgelegte Projektsuche."
 
-#: www/tracker/query.php:327
+#: www/tracker/query.php:329
 #, fuzzy
 msgid "Type of query"
 msgstr "Typ des Extrafeldes"
 
-#: www/tracker/query.php:329
+#: www/tracker/query.php:331
 #, fuzzy
 msgid "Private query"
 msgstr "Privat"
 
-#: www/tracker/query.php:331
+#: www/tracker/query.php:333
 #, fuzzy
 msgid "Project level query (query is public)"
 msgstr "Projektlevel-Suche (Suchanfrage ist öffentlich)"
 
-#: www/tracker/query.php:333
+#: www/tracker/query.php:335
 #, fuzzy
 msgid "Default project query (for project level query only)"
 msgstr "Standard Projektsuche (nur für Projektlevel-Suche)"
 
-#: www/tracker/query.php:371
+#: www/tracker/query.php:373
 msgid "Last Modified Date range"
 msgstr "Zuletzt veränderter Datumsbereich"
 
-#: www/tracker/query.php:373
+#: www/tracker/query.php:375
 msgid "Open Date range"
 msgstr "Offener Datumsbereich"
 
-#: www/tracker/query.php:375
+#: www/tracker/query.php:377
 msgid "Close Date range"
 msgstr "Geschlossener Datumsbereich"
 
@@ -20077,7 +20172,7 @@
 msgstr "Bearbeiter"
 
 #: www/tracker/reporting/trackeract_graph.php:49
-#: www/tracker/reporting/trackerpie_graph.php:63 www/tracker/tracker.php:303
+#: www/tracker/reporting/trackerpie_graph.php:63 www/tracker/tracker.php:301
 msgid "Error: "
 msgstr "Fehler: "
 
@@ -20086,30 +20181,39 @@
 msgid "No Available Tasks Found"
 msgstr "keine ansprechbaren Tracker gefunden"
 
-#: www/tracker/taskmgr.php:99 www/tracker/taskmgr.php:154
+#: www/tracker/taskmgr.php:100 www/tracker/taskmgr.php:167
 #, fuzzy
 msgid "Build Relationship Between Tracker Items and Tasks"
 msgstr "Beziehung zwischen Tracker Items und Task Manager aufbauen"
 
-#: www/tracker/taskmgr.php:114
+#: www/tracker/taskmgr.php:120
 #, fuzzy
 msgid "Add Relationship to Selected Task"
 msgstr "Eine Beziehung zur ausgewählten Aufgabe hinzufügen"
 
-#: www/tracker/taskmgr.php:148
+#: www/tracker/taskmgr.php:161
 msgid "No Existing Project Groups Found"
 msgstr "Keine existierenden Projektgruppen gefunden"
 
-#: www/tracker/taskmgr.php:165
+#: www/tracker/taskmgr.php:178
 #, fuzzy
 msgid "Add Relation to Existing Task"
 msgstr "Eine Beziehung zu existierender Aufgabe hinzufügen."
 
-#: www/tracker/taskmgr.php:166
+#: www/tracker/taskmgr.php:179
 msgid "Create New Task"
 msgstr "Neue Aufgabe anlegen"
 
-#: www/tracker/tracker.php:143 www/tracker/tracker.php:394
+#: www/tracker/tracker.php:102
+#, php-format
+msgid "Invalid eMail Address \"%s\""
+msgstr "Ungültige eMail-Adresse \"%s\""
+
+#: www/tracker/tracker.php:104
+msgid "No eMail address given"
+msgstr "Keine eMail-Adresse angegeben"
+
+#: www/tracker/tracker.php:143 www/tracker/tracker.php:392
 #, fuzzy
 msgid "Could Not Create File Object"
 msgstr "Konnte kein Foren-Objekt einholen"
@@ -20123,72 +20227,73 @@
 msgid "Item [#%d] successfully created"
 msgstr "Element [#%d] erfolgreich angelegt"
 
-#: www/tracker/tracker.php:256
+#: www/tracker/tracker.php:254
 msgid "Updated Successfully"
 msgstr "Aktualisierung erfolgreich"
 
-#: www/tracker/tracker.php:303
+#: www/tracker/tracker.php:301
 #, fuzzy, php-format
 msgid "Could not get Project Task for %d"
 msgstr "Konnte kein Foren-Objekt einholen"
 
-#: www/tracker/tracker.php:331 www/tracker/tracker.php:350
+#: www/tracker/tracker.php:329 www/tracker/tracker.php:348
 msgid "Comment added"
 msgstr "Kommentar hinzugefügt"
 
-#: www/tracker/tracker.php:375
+#: www/tracker/tracker.php:373
 #, php-format
 msgid "ERROR: Skipping attachment %d: file is too large."
 msgstr "FEHLER: Überspringe Anhang %d: Datei ist zu groß "
 
-#: www/tracker/tracker.php:379
+#: www/tracker/tracker.php:377
 #, php-format
 msgid "ERROR: Skipping attachment %d: transfer interrupted."
 msgstr "FEHLER: Überspringe Anhang %d: Übermittlung unterbrochen"
 
-#: www/tracker/tracker.php:403
+#: www/tracker/tracker.php:401
 msgid "File Upload: Error"
 msgstr "Dateihochlade-Fehler"
 
-#: www/tracker/tracker.php:406
+#: www/tracker/tracker.php:404
 msgid "File Upload: Successful"
 msgstr "Datei hochladen: Erfolgreich"
 
-#: www/tracker/tracker.php:423
+#: www/tracker/tracker.php:421
 #, fuzzy
 msgid "Could Not Create File Object::"
 msgstr "Konnte kein Foren-Objekt einholen"
 
-#: www/tracker/tracker.php:428
-msgid "File Delete:"
-msgstr "Datei löschen:"
+#: www/tracker/tracker.php:426
+#, fuzzy
+msgid "File Delete"
+msgstr "Datei gelöscht"
 
-#: www/tracker/tracker.php:431
+#: www/tracker/tracker.php:429
 msgid "File Delete: Successful"
 msgstr "Datei löschen: Erfolgreich"
 
-#: www/tracker/tracker.php:443
+#: www/tracker/tracker.php:442
 #, php-format
 msgid "Item [#%d] successfully updated"
 msgstr "Element [#%d] erfolgreich aktualisiert"
 
-#: www/tracker/tracker.php:485 www/tracker/tracker.php:502
+#: www/tracker/tracker.php:484 www/tracker/tracker.php:511
 msgid "Monitoring Started"
 msgstr "Beobachtung gestartet"
 
-#: www/tracker/tracker.php:487 www/tracker/tracker.php:504
+#: www/tracker/tracker.php:486 www/tracker/tracker.php:513
 msgid "Monitoring Deactivated"
 msgstr "Beobachtung des Trackers deaktiviert."
 
-#: www/tracker/tracker.php:552
+#: www/tracker/tracker.php:561
 msgid "Confirmation failed. Artifact not deleted"
 msgstr "Bestätigung fehlgeschlagen. Produkt wurde nicht gelöscht"
 
-#: www/tracker/tracker.php:556
+#: www/tracker/tracker.php:565
 msgid "Artifact Delete Failed"
 msgstr "Löschen des Produktes fehlgeschlagen."
 
-#: www/tracker/tracker.php:558
+#: www/tracker/tracker.php:567
 msgid "Artifact Deleted Successfully"
 msgstr "Produkt erfolgreich gelöscht"
 

Modified: branches/messer-51/src/translations/fusionforge.pot
===================================================================
--- branches/messer-51/src/translations/fusionforge.pot	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/translations/fusionforge.pot	2012-04-07 14:10:47 UTC (rev 18260)
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-01-19 15:49+0100\n"
+"POT-Creation-Date: 2012-04-07 15:37+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -35,7 +35,7 @@
 msgstr ""
 
 #: common/docman/Document.class.php:82 common/forum/Forum.class.php:115
-#: common/include/Error.class.php:184 common/mail/MailingList.class.php:79
+#: common/include/Error.class.php:192 common/mail/MailingList.class.php:79
 #: common/survey/Survey.class.php:78 common/survey/SurveyQuestion.class.php:70
 #: plugins/mailman/include/MailmanList.class.php:104
 msgid "Group_id in db result does not match Group Object"
@@ -336,12 +336,9 @@
 #: common/docman/include/utils.php:196 common/docman/include/utils.php:197
 #: common/docman/views/listfile.php:204 common/docman/views/listfile.php:206
 #: common/forum/ForumHTML.class.php:65 common/forum/ForumHTML.class.php:222
-#: common/forum/ForumHTML.class.php:463 common/include/descriptive.php:130
-#: common/pm/ProjectTask.class.php:1204 common/tracker/Artifact.class.php:1511
-#: common/tracker/Artifact.class.php:1513
-#: common/tracker/Artifact.class.php:1517
-#: common/tracker/Artifact.class.php:1519
-#: common/tracker/Artifact.class.php:1615
+#: common/forum/ForumHTML.class.php:463 common/include/descriptive.php:133
+#: common/pm/ProjectTask.class.php:1226 common/tracker/Artifact.class.php:1519
+#: common/tracker/Artifact.class.php:1611
 #: common/widget/Widget_MyLatestSvnCommits.class.php:65
 #: common/widget/Widget_ProjectInfo.class.php:66
 #: common/widget/Widget_Rss.class.php:74
@@ -350,19 +347,17 @@
 #: plugins/hudson/include/HudsonBuild.class.php:110
 #: plugins/projects_hierarchy/www/softwaremap.php:332
 #: www/account/index.php:128 www/admin/cronman.php:78
-#: www/admin/grouplist.php:149 www/admin/massmail.php:158
-#: www/admin/search.php:105 www/admin/search.php:187
-#: www/admin/userlist.php:110 www/developer/diary.php:51
-#: www/developer/diary.php:82 www/export/tracker.php:109
-#: www/forum/forum.php:289 www/forum/forum.php:366 www/forum/index.php:98
-#: www/forum/message.php:127 www/forum/message.php:204
+#: www/admin/massmail.php:158 www/admin/search.php:105
+#: www/admin/search.php:187 www/admin/userlist.php:110
+#: www/developer/diary.php:51 www/developer/diary.php:82
+#: www/export/tracker.php:109 www/forum/forum.php:289 www/forum/forum.php:366
+#: www/forum/index.php:98 www/forum/message.php:127 www/forum/message.php:204
 #: www/forum/myforums.php:152 www/frs/index.php:150 www/frs/index.php:210
 #: www/include/stats_function.php:77 www/include/stats_function.php:98
 #: www/include/user_home.php:144 www/my/diary.php:216
-#: www/news/news_utils.php:153 www/news/news_utils.php:165
-#: www/news/news_utils.php:273 www/people/people_utils.php:422
-#: www/people/viewjob.php:81 www/pm/browse_task.php:475
-#: www/pm/browse_task.php:478 www/pm/include/ProjectTaskHTML.class.php:133
+#: www/news/news_utils.php:151 www/news/news_utils.php:163
+#: www/news/news_utils.php:271 www/people/people_utils.php:422
+#: www/people/viewjob.php:81 www/pm/include/ProjectTaskHTML.class.php:133
 #: www/pm/include/ProjectTaskHTML.class.php:186
 #: www/project/admin/project_admin_utils.php:165
 #: www/reporting/usersummary.php:127
@@ -375,17 +370,16 @@
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:65
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:63
 #: www/snippet/detail.php:80 www/snippet/detail.php:169
-#: www/soap/tracker/tracker.php:1131 www/softwaremap/full_list.php:169
-#: www/softwaremap/tag_cloud.php:176 www/softwaremap/trove_list.php:311
-#: www/stats/lastlogins.php:61 www/tracker/browse.php:733
-#: www/tracker/browse.php:748 www/tracker/downloadcsv.php:63
-#: www/tracker/downloadcsv.php:64 www/tracker/downloadcsv.php:65
+#: www/softwaremap/full_list.php:169 www/softwaremap/tag_cloud.php:176
+#: www/softwaremap/trove_list.php:311 www/stats/lastlogins.php:61
+#: www/tracker/downloadcsv.php:63 www/tracker/downloadcsv.php:64
+#: www/tracker/downloadcsv.php:65
 #: www/tracker/include/ArtifactHtml.class.php:60
 #: www/tracker/include/ArtifactHtml.class.php:69
-#: www/tracker/include/ArtifactTypeHtml.class.php:160
-#: www/tracker/include/ArtifactTypeHtml.class.php:161
-#: www/tracker/include/ArtifactTypeHtml.class.php:223 www/tracker/item.php:193
-#: www/tracker/item.php:198
+#: www/tracker/include/ArtifactTypeHtml.class.php:162
+#: www/tracker/include/ArtifactTypeHtml.class.php:163
+#: www/tracker/include/ArtifactTypeHtml.class.php:225 www/tracker/item.php:198
+#: www/tracker/item.php:203
 msgid "Y-m-d H:i"
 msgstr ""
 
@@ -407,8 +401,8 @@
 #: plugins/contribtracker/www/index.php:145
 #: plugins/contribtracker/www/project_admin.php:293
 #: plugins/mailman/www/admin/index.php:150
-#: plugins/mailman/www/admin/index.php:183 www/mail/admin/index.php:194
-#: www/mail/admin/index.php:226 www/snippet/package.php:152
+#: plugins/mailman/www/admin/index.php:183 www/mail/admin/index.php:193
+#: www/mail/admin/index.php:225 www/snippet/package.php:152
 msgid "Description:"
 msgstr ""
 
@@ -448,9 +442,9 @@
 #: www/project/admin/editimages.php:271
 #: www/search/include/renderers/DocsHtmlSearchRenderer.class.php:51
 #: www/search/include/renderers/ProjectHtmlSearchRenderer.class.php:45
-#: www/snippet/submit.php:110 www/tracker/admin/form-updatetracker.php:52
+#: www/snippet/submit.php:110 www/tracker/admin/form-updatetracker.php:53
 #: www/tracker/admin/ind.php:113 www/tracker/admin/ind.php:142
-#: www/tracker/browse.php:666 www/tracker/ind.php:63
+#: www/tracker/browse.php:676 www/tracker/ind.php:63
 msgid "Description"
 msgstr ""
 
@@ -471,10 +465,10 @@
 msgstr ""
 
 #: common/docman/include/utils.php:326 common/docman/views/editfile.php:132
-#: www/pm/browse_task.php:585 www/project/admin/database.php:208
-#: www/tracker/admin/form-customizelist.php:44 www/tracker/browse.php:519
-#: www/tracker/browse.php:675 www/tracker/browse.php:859
-#: www/tracker/query.php:344
+#: www/pm/browse_task.php:619 www/project/admin/database.php:208
+#: www/tracker/admin/form-customizelist.php:44 www/tracker/browse.php:527
+#: www/tracker/browse.php:688 www/tracker/browse.php:895
+#: www/tracker/query.php:346
 msgid "State"
 msgstr ""
 
@@ -716,28 +710,28 @@
 msgstr ""
 
 #: common/docman/views/listfile.php:121
-#: common/tracker/ArtifactExtraField.class.php:326
+#: common/tracker/ArtifactExtraField.class.php:315
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:218
-#: www/admin/groupedit.php:106 www/admin/grouplist.php:92
+#: www/admin/groupedit.php:106 www/admin/grouplist.php:35
 #: www/admin/pluginman.php:118 www/admin/search.php:94
 #: www/admin/search.php:171 www/frs/admin/editrelease.php:235
 #: www/frs/admin/index.php:155 www/my/dashboard.php:67
 #: www/news/admin/index.php:137 www/people/editjob.php:74
 #: www/people/editjob.php:166 www/people/viewjob.php:75
-#: www/pm/browse_task.php:296 www/pm/browse_task.php:414
+#: www/pm/browse_task.php:296 www/pm/browse_task.php:415
 #: www/pm/ganttpage.php:156 www/pm/include/ProjectTaskHTML.class.php:117
 #: www/pm/include/pm_columns.php:38 www/pm/templates/detail_template.php:15
 #: www/reporting/usersummary.php:103
 #: www/tracker/admin/form-addextrafield.php:132
 #: www/tracker/admin/form-addextrafieldoption.php:101
 #: www/tracker/admin/form-updateextrafieldelement.php:60
-#: www/tracker/include/ArtifactTypeHtml.class.php:147 www/tracker/item.php:140
+#: www/tracker/include/ArtifactTypeHtml.class.php:149 www/tracker/item.php:141
 msgid "Status"
 msgstr ""
 
 #: common/docman/views/listfile.php:121 www/frs/index.php:183
 #: www/pm/ganttpage.php:160 www/project/admin/editimages.php:269
-#: www/tracker/include/ArtifactTypeHtml.class.php:203
+#: www/tracker/include/ArtifactTypeHtml.class.php:205
 msgid "Size"
 msgstr ""
 
@@ -836,8 +830,8 @@
 #: common/include/rbac_texts.php:219
 #: common/widget/Widget_MyProjects.class.php:79
 #: plugins/mantisbt/www/index.php:49 www/include/Layout.class.php:694
-#: www/tracker/admin/ind.php:90 www/tracker/item.php:173
-#: www/tracker/item.php:374
+#: www/tracker/admin/ind.php:90 www/tracker/item.php:178
+#: www/tracker/item.php:397
 msgid "Admin"
 msgstr ""
 
@@ -895,9 +889,9 @@
 #: www/tracker/admin/form-addextrafield.php:82
 #: www/tracker/admin/form-deleteextrafield.php:41
 #: www/tracker/admin/form-deletetracker.php:34
-#: www/tracker/admin/tracker.php:66 www/tracker/browse.php:170
-#: www/tracker/browse.php:495 www/tracker/deleteartifact.php:38
-#: www/tracker/item.php:256
+#: www/tracker/admin/tracker.php:66 www/tracker/browse.php:176
+#: www/tracker/browse.php:503 www/tracker/deleteartifact.php:38
+#: www/tracker/item.php:261
 msgid "Delete"
 msgstr ""
 
@@ -980,7 +974,7 @@
 
 #: common/forum/Forum.class.php:444 common/forum/Forum.class.php:479
 #: common/frs/FRSPackage.class.php:268 common/frs/FRSPackage.class.php:300
-#: common/tracker/ArtifactType.class.php:549
+#: common/tracker/ArtifactType.class.php:550
 msgid "You can only monitor if you are logged in"
 msgstr ""
 
@@ -1003,10 +997,10 @@
 
 #: common/forum/Forum.class.php:620 common/frs/FRSPackage.class.php:447
 #: common/frs/FRSRelease.class.php:356 common/include/Group.class.php:1652
-#: common/mail/MailingList.class.php:393 common/pm/ProjectGroup.class.php:376
-#: common/pm/ProjectTask.class.php:513 common/tracker/Artifact.class.php:489
-#: common/tracker/ArtifactExtraField.class.php:429
-#: common/tracker/ArtifactType.class.php:816
+#: common/mail/MailingList.class.php:394 common/pm/ProjectGroup.class.php:376
+#: common/pm/ProjectTask.class.php:518 common/tracker/Artifact.class.php:490
+#: common/tracker/ArtifactExtraField.class.php:413
+#: common/tracker/ArtifactType.class.php:798
 msgid "Please tick all checkboxes."
 msgstr ""
 
@@ -1092,7 +1086,7 @@
 #: www/admin/groupedit.php:242 www/admin/trove/trove_cat_edit.php:152
 #: www/admin/useredit.php:204 www/admin/vhost.php:189
 #: www/forum/admin/index.php:178 www/frs/admin/index.php:178
-#: www/mail/admin/index.php:229 www/mail/admin/index.php:280
+#: www/mail/admin/index.php:228 www/mail/admin/index.php:286
 #: www/people/people_utils.php:176 www/people/people_utils.php:321
 #: www/pm/admin/index.php:360 www/pm/calendar.php:289
 #: www/project/admin/database.php:234 www/project/admin/index.php:292
@@ -1166,7 +1160,7 @@
 msgid "Posted by"
 msgstr ""
 
-#: common/forum/ForumHTML.class.php:65 common/include/descriptive.php:129
+#: common/forum/ForumHTML.class.php:65 common/include/descriptive.php:132
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:58
 #: plugins/contribtracker/common/ContribTrackerPlugin.class.php:109
 #: plugins/cvstracker/common/cvstrackerPlugin.class.php:109
@@ -1184,21 +1178,21 @@
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:51
 #: www/stats/lastlogins.php:50 www/stats/users_graph.php:85
 #: www/stats/views_graph.php:105 www/tracker/include/ArtifactHtml.class.php:46
-#: www/tracker/include/ArtifactTypeHtml.class.php:201
+#: www/tracker/include/ArtifactTypeHtml.class.php:203
 msgid "Date"
 msgstr ""
 
 #: common/forum/ForumHTML.class.php:66 common/include/Navigation.class.php:367
-#: www/my/dashboard.php:63 www/my/diary.php:181 www/pm/browse_task.php:233
+#: www/my/dashboard.php:63 www/my/diary.php:181 www/pm/browse_task.php:234
 #: www/pm/include/ProjectTaskHTML.class.php:115
 #: www/pm/include/pm_columns.php:31 www/project/report/index.php:136
 #: www/search/include/renderers/ArtifactHtmlSearchRenderer.class.php:56
 #: www/search/include/renderers/NewsHtmlSearchRenderer.class.php:48
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:49
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:49
-#: www/tracker/admin/form-customizelist.php:42 www/tracker/browse.php:275
-#: www/tracker/browse.php:663 www/tracker/item.php:295
-#: www/tracker/query.php:197 www/tracker/query.php:381
+#: www/tracker/admin/form-customizelist.php:42 www/tracker/browse.php:281
+#: www/tracker/browse.php:673 www/tracker/item.php:318
+#: www/tracker/query.php:199 www/tracker/query.php:383
 msgid "Summary"
 msgstr ""
 
@@ -1235,13 +1229,13 @@
 #: common/forum/ForumHTML.class.php:115 common/forum/ForumHTML.class.php:122
 #: plugins/mailman/www/mailman_utils.php:208
 #: plugins/mailman/www/mailman_utils.php:211 www/frs/include/frs_utils.php:77
-#: www/mail/admin/index.php:285 www/mail/mail_utils.php:52
-#: www/news/news_utils.php:53 www/pm/include/ProjectGroupHTML.class.php:101
+#: www/mail/admin/index.php:291 www/mail/mail_utils.php:52
+#: www/news/news_utils.php:52 www/pm/include/ProjectGroupHTML.class.php:101
 #: www/pm/include/ProjectGroupHTML.class.php:107
-#: www/scm/include/scm_utils.php:51 www/survey/include/SurveyHTML.class.php:65
+#: www/scm/include/scm_utils.php:90 www/survey/include/SurveyHTML.class.php:65
 #: www/survey/include/SurveyHTML.class.php:90 www/tracker/admin/tracker.php:28
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:52
-#: www/tracker/include/ArtifactTypeHtml.class.php:799 www/tracker/ind.php:44
+#: www/tracker/include/ArtifactTypeHtml.class.php:801 www/tracker/ind.php:44
 msgid "Administration"
 msgstr ""
 
@@ -1249,7 +1243,7 @@
 msgid "-tooltip:forum:admin"
 msgstr ""
 
-#: common/forum/ForumHTML.class.php:141 www/forum/monitor.php:59
+#: common/forum/ForumHTML.class.php:141
 msgid "Stop Monitoring"
 msgstr ""
 
@@ -1307,10 +1301,9 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:156
 #: www/admin/admin_table.php:58 www/admin/admin_table.php:155
 #: www/admin/admin_table.php:214 www/forum/admin/index.php:428
-#: www/forum/monitor.php:65 www/my/rmproject.php:98
-#: www/people/editprofile.php:158 www/people/editprofile.php:217
-#: www/pm/templates/time_tracking.php:40 www/register/index.php:281
-#: www/reporting/timeadd.php:177
+#: www/my/rmproject.php:98 www/people/editprofile.php:158
+#: www/people/editprofile.php:217 www/pm/templates/time_tracking.php:40
+#: www/register/index.php:326 www/reporting/timeadd.php:177
 msgid "Cancel"
 msgstr ""
 
@@ -1450,11 +1443,11 @@
 msgid "FRSFile Appears to be invalid"
 msgstr ""
 
-#: common/frs/FRSFile.class.php:148 common/frs/FRSFile.class.php:435
+#: common/frs/FRSFile.class.php:148 common/frs/FRSFile.class.php:436
 msgid "That filename already exists in this project space"
 msgstr ""
 
-#: common/frs/FRSFile.class.php:185 common/frs/FRSFile.class.php:441
+#: common/frs/FRSFile.class.php:186 common/frs/FRSFile.class.php:442
 msgid "File cannot be moved to the permanent location"
 msgstr ""
 
@@ -1516,26 +1509,25 @@
 msgid "Database initialisation error:"
 msgstr ""
 
-#: common/include/Error.class.php:125 common/include/Group.class.php:445
-#: common/include/Group.class.php:527
+#: common/include/Error.class.php:133 common/include/Group.class.php:444
+#: common/include/Group.class.php:526
 msgid "Permission denied."
 msgstr ""
 
-#: common/include/Error.class.php:142 common/include/User.class.php:279
-#: www/tracker/tracker.php:103
+#: common/include/Error.class.php:150 common/include/User.class.php:279
 msgid "Invalid Email Address"
 msgstr ""
 
-#: common/include/Error.class.php:146
+#: common/include/Error.class.php:154
 msgid "(none given)"
 msgstr ""
 
-#: common/include/Error.class.php:167
+#: common/include/Error.class.php:175
 #, php-format
 msgid "Error On Update: %s"
 msgstr ""
 
-#: common/include/Error.class.php:208
+#: common/include/Error.class.php:218
 msgid "Missing Parameters"
 msgstr ""
 
@@ -1581,62 +1573,62 @@
 "Your project description is too long. Please make it smaller than 256 bytes."
 msgstr ""
 
-#: common/include/Group.class.php:364
+#: common/include/Group.class.php:363
 #, php-format
 msgid "ERROR: Could not create group: %s"
 msgstr ""
 
-#: common/include/Group.class.php:371
+#: common/include/Group.class.php:370
 #, php-format
 msgid "ERROR: Could not get group id: %s"
 msgstr ""
 
-#: common/include/Group.class.php:401
+#: common/include/Group.class.php:400
 #, php-format
 msgid "ERROR: Could not add admin to newly created group: %s"
 msgstr ""
 
-#: common/include/Group.class.php:440 common/include/Group.class.php:522
+#: common/include/Group.class.php:439 common/include/Group.class.php:521
 msgid "Could not get permission."
 msgstr ""
 
-#: common/include/Group.class.php:462
+#: common/include/Group.class.php:461
 #, php-format
 msgid "ERROR: DB: Could not change group properties: %s"
 msgstr ""
 
-#: common/include/Group.class.php:545
+#: common/include/Group.class.php:544
 #, php-format
 msgid "New Doc Address Appeared Invalid: %s"
 msgid_plural "New Doc Addresses Appeared Invalid: %s"
 msgstr[0] ""
 msgstr[1] ""
 
-#: common/include/Group.class.php:598
+#: common/include/Group.class.php:597
 msgid ""
 "Error updating project information: Maximum length for Project Description "
 "is 255 chars."
 msgstr ""
 
-#: common/include/Group.class.php:646
+#: common/include/Group.class.php:645
 #, php-format
 msgid "Error updating project information: %s"
 msgstr ""
 
-#: common/include/Group.class.php:734
+#: common/include/Group.class.php:733
 msgid "Invalid Status Change"
 msgstr ""
 
-#: common/include/Group.class.php:745
+#: common/include/Group.class.php:744
 #, php-format
 msgid "ERROR: DB: Could not change group status: %s"
 msgstr ""
 
-#: common/include/Group.class.php:956
+#: common/include/Group.class.php:955
 msgid "Couldn't insert SCM_BOX to database"
 msgstr ""
 
-#: common/include/Group.class.php:960
+#: common/include/Group.class.php:959
 msgid "SCM Box can't be empty"
 msgstr ""
 
@@ -1756,15 +1748,15 @@
 msgid "Wrong destination role"
 msgstr ""
 
-#: common/include/Group.class.php:2436
+#: common/include/Group.class.php:2438
 msgid "Group already active"
 msgstr ""
 
-#: common/include/Group.class.php:2696 common/include/Group.class.php:2775
+#: common/include/Group.class.php:2698 common/include/Group.class.php:2779
 msgid "Group does not have any administrators."
 msgstr ""
 
-#: common/include/Group.class.php:2704
+#: common/include/Group.class.php:2706
 #, php-format
 msgid ""
 "Your project registration for %4$s has been approved.\n"
@@ -1800,12 +1792,12 @@
 "-- the %4$s crew"
 msgstr ""
 
-#: common/include/Group.class.php:2740
+#: common/include/Group.class.php:2743
 #, php-format
 msgid "%1$s Project Approved"
 msgstr ""
 
-#: common/include/Group.class.php:2782
+#: common/include/Group.class.php:2786
 #, php-format
 msgid ""
 "Your project registration for %3$s has been denied.\n"
@@ -1817,20 +1809,20 @@
 "\n"
 msgstr ""
 
-#: common/include/Group.class.php:2801
+#: common/include/Group.class.php:2806
 #, php-format
 msgid "%1$s Project Denied"
 msgstr ""
 
-#: common/include/Group.class.php:2833
+#: common/include/Group.class.php:2839
 msgid "Could not find user who has submitted the project."
 msgstr ""
 
-#: common/include/Group.class.php:2840
+#: common/include/Group.class.php:2846
 msgid "There is no administrator to send the mail to."
 msgstr ""
 
-#: common/include/Group.class.php:2852
+#: common/include/Group.class.php:2858
 #, php-format
 msgid ""
 "New %1$s Project Submitted\n"
@@ -1839,12 +1831,12 @@
 "Submitted Description: %3$s\n"
 msgstr ""
 
-#: common/include/Group.class.php:2862
+#: common/include/Group.class.php:2868
 #, php-format
 msgid "Submitter: %1$s (%2$s)\n"
 msgstr ""
 
-#: common/include/Group.class.php:2868
+#: common/include/Group.class.php:2874
 #, php-format
 msgid ""
 "\n"
@@ -1852,12 +1844,12 @@
 "%1$s"
 msgstr ""
 
-#: common/include/Group.class.php:2872 common/include/Group.class.php:2887
+#: common/include/Group.class.php:2879 common/include/Group.class.php:2900
 #, php-format
 msgid "New %1$s Project Submitted"
 msgstr ""
 
-#: common/include/Group.class.php:2880
+#: common/include/Group.class.php:2888
 #, php-format
 msgid ""
 "New %1$s Project Submitted\n"
@@ -1869,43 +1861,43 @@
 "notified of their decision."
 msgstr ""
 
-#: common/include/Group.class.php:2905
+#: common/include/Group.class.php:2919
 msgid "Group name is too short"
 msgstr ""
 
-#: common/include/Group.class.php:2908
+#: common/include/Group.class.php:2922
 msgid "Group name is too long"
 msgstr ""
 
-#: common/include/Group.class.php:2911
+#: common/include/Group.class.php:2925
 msgid "Group name already taken"
 msgstr ""
 
-#: common/include/Group.class.php:3002
+#: common/include/Group.class.php:3016
 #, php-format
 msgid "ERROR - Could Not Update Group Unix Status: %s"
 msgstr ""
 
-#: common/include/Group.class.php:3061
+#: common/include/Group.class.php:3075
 msgid "Error: Enable to get users from group"
 msgstr ""
 
-#: common/include/Group.class.php:3082
+#: common/include/Group.class.php:3096
 #, php-format
 msgid "ERROR - Could Not Update Group DocmanCreateOnline Status: %s"
 msgstr ""
 
-#: common/include/Group.class.php:3100
+#: common/include/Group.class.php:3114
 #, php-format
 msgid "ERROR - Could Not Update Group UseWebdab Status: %s"
 msgstr ""
 
-#: common/include/Group.class.php:3118
+#: common/include/Group.class.php:3132
 #, php-format
 msgid "ERROR - Could Not Update Group UseDocmanSearch Status: %s"
 msgstr ""
 
-#: common/include/Group.class.php:3136
+#: common/include/Group.class.php:3150
 #, php-format
 msgid "ERROR - Could Not Update Group force_docman_reindex %s"
 msgstr ""
@@ -1925,33 +1917,38 @@
 msgstr ""
 
 #: common/include/GroupJoinRequest.class.php:228
-#: common/include/GroupJoinRequest.class.php:254
-#: common/include/GroupJoinRequest.class.php:268
 #, php-format
-msgid "Request to Join Project %1$s"
+msgid "Request to Join Project %1$s from %2$s (%3$s)"
 msgstr ""
 
-#: common/include/GroupJoinRequest.class.php:230
+#: common/include/GroupJoinRequest.class.php:234
 #, php-format
 msgid ""
-"%1$s has requested to join your project. \n"
-"You can approve this request here: %2$s \n"
+"%1$s (%2$s) has requested to join your project. \n"
+"You can approve this request here: %3$s \n"
 "\n"
 "Comments by the user:\n"
-"%3$s"
+"%4$s"
 msgstr ""
 
-#: common/include/GroupJoinRequest.class.php:255
+#: common/include/GroupJoinRequest.class.php:259
+#: common/include/GroupJoinRequest.class.php:273
 #, php-format
+msgid "Request to Join Project %1$s"
+msgstr ""
+
+#: common/include/GroupJoinRequest.class.php:260
+#, php-format
 msgid "Your request to join the %1$s project was denied by an administrator."
 msgstr ""
 
-#: common/include/GroupJoinRequest.class.php:269
+#: common/include/GroupJoinRequest.class.php:274
 #, php-format
 msgid "Your request to join the %1$s project was granted by an administrator."
 msgstr ""
 
 #: common/include/Navigation.class.php:184
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:228
 #: www/themes/evolvis/Theme.class.php:118
 msgid "Log Out"
 msgstr ""
@@ -1962,6 +1959,7 @@
 msgstr ""
 
 #: common/include/Navigation.class.php:195
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:232
 #: www/themes/evolvis/Theme.class.php:137
 msgid "Log In"
 msgstr ""
@@ -2025,9 +2023,9 @@
 #: common/include/Navigation.class.php:280 www/frs/include/frs_utils.php:76
 #: www/pm/include/ProjectGroupHTML.class.php:97
 #: www/pm/include/ProjectGroupHTML.class.php:105
-#: www/scm/include/scm_utils.php:50
+#: www/scm/include/scm_utils.php:86
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:48
-#: www/tracker/include/ArtifactTypeHtml.class.php:774
+#: www/tracker/include/ArtifactTypeHtml.class.php:776
 msgid "Reporting"
 msgstr ""
 
@@ -2184,78 +2182,78 @@
 "obviously I can't. Sorry."
 msgstr ""
 
-#: common/include/RBAC.php:1158
+#: common/include/RBAC.php:1153
 #, php-format
 msgid "%s (global role)"
 msgstr ""
 
-#: common/include/RBAC.php:1162
+#: common/include/RBAC.php:1157
 #, php-format
 msgid "%s (in project %s)"
 msgstr ""
 
-#: common/include/RBAC.php:1486
+#: common/include/RBAC.php:1481
 msgid "Anonymous/not logged in"
 msgstr ""
 
-#: common/include/RBAC.php:1534
+#: common/include/RBAC.php:1529
 msgid "Any user logged in"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:122
+#: common/include/SCMPlugin.class.php:127
 msgid "Unimplemented SCM plugin."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:126
+#: common/include/SCMPlugin.class.php:131
 msgid "Instructions for anonymous access for unimplemented SCM plugin."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:130
+#: common/include/SCMPlugin.class.php:135
 msgid "Instructions for read-write access for unimplemented SCM plugin."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:134
+#: common/include/SCMPlugin.class.php:139
 msgid "Instructions for snapshot access for unimplemented SCM plugin."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:139
-#: common/include/SCMPlugin.class.php:153
+#: common/include/SCMPlugin.class.php:144
+#: common/include/SCMPlugin.class.php:158
 msgid "Repository Browser"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:141
-#: common/include/SCMPlugin.class.php:155
+#: common/include/SCMPlugin.class.php:146
+#: common/include/SCMPlugin.class.php:160
 msgid "Browsing the SCM tree is not yet implemented for this SCM plugin."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:145
+#: common/include/SCMPlugin.class.php:150
 msgid "Not implemented yet"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:162
+#: common/include/SCMPlugin.class.php:167
 #: plugins/scmcvs/common/CVSPlugin.class.php:148
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:193
 #: plugins/scmsvn/common/SVNPlugin.class.php:189
 msgid "Repository Statistics"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:164
+#: common/include/SCMPlugin.class.php:169
 msgid "Not implemented for this SCM plugin yet."
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:178
+#: common/include/SCMPlugin.class.php:183
 msgid "Repository Information"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:197
+#: common/include/SCMPlugin.class.php:202
 msgid "Repository History"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:198
+#: common/include/SCMPlugin.class.php:203
 msgid "Data about current and past states of the repository"
 msgstr ""
 
-#: common/include/SCMPlugin.class.php:227
+#: common/include/SCMPlugin.class.php:232
 msgid "Enable Anonymous Read Access"
 msgstr ""
 
@@ -2591,41 +2589,43 @@
 msgid "Year-Month-Day with Norwegian labels"
 msgstr ""
 
-#: common/include/datepick.php:267
+#: common/include/datepick.php:266
 msgid "locale-dependent-default-datepick-format"
 msgstr ""
 
-#: common/include/descriptive.php:78
+#: common/include/descriptive.php:80
 msgid "Sort comments antichronologically"
 msgstr ""
 
-#: common/include/descriptive.php:81
+#: common/include/descriptive.php:83
 msgid "Sort comments chronologically"
 msgstr ""
 
-#: common/include/descriptive.php:131
-msgid "Sender"
+#: common/include/descriptive.php:134
+#: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:48
+#: www/tracker/admin/form-workflow.php:80
+msgid "From"
 msgstr ""
 
-#: common/include/descriptive.php:228 common/include/descriptive.php:229
+#: common/include/descriptive.php:231 common/include/descriptive.php:232
 msgid "Click to edit"
 msgstr ""
 
-#: common/include/descriptive.php:284
+#: common/include/descriptive.php:287
 msgid "Write a comment"
 msgstr ""
 
-#: common/include/descriptive.php:540
+#: common/include/descriptive.php:543
 #, php-format
 msgid "%s (Task)"
 msgstr ""
 
-#: common/include/descriptive.php:545
+#: common/include/descriptive.php:548
 #, php-format
 msgid "%s (Bug/FR)"
 msgstr ""
 
-#: common/include/descriptive.php:550
+#: common/include/descriptive.php:553
 #, php-format
 msgid "%s (Forum Message)"
 msgstr ""
@@ -2634,36 +2634,36 @@
 msgid "Exiting with error"
 msgstr ""
 
-#: common/include/exit.php:58
+#: common/include/exit.php:62
 msgid ""
 "Permission denied. This project's administrator will have to grant you "
 "permission to view this page."
 msgstr ""
 
-#: common/include/exit.php:71
+#: common/include/exit.php:75
 msgid "You are not logged in."
 msgstr ""
 
-#: common/include/exit.php:83
+#: common/include/exit.php:87
 msgid ""
 "Permission denied. No project was chosen, project does not exist or you "
 "can't access it."
 msgstr ""
 
-#: common/include/exit.php:97
+#: common/include/exit.php:101
 msgid "Missing required parameters : "
 msgstr ""
 
-#: common/include/exit.php:102
+#: common/include/exit.php:106
 #, php-format
 msgid "Missing required parameters."
 msgstr ""
 
-#: common/include/exit.php:120
+#: common/include/exit.php:124
 msgid "The Site Administrator has turned off this feature."
 msgstr ""
 
-#: common/include/exit.php:129
+#: common/include/exit.php:133
 msgid "You Attempted To Double-submit this item. Please avoid double-clicking."
 msgstr ""
 
@@ -2698,35 +2698,35 @@
 msgid "Package JPGraph not installed"
 msgstr ""
 
-#: common/include/jpgraph.php:48
+#: common/include/jpgraph.php:50
 msgid "Cannot display error picture: called recursively! Backtrace:"
 msgstr ""
 
-#: common/include/jpgraph.php:49
+#: common/include/jpgraph.php:51
 msgid "Cannot display error picture, headers already sent! Backtrace:"
 msgstr ""
 
-#: common/include/jpgraph.php:66
+#: common/include/jpgraph.php:68
 #, php-format
 msgid "%s Error:"
 msgstr ""
 
-#: common/include/jpgraph.php:80
+#: common/include/jpgraph.php:83
 msgid "A Forge error occured; maybe you’re not logged in or lack permissions."
 msgstr ""
 
-#: common/include/jpgraph.php:91
+#: common/include/jpgraph.php:94
 msgid ""
 "A fatal JpGraph error occured; maybe your query did not yield any data "
 "points."
 msgstr ""
 
-#: common/include/jpgraph.php:93
+#: common/include/jpgraph.php:96
 msgid ""
 "A non-fatal JpGraph error occured; we’re nevertheless halting execution."
 msgstr ""
 
-#: common/include/pre.php:281
+#: common/include/pre.php:279
 #, php-format
 msgid "Posted data is too large. %1$s exceeds the maximum size of %2$s"
 msgstr ""
@@ -2734,7 +2734,7 @@
 #: common/include/rbac_texts.php:43 common/include/rbac_texts.php:55
 #: common/include/rbac_texts.php:58 common/include/rbac_texts.php:60
 #: common/include/rbac_texts.php:62
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:215
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:232
 msgid "No administrative access"
 msgstr ""
 
@@ -2761,7 +2761,7 @@
 msgstr ""
 
 #: common/include/rbac_texts.php:50
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:195
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:212
 msgid "Read access"
 msgstr ""
 
@@ -2975,15 +2975,15 @@
 
 #: common/include/rbac_texts.php:212 common/include/rbac_texts.php:214
 #: common/include/rbac_texts.php:216 common/include/rbac_texts.php:218
-#: common/widget/Widget_MyArtifacts.class.php:116 www/admin/pluginman.php:176
+#: common/widget/Widget_MyArtifacts.class.php:127 www/admin/pluginman.php:176
 #: www/admin/pluginman.php:195 www/admin/pluginman.php:202
 #: www/admin/pluginman.php:203 www/include/html.php:314
 #: www/include/html.php:422 www/include/html.php:514 www/include/html.php:531
 #: www/include/html.php:565 www/include/html.php:606 www/include/html.php:645
 #: www/pm/ganttpage.php:62 www/tracker/include/ArtifactHtml.class.php:64
-#: www/tracker/include/ArtifactTypeHtml.class.php:428
-#: www/tracker/include/ArtifactTypeHtml.class.php:489
-#: www/tracker/include/ArtifactTypeHtml.class.php:721
+#: www/tracker/include/ArtifactTypeHtml.class.php:430
+#: www/tracker/include/ArtifactTypeHtml.class.php:491
+#: www/tracker/include/ArtifactTypeHtml.class.php:723
 msgid "None"
 msgstr ""
 
@@ -3025,9 +3025,9 @@
 
 #: common/include/session.php:158 common/include/session.php:191
 #: common/include/session.php:242
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:131
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:187
-#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:297
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:140
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:196
+#: plugins/ldapextauth/include/LdapExtAuthPlugin.class.php:306
 msgid "Invalid Password Or User Name"
 msgstr ""
 
@@ -3047,42 +3047,42 @@
 msgid "Account Not Active"
 msgstr ""
 
-#: common/include/session.php:419
+#: common/include/session.php:430
 msgid "Your account is no longer active ; you have been disconnected"
 msgstr ""
 
-#: common/include/session.php:472
+#: common/include/session.php:483
 #, php-format
 msgid ""
 "Permission denied. The %s administrators will have to grant you permission "
 "to view this page."
 msgstr ""
 
-#: common/include/session.php:528
+#: common/include/session.php:539
 msgid "Could not fetch user session data"
 msgstr ""
 
-#: common/include/session.php:556
+#: common/include/session.php:567
 msgid "No admin users ?"
 msgstr ""
 
-#: common/include/utils.php:178
+#: common/include/utils.php:180
 msgid "UTF-8"
 msgstr ""
 
-#: common/include/utils.php:542
+#: common/include/utils.php:544
 msgid "Priority Colors"
 msgstr ""
 
-#: common/include/utils.php:1242
+#: common/include/utils.php:1244
 msgid "Error: a mailing list with the same email address already exists."
 msgstr ""
 
-#: common/include/utils.php:1258
+#: common/include/utils.php:1260
 msgid "Error: a forum with the same email address already exists."
 msgstr ""
 
-#: common/include/utils.php:1500
+#: common/include/utils.php:1497
 msgid "Internal Error: Could not read from random device"
 msgstr ""
 
@@ -3151,7 +3151,7 @@
 msgid "Error Getting mailing list"
 msgstr ""
 
-#: common/mail/MailingList.class.php:388
+#: common/mail/MailingList.class.php:389
 msgid "Sorry, this mailing list is special and must not be deleted."
 msgstr ""
 
@@ -3175,11 +3175,11 @@
 msgid "All Fields Are Required."
 msgstr ""
 
-#: common/pm/ProjectTask.class.php:731
+#: common/pm/ProjectTask.class.php:738
 msgid "Circular Dependency Detected'"
 msgstr ""
 
-#: common/pm/ProjectTask.class.php:1216
+#: common/pm/ProjectTask.class.php:1238
 #, php-format
 msgid "[%1$s - %2$s] [Task #%3$d] "
 msgstr ""
@@ -3404,8 +3404,8 @@
 #: plugins/mailman/www/admin/index.php:208 plugins/mailman/www/index.php:26
 #: plugins/mailman/www/index.php:33 plugins/mailman/www/index.php:36
 #: plugins/mailman/www/index.php:48 www/forum/admin/pendingmsgdetail.php:51
-#: www/forum/admin/pendingmsgdetail.php:53 www/mail/admin/index.php:154
-#: www/mail/admin/index.php:250 www/snippet/download.php:45
+#: www/forum/admin/pendingmsgdetail.php:53 www/mail/admin/index.php:153
+#: www/mail/admin/index.php:249 www/snippet/download.php:45
 #: www/survey/admin/question.php:64 www/survey/admin/question.php:66
 #: www/survey/admin/show_results.php:69 www/survey/admin/show_results.php:73
 #: www/survey/admin/show_results.php:84 www/survey/admin/show_results.php:86
@@ -3429,8 +3429,8 @@
 msgid "Artifact: Only group members can view private artifact types"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:206 common/tracker/Artifact.class.php:749
-#: www/tracker/tracker.php:96 www/tracker/tracker.php:294
+#: common/tracker/Artifact.class.php:206 common/tracker/Artifact.class.php:751
+#: www/tracker/tracker.php:96 www/tracker/tracker.php:292
 msgid ""
 "Artifact: This ArtifactType Does Not Allow Anonymous Submissions. Please "
 "Login."
@@ -3444,23 +3444,23 @@
 msgid "Artifact: Message Body Is Required"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:240
+#: common/tracker/Artifact.class.php:241
 msgid "Artifact: Error remapping status"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:582
+#: common/tracker/Artifact.class.php:583
 msgid "SetMonitor::Valid Email Address Required"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:600
+#: common/tracker/Artifact.class.php:601
 msgid "Now Monitoring Artifact"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:610
+#: common/tracker/Artifact.class.php:611
 msgid "Artifact Monitoring Deactivated"
 msgstr ""
 
-#: common/tracker/Artifact.class.php:1141
+#: common/tracker/Artifact.class.php:1146
 msgid "Nothing Changed - Update Cancelled"
 msgstr ""
 
@@ -3473,72 +3473,67 @@
 msgid "ArtifactCanned: name and assignee are Required"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:108
-#: common/tracker/ArtifactExtraField.class.php:378
+#: common/tracker/ArtifactExtraField.class.php:120
+#: common/tracker/ArtifactExtraField.class.php:362
 msgid "a field name is required"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:124
-#: common/tracker/ArtifactExtraField.class.php:387
-msgid "Field name already exists"
+#: common/tracker/ArtifactExtraField.class.php:136
+#: common/tracker/ArtifactExtraField.class.php:371
+#, php-format
+msgid "Field name \"%s\" already exists"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:186
-#: common/tracker/ArtifactExtraField.class.php:192
-#: www/tracker/admin/updates.php:100 www/tracker/admin/updates.php:199
-msgid "Error inserting an element"
-msgstr ""
-
-#: common/tracker/ArtifactExtraField.class.php:320
+#: common/tracker/ArtifactExtraField.class.php:309
 #: www/tracker/admin/form-addextrafield.php:125
 msgid "Select Box"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:321
+#: common/tracker/ArtifactExtraField.class.php:310
 #: www/tracker/admin/form-addextrafield.php:126
 msgid "Check Box"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:322
+#: common/tracker/ArtifactExtraField.class.php:311
 #: www/tracker/admin/form-addextrafield.php:127
 msgid "Radio Buttons"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:323
+#: common/tracker/ArtifactExtraField.class.php:312
 #: www/tracker/admin/form-addextrafield.php:128
 msgid "Text Field"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:324
+#: common/tracker/ArtifactExtraField.class.php:313
 #: www/tracker/admin/form-addextrafield.php:129
 msgid "Multi-Select Box"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:325
+#: common/tracker/ArtifactExtraField.class.php:314
 #: www/tracker/admin/form-addextrafield.php:130
 msgid "Text Area"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:327
+#: common/tracker/ArtifactExtraField.class.php:316
 msgid "Relation"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:328
+#: common/tracker/ArtifactExtraField.class.php:317
 msgid "Integer"
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:496
+#: common/tracker/ArtifactExtraField.class.php:480
 msgid ""
 "The alias (field name) contains invalid characters. Only letters, numbers, "
 "commercial at (@), underscores (_) and hyphen (-) allowed."
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:499
+#: common/tracker/ArtifactExtraField.class.php:483
 #, php-format
 msgid "'%1$s' is a reserved alias. Please provide another name."
 msgstr ""
 
-#: common/tracker/ArtifactExtraField.class.php:583
+#: common/tracker/ArtifactExtraField.class.php:565
 msgid "Out of range value"
 msgstr ""
 
@@ -3564,35 +3559,35 @@
 msgstr ""
 
 #: common/tracker/ArtifactQuery.class.php:150
-#: common/tracker/ArtifactQuery.class.php:682
+#: common/tracker/ArtifactQuery.class.php:667
 msgid ""
 "You must have tracker admin rights to set or update a project level query."
 msgstr ""
 
-#: common/tracker/ArtifactQuery.class.php:678
+#: common/tracker/ArtifactQuery.class.php:663
 msgid "Query does not exist"
 msgstr ""
 
-#: common/tracker/ArtifactType.class.php:207
-#: common/tracker/ArtifactType.class.php:978
+#: common/tracker/ArtifactType.class.php:208
+#: common/tracker/ArtifactType.class.php:961
 msgid ""
 "ArtifactType: Name, Description, Due Period, and Status Timeout are required"
 msgstr ""
 
-#: common/tracker/ArtifactType.class.php:214
-#: common/tracker/ArtifactType.class.php:996
+#: common/tracker/ArtifactType.class.php:215
+#: common/tracker/ArtifactType.class.php:979
 msgid "E-mail address(es) appeared invalid"
 msgstr ""
 
-#: common/tracker/ArtifactType.class.php:567
+#: common/tracker/ArtifactType.class.php:568
 msgid "Now Monitoring Tracker"
 msgstr ""
 
-#: common/tracker/ArtifactType.class.php:577
+#: common/tracker/ArtifactType.class.php:578
 msgid "Tracker Monitoring Deactivated"
 msgstr ""
 
-#: common/tracker/ArtifactType.class.php:989
+#: common/tracker/ArtifactType.class.php:972
 msgid "Tracker name already used"
 msgstr ""
 
@@ -3621,32 +3616,32 @@
 #: www/pm/include/ProjectView.class.php:238
 #: www/project/admin/editimages.php:237 www/project/admin/roledelete.php:85
 #: www/project/admin/roleedit.php:359 www/project/request.php:69
-#: www/register/index.php:280 www/survey/include/SurveyHTML.class.php:551
+#: www/register/index.php:325 www/survey/include/SurveyHTML.class.php:551
 #: www/tracker/admin/form-addcanned.php:69
 #: www/tracker/admin/form-addextrafield.php:145
 #: www/tracker/admin/form-addextrafieldoption.php:104
-#: www/tracker/admin/form-clonetracker.php:59
+#: www/tracker/admin/form-clonetracker.php:89
 #: www/tracker/admin/form-customizelist.php:77
 #: www/tracker/admin/form-deleteextrafieldelement.php:63
 #: www/tracker/admin/form-extrafieldcopy.php:97
 #: www/tracker/admin/form-updatecanned.php:49
 #: www/tracker/admin/form-updateextrafield.php:79
 #: www/tracker/admin/form-updateextrafieldelement.php:67
-#: www/tracker/admin/form-updatetracker.php:80
+#: www/tracker/admin/form-updatetracker.php:83
 #: www/tracker/admin/form-uploadtemplate.php:39
-#: www/tracker/admin/form-workflow.php:121
+#: www/tracker/admin/form-workflow.php:158
 #: www/tracker/admin/form-workflow_roles.php:76 www/tracker/admin/ind.php:165
 msgid "Submit"
 msgstr ""
 
 #: common/widget/WidgetLayoutManager.class.php:242
-#: common/widget/WidgetLayoutManager.class.php:246 www/include/html.php:915
-#: www/include/project_home.php:73 www/widgets/widgets.php:73
+#: common/widget/WidgetLayoutManager.class.php:246 www/include/html.php:921
+#: www/include/project_home.php:67 www/widgets/widgets.php:73
 msgid "Add widgets"
 msgstr ""
 
 #: common/widget/WidgetLayoutManager.class.php:243
-#: common/widget/WidgetLayoutManager.class.php:247 www/include/html.php:919
+#: common/widget/WidgetLayoutManager.class.php:247 www/include/html.php:925
 #: www/widgets/widgets.php:71
 msgid "Customize layout"
 msgstr ""
@@ -3711,11 +3706,11 @@
 msgid "assigned to or submitted by me [AS]"
 msgstr ""
 
-#: common/widget/Widget_MyArtifacts.class.php:114
+#: common/widget/Widget_MyArtifacts.class.php:125
 msgid "You have no artifacts"
 msgstr ""
 
-#: common/widget/Widget_MyArtifacts.class.php:264
+#: common/widget/Widget_MyArtifacts.class.php:275
 msgid "List artifacts you have submitted or assigned to you, by project."
 msgstr ""
 
@@ -3912,15 +3907,15 @@
 msgid "List the surveys you have not answered."
 msgstr ""
 
-#: common/widget/Widget_MyTasks.class.php:118
+#: common/widget/Widget_MyTasks.class.php:146
 msgid "No task yet"
 msgstr ""
 
-#: common/widget/Widget_MyTasks.class.php:122
+#: common/widget/Widget_MyTasks.class.php:150
 msgid "My Tasks"
 msgstr ""
 
-#: common/widget/Widget_MyTasks.class.php:141
+#: common/widget/Widget_MyTasks.class.php:169
 msgid "List the tasks assigned to you."
 msgstr ""
 
@@ -4002,13 +3997,13 @@
 msgstr ""
 
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:64
-#: www/tracker/include/ArtifactTypeHtml.class.php:789 www/tracker/item.php:240
+#: www/tracker/include/ArtifactTypeHtml.class.php:791 www/tracker/item.php:245
 msgid "Monitor"
 msgstr ""
 
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:67
 #: common/widget/Widget_ProjectLatestFileReleases.class.php:143
-#: plugins/mediawiki/www/plugin_admin.php:157 www/new/index.php:119
+#: plugins/mediawiki/www/plugin_admin.php:161 www/new/index.php:119
 msgid "Download"
 msgstr ""
 
@@ -4054,20 +4049,20 @@
 msgid "Project Admins"
 msgstr ""
 
-#: common/widget/Widget_ProjectMembers.class.php:74 www/admin/grouplist.php:95
+#: common/widget/Widget_ProjectMembers.class.php:74
 msgid "Members"
 msgstr ""
 
-#: common/widget/Widget_ProjectMembers.class.php:119
+#: common/widget/Widget_ProjectMembers.class.php:121
 #, php-format
 msgid "View the %1$d Member(s)"
 msgstr ""
 
-#: common/widget/Widget_ProjectMembers.class.php:126
+#: common/widget/Widget_ProjectMembers.class.php:128
 msgid "Request to join"
 msgstr ""
 
-#: common/widget/Widget_ProjectMembers.class.php:133
+#: common/widget/Widget_ProjectMembers.class.php:135
 msgid "List the project members."
 msgstr ""
 
@@ -4140,7 +4135,7 @@
 #: common/widget/Widget_ProjectPublicAreas.class.php:165
 #: plugins/scmgit/www/index.php:23 plugins/scmgit/www/index.php:36
 #: www/register/index.php:221 www/scm/admin/index.php:72
-#: www/scm/admin/index.php:89 www/scm/browser.php:30 www/scm/index.php:32
+#: www/scm/admin/index.php:89 www/scm/browser.php:42 www/scm/index.php:32
 #: www/scm/viewvc.php:134
 msgid "SCM Repository"
 msgstr ""
@@ -4350,7 +4345,7 @@
 #: plugins/scmsvn/common/SVNPlugin.class.php:192 www/admin/useredit.php:234
 #: www/project/admin/editimages.php:267 www/reporting/usersummary.php:101
 #: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:44
-#: www/sendmessage.php:69 www/tracker/include/ArtifactTypeHtml.class.php:200
+#: www/sendmessage.php:69 www/tracker/include/ArtifactTypeHtml.class.php:202
 msgid "Name"
 msgstr ""
 
@@ -4432,7 +4427,7 @@
 msgstr ""
 
 #: plugins/contribtracker/common/ContribTrackerPlugin.class.php:112
-#: www/project/admin/massfinish.php:80 www/project/admin/users.php:316
+#: www/project/admin/massfinish.php:80 www/project/admin/users.php:317
 msgid "Role"
 msgstr ""
 
@@ -5391,10 +5386,11 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:233
 #: plugins/mailman/www/admin/index.php:148
 #: plugins/mailman/www/admin/index.php:180 www/admin/groupedit.php:159
-#: www/admin/groupedit.php:180 www/forum/admin/index.php:109
+#: www/admin/groupedit.php:180 www/admin/grouplist.php:194
+#: www/admin/grouplist.php:197 www/forum/admin/index.php:109
 #: www/forum/admin/index.php:114 www/forum/admin/index.php:153
 #: www/forum/admin/index.php:158 www/forum/admin/index.php:237
-#: www/mail/admin/index.php:192 www/mail/admin/index.php:223
+#: www/mail/admin/index.php:191 www/mail/admin/index.php:222
 #: www/people/editprofile.php:247 www/pm/admin/index.php:288
 #: www/pm/admin/index.php:330 www/survey/admin/show_results_aggregate.php:193
 #: www/survey/include/SurveyHTML.class.php:206
@@ -5408,10 +5404,11 @@
 #: plugins/globalsearch/common/globalsearch_edit_utils.php:233
 #: plugins/mailman/www/admin/index.php:149
 #: plugins/mailman/www/admin/index.php:181 www/admin/groupedit.php:158
-#: www/admin/groupedit.php:179 www/forum/admin/index.php:110
+#: www/admin/groupedit.php:179 www/admin/grouplist.php:194
+#: www/admin/grouplist.php:197 www/forum/admin/index.php:110
 #: www/forum/admin/index.php:115 www/forum/admin/index.php:154
 #: www/forum/admin/index.php:159 www/forum/admin/index.php:238
-#: www/mail/admin/index.php:193 www/mail/admin/index.php:224
+#: www/mail/admin/index.php:192 www/mail/admin/index.php:223
 #: www/people/editprofile.php:246 www/pm/admin/index.php:289
 #: www/pm/admin/index.php:331 www/survey/admin/show_results_aggregate.php:207
 #: www/survey/include/SurveyHTML.class.php:207
@@ -6046,7 +6043,7 @@
 #: plugins/mailman/include/mailmanPlugin.class.php:155
 #: www/admin/globalroleedit.php:150 www/admin/globalroleedit.php:165
 #: www/admin/globalroleedit.php:175 www/include/Layout.class.php:1275
-#: www/my/rmproject.php:92 www/project/admin/users.php:360
+#: www/my/rmproject.php:92 www/project/admin/users.php:364
 msgid "Remove"
 msgstr ""
 
@@ -6078,7 +6075,7 @@
 msgid "Mailman plugin"
 msgstr ""
 
-#: plugins/mailman/www/admin/deletelist.php:52 www/mail/admin/index.php:231
+#: plugins/mailman/www/admin/deletelist.php:52 www/mail/admin/index.php:230
 msgid "Permanently Delete List"
 msgstr ""
 
@@ -6099,7 +6096,7 @@
 #: plugins/mailman/www/admin/index.php:94
 #: plugins/mailman/www/admin/index.php:164 www/mail/admin/index.php:64
 #: www/mail/admin/index.php:91 www/mail/admin/index.php:114
-#: www/mail/admin/index.php:209
+#: www/mail/admin/index.php:208
 msgid "Error getting the list"
 msgstr ""
 
@@ -6115,7 +6112,7 @@
 msgid "List updated"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:116 www/mail/admin/index.php:137
+#: plugins/mailman/www/admin/index.php:116 www/mail/admin/index.php:136
 msgid "Add a Mailing List"
 msgstr ""
 
@@ -6127,48 +6124,48 @@
 "your list to be created."
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:131 www/mail/admin/index.php:154
+#: plugins/mailman/www/admin/index.php:131 www/mail/admin/index.php:153
 msgid "Unable to get the lists"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:144 www/mail/admin/index.php:188
+#: plugins/mailman/www/admin/index.php:144 www/mail/admin/index.php:187
 msgid "Mailing List Name:"
 msgstr ""
 
 #: plugins/mailman/www/admin/index.php:147
 #: plugins/mailman/www/admin/index.php:179 www/forum/admin/index.php:108
-#: www/forum/admin/index.php:157 www/mail/admin/index.php:191
-#: www/mail/admin/index.php:222 www/pm/admin/index.php:287
+#: www/forum/admin/index.php:157 www/mail/admin/index.php:190
+#: www/mail/admin/index.php:221 www/pm/admin/index.php:287
 #: www/pm/admin/index.php:329
 msgid "Is Public?"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:153 www/mail/admin/index.php:197
+#: plugins/mailman/www/admin/index.php:153 www/mail/admin/index.php:196
 msgid "Add This List"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:169 www/mail/admin/index.php:215
+#: plugins/mailman/www/admin/index.php:169 www/mail/admin/index.php:214
 msgid "Mail admin"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:200 www/mail/admin/index.php:244
+#: plugins/mailman/www/admin/index.php:200 www/mail/admin/index.php:243
 msgid "Mailing List Administration"
 msgstr ""
 
 #: plugins/mailman/www/admin/index.php:208 plugins/mailman/www/index.php:48
-#: www/mail/admin/index.php:250
+#: www/mail/admin/index.php:249
 #, php-format
 msgid "Unable to get the list %s"
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:213 www/mail/admin/index.php:255
+#: plugins/mailman/www/admin/index.php:213 www/mail/admin/index.php:260
 #, php-format
 msgid ""
 "You can administrate lists from here. Please note that private lists can "
 "still be viewed by members of your project, but are not listed on %1$s."
 msgstr ""
 
-#: plugins/mailman/www/admin/index.php:216 www/mail/admin/index.php:258
+#: plugins/mailman/www/admin/index.php:216 www/mail/admin/index.php:263
 msgid "Add Mailing List"
 msgstr ""
 
@@ -6233,7 +6230,7 @@
 msgstr ""
 
 #: plugins/mailman/www/mailman_utils.php:112
-#: plugins/mailman/www/mailman_utils.php:172 www/mail/admin/index.php:283
+#: plugins/mailman/www/mailman_utils.php:172 www/mail/admin/index.php:289
 #: www/mail/index.php:91
 msgid "Not activated yet"
 msgstr ""
@@ -6244,7 +6241,6 @@
 msgstr ""
 
 #: plugins/mailman/www/mailman_utils.php:130 www/admin/unsubscribe.php:60
-#: www/forum/monitor.php:65
 msgid "Unsubscribe"
 msgstr ""
 
@@ -6362,63 +6358,79 @@
 msgid "You are not Admin of this project"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:193
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:210
 msgid "Mediawiki read access"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:194
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:211
 msgid "No reading"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:199
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:216
 msgid "Mediawiki write access"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:200
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:217
 msgid "No editing"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:201
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:218
 msgid "Edit existing pages only"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:202
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:219
 msgid "Edit and create pages"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:203
-msgid "Edit, create, move, delete pages"
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:220
+msgid "Edit, create, move pages"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:207
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:224
 msgid "Mediawiki file upload"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:208
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:225
 msgid "No uploading"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:209
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:226
 msgid "Upload permitted"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:210
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:227
 msgid "Upload and re-upload"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:214
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:231
 msgid "Mediawiki administrative tasks"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:216
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:233
 msgid "Edit interface, import XML dumps"
 msgstr ""
 
-#: plugins/mediawiki/common/MediaWikiPlugin.class.php:343
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:237
+msgid "Mediawiki remove pages from history"
+msgstr ""
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:239
+msgid "No irreversible deletion"
+msgstr ""
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:240
+msgid "Delete pages from history and undelete them"
+msgstr ""
+
+#: plugins/mediawiki/common/MediaWikiPlugin.class.php:377
 msgid "MediaWiki Plugin admin"
 msgstr ""
 
-#: plugins/mediawiki/www/LocalSettings.php:58
+#: plugins/mediawiki/mediawiki-skin/FusionForge.php:241
+msgid "Project Summary"
+msgstr ""
+
+#: plugins/mediawiki/www/LocalSettings.php:59
 #, php-format
 msgid ""
 "Mediawiki for project %s not created yet, please wait for a few minutes."
@@ -6428,7 +6440,7 @@
 msgid "wiki"
 msgstr ""
 
-#: plugins/mediawiki/www/frame.php:38
+#: plugins/mediawiki/www/frame.php:40
 msgid "Wiki not created yet, please wait for a few minutes."
 msgstr ""
 
@@ -6487,39 +6499,48 @@
 msgid "Unknown file upload error."
 msgstr ""
 
+#: plugins/mediawiki/www/plugin_admin.php:138
+#, php-format
+msgid "MediaWiki Plugin Admin for %s"
+msgstr ""
+
 #: plugins/mediawiki/www/plugin_admin.php:147
 msgid "Nightly XML dump"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:149
+#: plugins/mediawiki/www/plugin_admin.php:150
 #, php-format
 msgid "<a href=\"%s\">Download</a> the nightly created XML dump (backup) here."
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:156
+#: plugins/mediawiki/www/plugin_admin.php:154
+msgid "XML dumps are not available for private wikis."
+msgstr ""
+
+#: plugins/mediawiki/www/plugin_admin.php:160
 msgid "Current logo:"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:161
+#: plugins/mediawiki/www/plugin_admin.php:165
 msgid "No per-project logo currently installed."
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:169
+#: plugins/mediawiki/www/plugin_admin.php:173
 msgid "Upload a new logo"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:171
+#: plugins/mediawiki/www/plugin_admin.php:175
 msgid ""
 "NOTE: In some browsers you must select the file in the file-upload dialog "
 "and click \"OK\".  Double-clicking doesn't register the file."
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:173
+#: plugins/mediawiki/www/plugin_admin.php:177
 #: www/frs/admin/editrelease.php:287 www/frs/admin/qrs.php:201
 msgid "Upload a new file"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:179
+#: plugins/mediawiki/www/plugin_admin.php:184
 #: www/frs/admin/editrelease.php:302 www/frs/admin/qrs.php:217
 #, php-format
 msgid ""
@@ -6527,24 +6548,24 @@
 "the <a href=\"%2$s\">project's incoming directory</a> (%1$s)."
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:181
+#: plugins/mediawiki/www/plugin_admin.php:186
 #: www/frs/admin/editrelease.php:304 www/frs/admin/qrs.php:219
 msgid ""
 "This direct <tt>sftp://</tt> link only works with some browsers, such as "
 "Konqueror."
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:182
+#: plugins/mediawiki/www/plugin_admin.php:187
 #: www/frs/admin/editrelease.php:292 www/frs/admin/editrelease.php:305
 #: www/frs/admin/qrs.php:220
 msgid "Choose an already uploaded file:"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:188
+#: plugins/mediawiki/www/plugin_admin.php:193
 msgid "… or delete the currently uploaded logo and revert to the site default"
 msgstr ""
 
-#: plugins/mediawiki/www/plugin_admin.php:189
+#: plugins/mediawiki/www/plugin_admin.php:194
 msgid "Upload new logo"
 msgstr ""
 
@@ -7184,7 +7205,7 @@
 #: plugins/scmbzr/common/BzrPlugin.class.php:68
 #: plugins/scmcvs/common/CVSPlugin.class.php:64
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:82
-#: plugins/scmgit/common/GitPlugin.class.php:61
+#: plugins/scmgit/common/GitPlugin.class.php:82
 #: plugins/scmsvn/common/SVNPlugin.class.php:78
 #, php-format
 msgid "<strong>%1$s</strong> commits, <strong>%2$s</strong> adds"
@@ -7232,8 +7253,8 @@
 
 #: plugins/scmbzr/common/BzrPlugin.class.php:108
 #: plugins/scmcvs/common/CVSPlugin.class.php:106
-#: plugins/scmgit/common/GitPlugin.class.php:132
-#: plugins/scmgit/common/GitPlugin.class.php:139
+#: plugins/scmgit/common/GitPlugin.class.php:153
+#: plugins/scmgit/common/GitPlugin.class.php:160
 #: plugins/scmsvn/common/SVNPlugin.class.php:150
 #: plugins/scmsvn/common/SVNPlugin.class.php:157
 msgid "developername"
@@ -7265,7 +7286,7 @@
 "%1$s</tt> VOB in your ClearCase Explorer."
 msgstr ""
 
-#: plugins/scmccase/common/CCasePlugin.class.php:111 www/tracker/item.php:430
+#: plugins/scmccase/common/CCasePlugin.class.php:111 www/tracker/item.php:453
 msgid "History"
 msgstr ""
 
@@ -7349,7 +7370,7 @@
 
 #: plugins/scmcvs/common/CVSPlugin.class.php:119
 #: plugins/scmdarcs/common/DarcsPlugin.class.php:154
-#: plugins/scmgit/common/GitPlugin.class.php:185
+#: plugins/scmgit/common/GitPlugin.class.php:206
 msgid "Download the nightly snapshot"
 msgstr ""
 
@@ -7463,27 +7484,35 @@
 msgid "Clone: "
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:66
+#: plugins/scmgit/common/GitPlugin.class.php:51
+msgid "gitweb"
+msgstr ""
+
+#: plugins/scmgit/common/GitPlugin.class.php:54
+msgid "Display a list of all subrepositories of all projects using the git SCM"
+msgstr ""
+
+#: plugins/scmgit/common/GitPlugin.class.php:87
 msgid ""
 "Documentation for Git is available at <a href=\"http://git-scm.com/\">http://"
 "git-scm.com/</a>."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:72
+#: plugins/scmgit/common/GitPlugin.class.php:93
 msgid "Anonymous Git Access"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:74
+#: plugins/scmgit/common/GitPlugin.class.php:95
 msgid ""
 "This project's Git repository can be checked out through anonymous access "
 "with the following command."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:87
+#: plugins/scmgit/common/GitPlugin.class.php:108
 msgid "Developer's repository"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:89
+#: plugins/scmgit/common/GitPlugin.class.php:110
 msgid ""
 "One of this project's members also has a personal Git repository that can be "
 "checked out anonymously."
@@ -7493,51 +7522,51 @@
 msgstr[0] ""
 msgstr[1] ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:113
-#: plugins/scmgit/common/GitPlugin.class.php:128
+#: plugins/scmgit/common/GitPlugin.class.php:134
+#: plugins/scmgit/common/GitPlugin.class.php:149
 msgid "Developer GIT Access via SSH"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:115
+#: plugins/scmgit/common/GitPlugin.class.php:136
 msgid ""
 "Only project developers can access the GIT tree via this method. SSH must be "
 "installed on your client machine. Enter your site password when prompted."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:120
-#: plugins/scmgit/common/GitPlugin.class.php:135
+#: plugins/scmgit/common/GitPlugin.class.php:141
+#: plugins/scmgit/common/GitPlugin.class.php:156
 msgid "Developer GIT Access via HTTP"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:122
-#: plugins/scmgit/common/GitPlugin.class.php:137
+#: plugins/scmgit/common/GitPlugin.class.php:143
+#: plugins/scmgit/common/GitPlugin.class.php:158
 msgid ""
 "Only project developers can access the GIT tree via this method. Enter your "
 "site password when prompted."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:130
+#: plugins/scmgit/common/GitPlugin.class.php:151
 msgid ""
 "Only project developers can access the GIT tree via this method. SSH must be "
 "installed on your client machine. Substitute <i>developername</i> with the "
 "proper value. Enter your site password when prompted."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:150
+#: plugins/scmgit/common/GitPlugin.class.php:171
 msgid "Access to your personal repository"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:152
+#: plugins/scmgit/common/GitPlugin.class.php:173
 msgid ""
 "You have a personal repository for this project, accessible through SSH with "
 "the following method. Enter your site password when prompted."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:159
+#: plugins/scmgit/common/GitPlugin.class.php:180
 msgid "Request a personal repository"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:161
+#: plugins/scmgit/common/GitPlugin.class.php:182
 msgid ""
 "You can clone the project repository into a personal one into which you "
 "alone will be able to write.  Other members of the project will only have "
@@ -7546,30 +7575,39 @@
 "time before it is created (less than an hour in most situations)."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:164
+#: plugins/scmgit/common/GitPlugin.class.php:185
 #, php-format
 msgid "<a href=\"%s\">Request a personal repository</a>."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:182
+#: plugins/scmgit/common/GitPlugin.class.php:203
 msgid "Snapshots"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:209
+#: plugins/scmgit/common/GitPlugin.class.php:230
 msgid "Git Repository Browser"
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:211
+#: plugins/scmgit/common/GitPlugin.class.php:232
 msgid ""
 "Browsing the Git tree gives you a view into the current status of this "
 "project's code. You may also view the complete histories of any file in the "
 "repository."
 msgstr ""
 
-#: plugins/scmgit/common/GitPlugin.class.php:215
-msgid "Browse Git Repository"
+#: plugins/scmgit/common/GitPlugin.class.php:236
+msgid "Browse primary Git Repository"
 msgstr ""
 
+#: plugins/scmgit/common/GitPlugin.class.php:639
+msgid "Create new subrepository with name:"
+msgstr ""
+
+#: plugins/scmgit/common/GitPlugin.class.php:679
+#, php-format
+msgid "Subrepository %s scheduled for creation."
+msgstr ""
+
 #: plugins/scmgit/www/index.php:24
 msgid ""
 "You have already requested a personal Git repository for this project.  If "
@@ -7996,7 +8034,7 @@
 msgstr ""
 
 #: www/account/index.php:101 www/account/index.php:106
-#: www/include/html.php:934
+#: www/include/html.php:940
 msgid "Account Maintenance"
 msgstr ""
 
@@ -8526,7 +8564,7 @@
 #: www/activity/index.php:244 www/pm/include/ProjectTaskHTML.class.php:154
 #: www/project/admin/project_admin_utils.php:147
 #: www/tracker/include/ArtifactHtml.class.php:47
-#: www/tracker/include/ArtifactTypeHtml.class.php:202
+#: www/tracker/include/ArtifactTypeHtml.class.php:204
 msgid "By"
 msgstr ""
 
@@ -8535,8 +8573,8 @@
 msgstr ""
 
 #: www/activity/index.php:273 www/activity/index.php:278
-#: www/tracker/taskmgr.php:103 www/tracker/taskmgr.php:157
-#: www/tracker/tracker.php:321
+#: www/tracker/taskmgr.php:104 www/tracker/taskmgr.php:170
+#: www/tracker/tracker.php:319
 msgid "Tracker Item"
 msgstr ""
 
@@ -8680,7 +8718,7 @@
 msgstr ""
 
 #: www/admin/approve-pending.php:161 www/admin/pending-news.php:152
-#: www/project/admin/users.php:263
+#: www/project/admin/users.php:264
 msgid "Reject"
 msgstr ""
 
@@ -8885,7 +8923,7 @@
 msgstr ""
 
 #: www/admin/globalroleedit.php:149 www/admin/search.php:90
-#: www/admin/unsubscribe.php:113 www/project/admin/users.php:315
+#: www/admin/unsubscribe.php:113 www/project/admin/users.php:316
 #: www/search/include/renderers/PeopleHtmlSearchRenderer.class.php:44
 #: www/top/topusers.php:63
 msgid "User name"
@@ -8926,7 +8964,7 @@
 msgstr ""
 
 #: www/admin/globalroleedit.php:254 www/admin/globalroleedit.php:256
-#: www/project/admin/users.php:453
+#: www/project/admin/users.php:457
 msgid "Delete role"
 msgstr ""
 
@@ -8986,11 +9024,11 @@
 "%3$s>give<%4$s> it “Project visibility” permissions."
 msgstr ""
 
-#: www/admin/groupedit.php:148 www/admin/grouplist.php:93
+#: www/admin/groupedit.php:148 www/admin/grouplist.php:36
 msgid "Public?"
 msgstr ""
 
-#: www/admin/groupedit.php:169 www/admin/grouplist.php:96
+#: www/admin/groupedit.php:169 www/admin/grouplist.php:39
 msgid "Template?"
 msgstr ""
 
@@ -9006,33 +9044,38 @@
 msgid "Resend New Project Instruction Email"
 msgstr ""
 
-#: www/admin/grouplist.php:27 www/include/Layout.class.php:1351
-#: www/themes/evolvis/Theme.class.php:540
-msgid "Project List"
-msgstr ""
-
-#: www/admin/grouplist.php:52
-msgid "Projects that begin with"
-msgstr ""
-
-#: www/admin/grouplist.php:89
+#: www/admin/grouplist.php:32
 msgid "Project Name (click to edit)"
 msgstr ""
 
-#: www/admin/grouplist.php:90
+#: www/admin/grouplist.php:33
 msgid "Register Time"
 msgstr ""
 
-#: www/admin/grouplist.php:91 www/admin/search.php:168
-#: www/admin/useredit.php:235 www/project/admin/massadd.php:91
+#: www/admin/grouplist.php:34 www/admin/search.php:168
+#: www/admin/useredit.php:235 www/project/admin/massadd.php:111
 #: www/project/admin/massfinish.php:79
 msgid "Unix name"
 msgstr ""
 
-#: www/admin/grouplist.php:94 www/snippet/submit.php:119
-msgid "License"
+#: www/admin/grouplist.php:37
+msgid "Licence"
 msgstr ""
 
+#: www/admin/grouplist.php:38
+msgid "Members#"
+msgstr ""
+
+#: www/admin/grouplist.php:201 www/include/Layout.class.php:1351
+#: www/themes/evolvis/Theme.class.php:567
+msgid "Project List"
+msgstr ""
+
+#: www/admin/grouplist.php:206
+#, php-format
+msgid "Projects that begin with \"%s\""
+msgstr ""
+
 #: www/admin/index.php:46
 msgid "User Maintenance"
 msgstr ""
@@ -9075,7 +9118,7 @@
 msgid "Edit Role"
 msgstr ""
 
-#: www/admin/index.php:94 www/project/admin/users.php:478
+#: www/admin/index.php:94 www/project/admin/users.php:482
 msgid "Create Role"
 msgstr ""
 
@@ -9276,8 +9319,8 @@
 #: www/admin/massmail.php:136 www/admin/search.php:89 www/admin/search.php:167
 #: www/my/dashboard.php:61 www/pm/include/ProjectTaskHTML.class.php:114
 #: www/pm/index.php:99 www/project/admin/editimages.php:265
-#: www/tracker/admin/form-addcanned.php:41 www/tracker/browse.php:273
-#: www/tracker/browse.php:660 www/tracker/query.php:195
+#: www/tracker/admin/form-addcanned.php:41 www/tracker/browse.php:279
+#: www/tracker/browse.php:669 www/tracker/query.php:197
 msgid "ID"
 msgstr ""
 
@@ -9359,7 +9402,7 @@
 #: www/news/admin/index.php:133 www/pm/templates/detail_template.php:64
 #: www/search/include/renderers/ArtifactHtmlSearchRenderer.class.php:57
 #: www/search/include/renderers/TrackersHtmlSearchRenderer.class.php:50
-#: www/tracker/browse.php:684 www/tracker/item.php:201
+#: www/tracker/browse.php:698 www/tracker/item.php:206
 msgid "Submitted by"
 msgstr ""
 
@@ -9373,10 +9416,10 @@
 
 #: www/admin/pending-news.php:155 www/my/diary.php:185
 #: www/news/admin/index.php:143 www/news/submit.php:150
-#: www/pm/browse_task.php:424 www/pm/include/ProjectView.class.php:326
-#: www/pm/include/ProjectView.class.php:330
-#: www/pm/include/ProjectView.class.php:334
-#: www/pm/include/ProjectView.class.php:339 www/pm/include/pm_columns.php:43
+#: www/pm/browse_task.php:425 www/pm/include/ProjectView.class.php:329
+#: www/pm/include/ProjectView.class.php:333
+#: www/pm/include/ProjectView.class.php:337
+#: www/pm/include/ProjectView.class.php:342 www/pm/include/pm_columns.php:43
 #: www/pm/templates/detail_template.php:7 www/tracker/item.php:128
 msgid "Details"
 msgstr ""
@@ -9431,9 +9474,9 @@
 msgstr ""
 
 #: www/admin/pluginman.php:119 www/people/people_utils.php:158
-#: www/people/people_utils.php:299 www/project/admin/users.php:317
-#: www/project/admin/users.php:407 www/project/admin/users.php:495
-#: www/project/admin/users.php:519
+#: www/people/people_utils.php:299 www/project/admin/users.php:318
+#: www/project/admin/users.php:411 www/project/admin/users.php:499
+#: www/project/admin/users.php:523
 msgid "Action"
 msgstr ""
 
@@ -9541,7 +9584,7 @@
 msgstr[1] ""
 
 #: www/admin/search.php:91 www/admin/unsubscribe.php:114
-#: www/admin/useredit.php:116 www/project/admin/massadd.php:90
+#: www/admin/useredit.php:116 www/project/admin/massadd.php:112
 #: www/project/admin/massfinish.php:78
 #: www/search/include/renderers/PeopleHtmlSearchRenderer.class.php:45
 #: www/top/topusers.php:64
@@ -10106,7 +10149,7 @@
 msgid "Details:"
 msgstr ""
 
-#: www/export/rssAboTask.php:161 www/news/news_utils.php:183
+#: www/export/rssAboTask.php:161 www/news/news_utils.php:181
 msgid "Comment"
 msgstr ""
 
@@ -10310,12 +10353,12 @@
 msgid "Realname"
 msgstr ""
 
-#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:82
+#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:66
 #: www/forum/new.php:72 www/forum/save.php:58
 msgid "Forum ID"
 msgstr ""
 
-#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:82
+#: www/forum/admin/pendingmsgdetail.php:42 www/forum/monitor.php:66
 #: www/forum/new.php:72 www/forum/save.php:58 www/frs/monitor.php:72
 msgid "Project ID"
 msgstr ""
@@ -10331,7 +10374,7 @@
 
 #: www/forum/attachment.php:42 www/forum/attachment.php:126
 #: www/forum/attachment.php:154
-#: www/tracker/include/ArtifactTypeHtml.class.php:196
+#: www/tracker/include/ArtifactTypeHtml.class.php:198
 msgid "Attachments"
 msgstr ""
 
@@ -10479,20 +10522,11 @@
 msgid "You Must Choose a Message First"
 msgstr ""
 
-#: www/forum/monitor.php:61
-#, php-format
-msgid "You are about to stop monitoring the %1$s forum."
-msgstr ""
-
-#: www/forum/monitor.php:63
-msgid "Do you really want to unsubscribe ?"
-msgstr ""
-
-#: www/forum/monitor.php:72
+#: www/forum/monitor.php:56
 msgid "Forum monitoring deactivated"
 msgstr ""
 
-#: www/forum/monitor.php:78
+#: www/forum/monitor.php:62
 msgid "Forum monitoring started"
 msgstr ""
 
@@ -11057,7 +11091,7 @@
 msgid "Display all public projects as trove tree"
 msgstr ""
 
-#: www/include/Layout.class.php:1353 www/themes/evolvis/Theme.class.php:541
+#: www/include/Layout.class.php:1353 www/themes/evolvis/Theme.class.php:568
 msgid "Display an alphabetically sorted list of all public projects"
 msgstr ""
 
@@ -11379,9 +11413,9 @@
 msgstr ""
 
 #: www/include/html.php:355 www/include/html.php:488 www/include/html.php:752
-#: www/pm/browse_task.php:550 www/pm/browse_task.php:575
-#: www/pm/browse_task.php:586 www/tracker/browse.php:843
-#: www/tracker/browse.php:851 www/tracker/browse.php:860
+#: www/pm/browse_task.php:584 www/pm/browse_task.php:609
+#: www/pm/browse_task.php:620 www/tracker/browse.php:879
+#: www/tracker/browse.php:887 www/tracker/browse.php:896
 msgid "No Change"
 msgstr ""
 
@@ -11393,64 +11427,55 @@
 msgid "Highest"
 msgstr ""
 
-#: www/include/html.php:852
+#: www/include/html.php:855
 #, php-format
-msgid "Project access problem: %s"
+msgid "Could not access the project #%d"
 msgstr ""
 
-#: www/include/html.php:854
+#: www/include/html.php:859
 #, php-format
-msgid "Project Problem: %s"
+msgid "Error accessing the project #%d: %s"
 msgstr ""
 
-#: www/include/html.php:907 www/my/bookmark_add.php:28
+#: www/include/html.php:913 www/my/bookmark_add.php:28
 msgid "My Personal Page"
 msgstr ""
 
-#: www/include/html.php:909 www/themes/evolvis/Theme.class.php:121
+#: www/include/html.php:915 www/themes/evolvis/Theme.class.php:121
 msgid "Manage projects, assigned tasks, bugs, etc."
 msgstr ""
 
-#: www/include/html.php:917
+#: www/include/html.php:923
 msgid ""
 "Select widgets to add to the User Summary page from a list of available "
 "widgets"
 msgstr ""
 
-#: www/include/html.php:921 www/include/project_home.php:82
+#: www/include/html.php:927 www/include/project_home.php:76
 msgid "Customise number and sizes of columns to use for widgets"
 msgstr ""
 
-#: www/include/html.php:924
+#: www/include/html.php:930
 msgid "Trackers dashboard"
 msgstr ""
 
-#: www/include/html.php:926
+#: www/include/html.php:932
 msgid "Have an overview about all tracker items related to you"
 msgstr ""
 
-#: www/include/html.php:929
+#: www/include/html.php:935
 msgid "Diary & Notes"
 msgstr ""
 
-#: www/include/html.php:931
+#: www/include/html.php:937
 msgid "-tooltip:diary-and-notes"
 msgstr ""
 
-#: www/include/html.php:936
+#: www/include/html.php:942
 msgid "Change the password, SSH keys; configure account settings"
 msgstr ""
 
-#: www/include/html.php:940 www/register/index.php:166
-#: www/themes/evolvis/Theme.class.php:536
-msgid "Register Project"
-msgstr ""
-
-#: www/include/html.php:942 www/themes/evolvis/Theme.class.php:537
-msgid "Register a new Project on the forge"
-msgstr ""
-
-#: www/include/html.php:1281 www/notepad.php:48
+#: www/include/html.php:1277 www/notepad.php:48
 msgid "FusionForge Notepad"
 msgstr ""
 
@@ -11458,17 +11483,17 @@
 msgid "Project Home"
 msgstr ""
 
-#: www/include/project_home.php:74
+#: www/include/project_home.php:68
 msgid "Customise Layout"
 msgstr ""
 
-#: www/include/project_home.php:81
+#: www/include/project_home.php:75
 msgid ""
 "Select widgets to add to the Project Summary page from a list of available "
 "widgets"
 msgstr ""
 
-#: www/include/tool_reports.php:65 www/pm/include/ProjectView.class.php:387
+#: www/include/tool_reports.php:65 www/pm/include/ProjectView.class.php:390
 #: www/pm/index.php:102 www/reporting/usersummary.php:54
 #: www/tracker/ind.php:63
 msgid "Open"
@@ -11816,35 +11841,50 @@
 msgid "Permanently Delete Mailing List "
 msgstr ""
 
-#: www/mail/admin/index.php:127
-msgid "Password reset requested"
+#: www/mail/admin/index.php:120
+msgid "Mailing list configuration not writable"
 msgstr ""
 
-#: www/mail/admin/index.php:139
+#: www/mail/admin/index.php:138
 #, php-format
 msgid ""
 "Lists are named in this manner:<br /><strong>projectname-listname@%1$s</"
 "strong>"
 msgstr ""
 
-#: www/mail/admin/index.php:143
+#: www/mail/admin/index.php:142
 msgid ""
-"It will take <span class=\"important\">6-24 Hours</span> for your list to be "
-"created."
+"It will take <span class=\"important\">about one hour</span> for your list "
+"to be created."
 msgstr ""
 
-#: www/mail/admin/index.php:160
+#: www/mail/admin/index.php:159
 msgid "Existing mailing lists"
 msgstr ""
 
-#: www/mail/admin/index.php:264 www/mail/index.php:76
+#: www/mail/admin/index.php:256
+#, php-format
+msgid "Setting mailing list administrator password to: %s"
+msgstr ""
+
+#: www/mail/admin/index.php:270 www/mail/index.php:76
 msgid "Mailing list"
 msgstr ""
 
-#: www/mail/admin/index.php:290
-msgid "Reset admin password"
+#: www/mail/admin/index.php:297
+msgid "Reset Admin Password"
 msgstr ""
 
+#: www/mail/admin/index.php:300
+msgid "Not available"
+msgstr ""
+
+#: www/mail/admin/index.php:309
+msgid ""
+"To enable changing the ML Admin Password, ask your sysadmin to add www-data "
+"to the list group."
+msgstr ""
+
 #: www/mail/index.php:46
 msgid "Could Not Get MailingListFactory"
 msgstr ""
@@ -11935,19 +11975,19 @@
 msgid "Changed"
 msgstr ""
 
-#: www/my/dashboard.php:69 www/pm/browse_task.php:218
-#: www/pm/browse_task.php:412 www/pm/browse_task.php:576
+#: www/my/dashboard.php:69 www/pm/browse_task.php:219
+#: www/pm/browse_task.php:413 www/pm/browse_task.php:610
 #: www/pm/include/pm_columns.php:37 www/pm/templates/detail_template.php:20
-#: www/tracker/admin/form-customizelist.php:45 www/tracker/browse.php:274
-#: www/tracker/browse.php:678 www/tracker/browse.php:847
-#: www/tracker/item.php:153 www/tracker/query.php:196
+#: www/tracker/admin/form-customizelist.php:45 www/tracker/browse.php:280
+#: www/tracker/browse.php:691 www/tracker/browse.php:883
+#: www/tracker/item.php:156 www/tracker/query.php:198
 msgid "Priority"
 msgstr ""
 
-#: www/my/dashboard.php:71 www/pm/browse_task.php:410
-#: www/pm/browse_task.php:583 www/pm/templates/detail_template.php:30
-#: www/tracker/browse.php:681 www/tracker/browse.php:850
-#: www/tracker/item.php:167
+#: www/my/dashboard.php:71 www/pm/browse_task.php:411
+#: www/pm/browse_task.php:617 www/pm/templates/detail_template.php:30
+#: www/tracker/browse.php:694 www/tracker/browse.php:886
+#: www/tracker/item.php:172
 msgid "Assigned to"
 msgstr ""
 
@@ -12160,44 +12200,44 @@
 msgid "No News Found"
 msgstr ""
 
-#: www/news/news_utils.php:41
+#: www/news/news_utils.php:42
 msgid "View News"
 msgstr ""
 
-#: www/news/news_utils.php:43
+#: www/news/news_utils.php:44
 msgid "-tooltip:news:view"
 msgstr ""
 
-#: www/news/news_utils.php:45 www/news/news_utils.php:228
+#: www/news/news_utils.php:46 www/news/news_utils.php:226
 msgid "Submit News Item"
 msgstr ""
 
-#: www/news/news_utils.php:47
+#: www/news/news_utils.php:48
 msgid "-tooltip:news:new"
 msgstr ""
 
-#: www/news/news_utils.php:55
+#: www/news/news_utils.php:54
 msgid "-tooltip:news:admin"
 msgstr ""
 
-#: www/news/news_utils.php:121 www/news/news_utils.php:252
+#: www/news/news_utils.php:119 www/news/news_utils.php:250
 msgid "No News Items Found"
 msgstr ""
 
-#: www/news/news_utils.php:185 www/pm/include/ProjectView.class.php:351
+#: www/news/news_utils.php:183 www/pm/include/ProjectView.class.php:354
 #: www/survey/include/SurveyHTML.class.php:652
 msgid "Comments"
 msgstr ""
 
-#: www/news/news_utils.php:189
+#: www/news/news_utils.php:187
 msgid "Read More/Comment"
 msgstr ""
 
-#: www/news/news_utils.php:216
+#: www/news/news_utils.php:214
 msgid "News archive"
 msgstr ""
 
-#: www/news/news_utils.php:286
+#: www/news/news_utils.php:284
 msgid "Not Found"
 msgstr ""
 
@@ -12343,8 +12383,8 @@
 #: www/people/createjob.php:49 www/people/editjob.php:52
 #: www/people/editjob.php:74 www/people/editjob.php:163
 #: www/people/people_utils.php:350 www/people/people_utils.php:406
-#: www/pm/browse_task.php:297 www/pm/browse_task.php:408
-#: www/pm/browse_task.php:573 www/pm/ganttpage.php:157
+#: www/pm/browse_task.php:297 www/pm/browse_task.php:409
+#: www/pm/browse_task.php:607 www/pm/ganttpage.php:157
 #: www/pm/include/pm_columns.php:35 www/pm/templates/detail_template.php:25
 #: www/pm/templates/time_tracking.php:7 www/reporting/timeadd.php:142
 #: www/snippet/package.php:163 www/snippet/submit.php:131
@@ -12642,21 +12682,21 @@
 msgstr ""
 
 #: www/people/editprofile.php:283 www/people/skills_utils.php:50
-#: www/people/skills_utils.php:157 www/pm/browse_task.php:215
-#: www/pm/browse_task.php:402 www/pm/ganttpage.php:70
+#: www/people/skills_utils.php:157 www/pm/browse_task.php:216
+#: www/pm/browse_task.php:401 www/pm/ganttpage.php:70
 #: www/pm/include/pm_columns.php:32 www/pm/templates/detail_template.php:42
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:50
-#: www/tracker/include/ArtifactTypeHtml.class.php:145
+#: www/tracker/include/ArtifactTypeHtml.class.php:147
 msgid "Start Date"
 msgstr ""
 
 #: www/people/editprofile.php:284 www/people/skills_utils.php:51
-#: www/people/skills_utils.php:158 www/pm/browse_task.php:216
+#: www/people/skills_utils.php:158 www/pm/browse_task.php:217
 #: www/pm/browse_task.php:404 www/pm/ganttpage.php:71
 #: www/pm/include/pm_columns.php:33 www/pm/templates/detail_template.php:47
 #: www/reporting/usersummary.php:106
 #: www/search/include/renderers/TasksHtmlSearchRenderer.class.php:51
-#: www/tracker/include/ArtifactTypeHtml.class.php:146
+#: www/tracker/include/ArtifactTypeHtml.class.php:148
 msgid "End Date"
 msgstr ""
 
@@ -12821,8 +12861,8 @@
 
 #: www/people/viewjob.php:80 www/pm/include/ProjectTaskHTML.class.php:118
 #: www/project/report/index.php:137
-#: www/tracker/admin/form-customizelist.php:43 www/tracker/browse.php:276
-#: www/tracker/browse.php:669 www/tracker/query.php:198
+#: www/tracker/admin/form-customizelist.php:43 www/tracker/browse.php:282
+#: www/tracker/browse.php:682 www/tracker/query.php:200
 msgid "Open Date"
 msgstr ""
 
@@ -12898,7 +12938,6 @@
 msgstr ""
 
 #: www/pm/admin/index.php:215 www/pm/admin/index.php:259
-#: www/pm/browse_task.php:432 www/pm/include/pm_columns.php:47
 #: www/reporting/timecategory.php:72 www/reporting/timecategory.php:91
 msgid "Category Name"
 msgstr ""
@@ -12972,7 +13011,7 @@
 msgstr ""
 
 #: www/pm/admin/index.php:403 www/pm/index.php:47 www/pm/task.php:95
-#: www/tracker/browse.php:92 www/tracker/taskmgr.php:138
+#: www/tracker/browse.php:96 www/tracker/taskmgr.php:151
 msgid "Could Not Get Factory"
 msgstr ""
 
@@ -13002,43 +13041,43 @@
 msgid "Edit/Update Subproject"
 msgstr ""
 
-#: www/pm/browse_task.php:135
+#: www/pm/browse_task.php:136
 msgid "Browse tasks"
 msgstr ""
 
-#: www/pm/browse_task.php:194 www/pm/browse_task.php:205
+#: www/pm/browse_task.php:195 www/pm/browse_task.php:206
 #: www/pm/browse_task.php:296 www/pm/ganttpage.php:56 www/pm/ganttpage.php:58
 #: www/pm/ganttpage.php:60 www/pm/ganttpage.php:62
-#: www/reporting/usersummary.php:53 www/tracker/browse.php:261
-#: www/tracker/browse.php:340 www/tracker/browse.php:347
-#: www/tracker/query.php:344
+#: www/reporting/usersummary.php:53 www/tracker/browse.php:267
+#: www/tracker/browse.php:346 www/tracker/browse.php:353
+#: www/tracker/query.php:346
 msgid "Any"
 msgstr ""
 
-#: www/pm/browse_task.php:196 www/pm/browse_task.php:547
-#: www/pm/ganttpage.php:58 www/tracker/browse.php:266
+#: www/pm/browse_task.php:197 www/pm/browse_task.php:581
+#: www/pm/ganttpage.php:58 www/tracker/browse.php:272
 msgid "Unassigned"
 msgstr ""
 
-#: www/pm/browse_task.php:213 www/pm/browse_task.php:398
+#: www/pm/browse_task.php:214 www/pm/browse_task.php:397
 #: www/pm/ganttpage.php:68 www/pm/include/ProjectTaskHTML.class.php:83
 msgid "Task Id"
 msgstr ""
 
-#: www/pm/browse_task.php:214 www/pm/browse_task.php:400
+#: www/pm/browse_task.php:215 www/pm/browse_task.php:399
 #: www/pm/ganttpage.php:69 www/pm/include/ProjectTaskHTML.class.php:84
 #: www/pm/templates/detail_template.php:99
-#: www/tracker/include/ArtifactTypeHtml.class.php:144
+#: www/tracker/include/ArtifactTypeHtml.class.php:146
 msgid "Task Summary"
 msgstr ""
 
-#: www/pm/browse_task.php:217 www/pm/browse_task.php:406
+#: www/pm/browse_task.php:218 www/pm/browse_task.php:407
 #: www/pm/ganttpage.php:72 www/pm/include/pm_columns.php:34
 #: www/pm/templates/detail_template.php:10
 msgid "Percent Complete"
 msgstr ""
 
-#: www/pm/browse_task.php:234
+#: www/pm/browse_task.php:235
 msgid "Detailed"
 msgstr ""
 
@@ -13047,8 +13086,8 @@
 msgstr ""
 
 #: www/pm/browse_task.php:295 www/pm/ganttpage.php:155
-#: www/tracker/browse.php:279 www/tracker/browse.php:516
-#: www/tracker/query.php:201 www/tracker/query.php:341
+#: www/tracker/browse.php:285 www/tracker/browse.php:524
+#: www/tracker/query.php:203 www/tracker/query.php:343
 msgid "Assignee"
 msgstr ""
 
@@ -13076,81 +13115,81 @@
 msgid "Add tasks using the link above"
 msgstr ""
 
-#: www/pm/browse_task.php:351 www/tracker/browse.php:549
+#: www/pm/browse_task.php:351 www/tracker/browse.php:557
 #, php-format
 msgid "Displaying %d results."
 msgstr ""
 
-#: www/pm/browse_task.php:416
+#: www/pm/browse_task.php:417
 msgid "Project Task Id"
 msgstr ""
 
-#: www/pm/browse_task.php:418 www/pm/include/pm_columns.php:40
-#: www/snippet/browse.php:83 www/tracker/query.php:339
+#: www/pm/browse_task.php:419 www/pm/include/pm_columns.php:40
+#: www/snippet/browse.php:83 www/tracker/query.php:341
 msgid "Creator"
 msgstr ""
 
-#: www/pm/browse_task.php:420 www/pm/include/pm_columns.php:41
+#: www/pm/browse_task.php:421 www/pm/include/pm_columns.php:41
 msgid "Duration"
 msgstr ""
 
-#: www/pm/browse_task.php:422 www/pm/include/pm_columns.php:42
+#: www/pm/browse_task.php:423 www/pm/include/pm_columns.php:42
 msgid "Parent Id"
 msgstr ""
 
-#: www/pm/browse_task.php:426 www/pm/include/pm_columns.php:44
+#: www/pm/browse_task.php:427 www/pm/include/pm_columns.php:44
 #: www/pm/templates/detail_template.php:55
 msgid "Estimated Hours"
 msgstr ""
 
-#: www/pm/browse_task.php:428 www/pm/include/pm_columns.php:45
+#: www/pm/browse_task.php:429 www/pm/include/pm_columns.php:45
 msgid "Status Id"
 msgstr ""
 
-#: www/pm/browse_task.php:430 www/pm/include/pm_columns.php:46
+#: www/pm/browse_task.php:431 www/pm/include/pm_columns.php:46
 msgid "Category Id"
 msgstr ""
 
-#: www/pm/browse_task.php:434 www/pm/include/pm_columns.php:48
+#: www/pm/browse_task.php:433 www/pm/include/pm_columns.php:47
 msgid "Last Modified Date"
 msgstr ""
 
-#: www/pm/browse_task.php:436 www/pm/include/pm_columns.php:49
+#: www/pm/browse_task.php:435 www/pm/include/pm_columns.php:48
 msgid "External Id"
 msgstr ""
 
-#: www/pm/browse_task.php:438 www/pm/include/pm_columns.php:50
+#: www/pm/browse_task.php:437 www/pm/include/pm_columns.php:49
 msgid "Sub-Project"
 msgstr ""
 
-#: www/pm/browse_task.php:531 www/tracker/browse.php:804
+#: www/pm/browse_task.php:565 www/tracker/browse.php:840
 msgid "Mass Update"
 msgstr ""
 
-#: www/pm/browse_task.php:566
+#: www/pm/browse_task.php:600
 msgid "Check all"
 msgstr ""
 
-#: www/pm/browse_task.php:568
+#: www/pm/browse_task.php:602
 msgid "Clear all"
 msgstr ""
 
-#: www/pm/browse_task.php:570 www/tracker/browse.php:826
+#: www/pm/browse_task.php:604 www/tracker/browse.php:862
 msgid ""
 "<strong>Admin:</strong> If you wish to apply changes to all items selected "
 "above, use these controls to change their properties and click once on "
 "\"Mass Update\"."
 msgstr ""
 
-#: www/pm/browse_task.php:589 www/pm/templates/detail_template.php:79
+#: www/pm/browse_task.php:623 www/pm/templates/detail_template.php:79
 msgid "Subproject"
 msgstr ""
 
-#: www/pm/browse_task.php:592 www/tracker/browse.php:867
+#: www/pm/browse_task.php:626 www/tracker/browse.php:903
 msgid "Mass update"
 msgstr ""
 
-#: www/pm/browse_task.php:640
+#: www/pm/browse_task.php:674
 msgid "* Denotes overdue tasks"
 msgstr ""
 
@@ -13325,7 +13364,7 @@
 msgid "Yes, I want to delete this task"
 msgstr ""
 
-#: www/pm/downloadcsv.php:96 www/pm/gantt.php:31 www/tracker/taskmgr.php:62
+#: www/pm/downloadcsv.php:103 www/pm/gantt.php:31 www/tracker/taskmgr.php:62
 msgid "Could Not Get ProjectTaskFactory"
 msgstr ""
 
@@ -13438,30 +13477,30 @@
 msgid "No Changes Have Been Made"
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:359
+#: www/pm/include/ProjectView.class.php:362
 msgid "No comments have been written."
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:475
+#: www/pm/include/ProjectView.class.php:478
 msgid "View Calendar"
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:540
+#: www/pm/include/ProjectView.class.php:543
 #: www/tracker/admin/form-addextrafield.php:60
 msgid "Copy"
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:553
-#: www/pm/include/ProjectView.class.php:555
+#: www/pm/include/ProjectView.class.php:556
+#: www/pm/include/ProjectView.class.php:558
 msgid "Subscribe to task"
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:565
-#: www/pm/include/ProjectView.class.php:567
+#: www/pm/include/ProjectView.class.php:568
+#: www/pm/include/ProjectView.class.php:570
 msgid "Delete this task"
 msgstr ""
 
-#: www/pm/include/ProjectView.class.php:594
+#: www/pm/include/ProjectView.class.php:597
 msgid "Add category"
 msgstr ""
 
@@ -13470,11 +13509,11 @@
 msgid "Assigned To"
 msgstr ""
 
-#: www/pm/include/pm_columns.php:84
+#: www/pm/include/pm_columns.php:83
 msgid "Select PM Display Columns"
 msgstr ""
 
-#: www/pm/include/pm_columns.php:90
+#: www/pm/include/pm_columns.php:89
 msgid "Select Columns"
 msgstr ""
 
@@ -13501,7 +13540,7 @@
 msgid "Choose a Subproject and you can browse/edit/add tasks to it."
 msgstr ""
 
-#: www/pm/pm_task.php:84 www/pm/templates/time_tracking.php:1
+#: www/pm/pm_task.php:86 www/pm/templates/time_tracking.php:1
 #: www/reporting/timeadd.php:102
 msgid "Time tracking"
 msgstr ""
@@ -13534,31 +13573,31 @@
 msgid "Number of tasks still not completed"
 msgstr ""
 
-#: www/pm/reporting/index.php:210
+#: www/pm/reporting/index.php:209
 msgid "Tasks By Category"
 msgstr ""
 
-#: www/pm/reporting/index.php:211
+#: www/pm/reporting/index.php:210
 msgid "Open Tasks By Category"
 msgstr ""
 
-#: www/pm/reporting/index.php:212
+#: www/pm/reporting/index.php:211
 msgid "All Tasks By Category"
 msgstr ""
 
-#: www/pm/reporting/index.php:240
+#: www/pm/reporting/index.php:239
 msgid "Tasks By Assignee"
 msgstr ""
 
-#: www/pm/reporting/index.php:241
+#: www/pm/reporting/index.php:240
 msgid "Open Tasks By Assignee"
 msgstr ""
 
-#: www/pm/reporting/index.php:242
+#: www/pm/reporting/index.php:241
 msgid "All Tasks By Assignee"
 msgstr ""
 
-#: www/pm/reporting/index.php:243
+#: www/pm/reporting/index.php:242
 msgid ""
 "<p>Note that same task can be assigned to several technicians. Such task "
 "will be counted for each of them.</p>"
@@ -13584,11 +13623,11 @@
 msgid "Abort"
 msgstr ""
 
-#: www/pm/t_lookup.php:35
+#: www/pm/t_lookup.php:43
 msgid "Task ID"
 msgstr ""
 
-#: www/pm/t_lookup.php:41
+#: www/pm/t_lookup.php:49
 msgid "No Task with ID: "
 msgstr ""
 
@@ -13642,7 +13681,7 @@
 msgid "Task Successfully Deleted"
 msgstr ""
 
-#: www/pm/templates/detail_template.php:69 www/tracker/item.php:227
+#: www/pm/templates/detail_template.php:69 www/tracker/item.php:232
 msgid "Permalink"
 msgstr ""
 
@@ -13779,7 +13818,7 @@
 msgstr ""
 
 #: www/project/admin/editimages.php:59 www/tracker/tracker.php:151
-#: www/tracker/tracker.php:400
+#: www/tracker/tracker.php:398
 msgid "Invalid filename"
 msgstr ""
 
@@ -13929,7 +13968,7 @@
 msgid "Maximum 255 characters, HTML will be stripped from this description"
 msgstr ""
 
-#: www/project/admin/index.php:151
+#: www/project/admin/index.php:150
 msgid "Long Project Description"
 msgstr ""
 
@@ -13971,32 +14010,37 @@
 msgid "(send on all updates)"
 msgstr ""
 
-#: www/project/admin/massadd.php:67 www/project/admin/users.php:298
+#: www/project/admin/massadd.php:68 www/project/admin/users.php:299
 msgid "Add Users From List"
 msgstr ""
 
-#: www/project/admin/massadd.php:71
+#: www/project/admin/massadd.php:72
 msgid ""
 "Check the box next to the name of the user(s) you want to add. Your choices "
 "will be preserved if you click any of the letters below. When done, click "
 "\"Finish\" to choose the roles for the users you are adding."
 msgstr ""
 
-#: www/project/admin/massadd.php:77
+#: www/project/admin/massadd.php:78
 msgid ""
 "Choose the <strong>First Letter</strong> of the name of the person you wish "
 "to add."
 msgstr ""
 
-#: www/project/admin/massadd.php:87 www/project/admin/users.php:104
+#: www/project/admin/massadd.php:88 www/project/admin/users.php:104
 msgid "No Matching Users Found"
 msgstr ""
 
-#: www/project/admin/massadd.php:92
+#: www/project/admin/massadd.php:110
 msgid "Add user"
 msgstr ""
 
-#: www/project/admin/massadd.php:116
+#: www/project/admin/massadd.php:124
+#, php-format
+msgid "%2$s, %1$s"
+msgstr ""
+
+#: www/project/admin/massadd.php:131
 msgid "Finish"
 msgstr ""
 
@@ -14133,7 +14177,7 @@
 msgid "Could Not Get RoleObserver"
 msgstr ""
 
-#: www/project/admin/roleedit.php:141 www/project/admin/users.php:486
+#: www/project/admin/roleedit.php:141 www/project/admin/users.php:490
 msgid "Edit Observer"
 msgstr ""
 
@@ -14256,11 +14300,11 @@
 msgstr ""
 
 #: www/project/admin/users.php:114 www/project/admin/users.php:174
-msgid "Member Added Successfully"
+msgid "Project Role assigned to Member successfully"
 msgstr ""
 
 #: www/project/admin/users.php:138
-msgid "Member Removed Successfully"
+msgid "Project Role removed from Member successfully"
 msgstr ""
 
 #: www/project/admin/users.php:151
@@ -14288,49 +14332,49 @@
 msgid "Pending Membership Requests"
 msgstr ""
 
-#: www/project/admin/users.php:261
+#: www/project/admin/users.php:262
 msgid "Accept"
 msgstr ""
 
-#: www/project/admin/users.php:272 www/project/admin/users.php:274
-#: www/project/admin/users.php:293
+#: www/project/admin/users.php:273 www/project/admin/users.php:275
+#: www/project/admin/users.php:294
 msgid "Add Member"
 msgstr ""
 
-#: www/project/admin/users.php:304
+#: www/project/admin/users.php:305
 msgid "Current Project Members"
 msgstr ""
 
-#: www/project/admin/users.php:373
+#: www/project/admin/users.php:377
 msgid "Grant extra role"
 msgstr ""
 
-#: www/project/admin/users.php:393 www/tracker/admin/form-workflow.php:119
+#: www/project/admin/users.php:397
 msgid "Edit Roles"
 msgstr ""
 
-#: www/project/admin/users.php:405 www/project/admin/users.php:494
-#: www/project/admin/users.php:518
+#: www/project/admin/users.php:409 www/project/admin/users.php:498
+#: www/project/admin/users.php:522
 msgid "Role name"
 msgstr ""
 
-#: www/project/admin/users.php:435
+#: www/project/admin/users.php:439
 msgid "Edit Permissions"
 msgstr ""
 
-#: www/project/admin/users.php:492
+#: www/project/admin/users.php:496
 msgid "Currently used external roles"
 msgstr ""
 
-#: www/project/admin/users.php:507
+#: www/project/admin/users.php:511
 msgid "Unlink Role"
 msgstr ""
 
-#: www/project/admin/users.php:516
+#: www/project/admin/users.php:520
 msgid "Available external roles"
 msgstr ""
 
-#: www/project/admin/users.php:537
+#: www/project/admin/users.php:541
 msgid "Link external role"
 msgstr ""
 
@@ -14431,7 +14475,7 @@
 msgstr ""
 
 #: www/project/report/index.php:237 www/reporting/usersummary.php:102
-#: www/tracker/taskmgr.php:108
+#: www/tracker/taskmgr.php:109
 msgid "Task"
 msgstr ""
 
@@ -14550,6 +14594,10 @@
 "%1$s</p>"
 msgstr ""
 
+#: www/register/index.php:166 www/themes/evolvis/Theme.class.php:562
+msgid "Register Project"
+msgstr ""
+
 #: www/register/index.php:170
 msgid ""
 "To apply for project registration, you should fill in basic information "
@@ -14621,15 +14669,15 @@
 "none at all). Please select the SCM system you want to use.</p>"
 msgstr ""
 
-#: www/register/index.php:222
+#: www/register/index.php:226
 msgid "No SCM"
 msgstr ""
 
-#: www/register/index.php:231
+#: www/register/index.php:268
 msgid "Project template"
 msgstr ""
 
-#: www/register/index.php:238
+#: www/register/index.php:275
 #, php-format
 msgid ""
 "You can either start from an empty project, or pick a project that will act "
@@ -14638,11 +14686,11 @@
 "same set of enabled plugins, and so on)."
 msgstr ""
 
-#: www/register/index.php:240 www/register/index.php:260
+#: www/register/index.php:277 www/register/index.php:301
 msgid "Start from empty project"
 msgstr ""
 
-#: www/register/index.php:242
+#: www/register/index.php:279
 #, php-format
 msgid ""
 "Please pick a project that will act as a template for yours.  Your project "
@@ -14650,7 +14698,7 @@
 "permissions, same trackers, same set of enabled plugins, and so on)."
 msgstr ""
 
-#: www/register/index.php:254
+#: www/register/index.php:295
 #, php-format
 msgid ""
 "You can either start from an empty project, or use the %s project as a "
@@ -14659,7 +14707,7 @@
 "enabled plugins, and so on)."
 msgstr ""
 
-#: www/register/index.php:266
+#: www/register/index.php:311
 #, php-format
 msgid ""
 "Your project will initially have the same configuration as the %s project "
@@ -14667,7 +14715,7 @@
 "so on)."
 msgstr ""
 
-#: www/register/index.php:273
+#: www/register/index.php:318
 #, php-format
 msgid "Since no template project is available, your project will start empty."
 msgstr ""
@@ -14885,8 +14933,8 @@
 "choose a Task and category to record your time in."
 msgstr ""
 
-#: www/reporting/timeadd.php:197 www/tracker/taskmgr.php:104
-#: www/tracker/taskmgr.php:158
+#: www/reporting/timeadd.php:197 www/tracker/taskmgr.php:105
+#: www/tracker/taskmgr.php:171
 msgid "Tasks Project"
 msgstr ""
 
@@ -14989,19 +15037,41 @@
 msgid "Error - Site has SCM but no plugins registered"
 msgstr ""
 
-#: www/scm/include/scm_utils.php:49
-msgid "View Source Code"
+#: www/scm/browser.php:38
+msgid "Could not get SCM Plugin instance"
 msgstr ""
 
-#: www/scm/include/scm_utils.php:59
+#: www/scm/browser.php:40
+msgid ""
+"SCM Browser not displayable; possibly because it’s not anonymously "
+"accessible?"
+msgstr ""
+
+#: www/scm/include/scm_utils.php:43
+msgid "More than one SCM plugin in use."
+msgstr ""
+
+#: www/scm/include/scm_utils.php:72
+msgid "Access Source Code"
+msgstr ""
+
+#: www/scm/include/scm_utils.php:74
 msgid "-tooltip:scm:view"
 msgstr ""
 
-#: www/scm/include/scm_utils.php:60
+#: www/scm/include/scm_utils.php:78
+msgid "Browse Source Code"
+msgstr ""
+
+#: www/scm/include/scm_utils.php:81
+msgid "Look at the source code repository using your webbrowser!"
+msgstr ""
+
+#: www/scm/include/scm_utils.php:88
 msgid "-tooltip:scm:reporting"
 msgstr ""
 
-#: www/scm/include/scm_utils.php:61
+#: www/scm/include/scm_utils.php:92
 msgid "-tooltip:scm:admin"
 msgstr ""
 
@@ -15183,13 +15253,8 @@
 msgid "Project Search"
 msgstr ""
 
-#: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:48
-#: www/tracker/admin/form-workflow.php:61
-msgid "From"
-msgstr ""
-
 #: www/search/include/renderers/SkillHtmlSearchRenderer.class.php:49
-#: www/tracker/admin/form-workflow.php:62
+#: www/tracker/admin/form-workflow.php:81
 msgid "To"
 msgstr ""
 
@@ -15747,11 +15812,15 @@
 msgid "Script Type"
 msgstr ""
 
+#: www/snippet/submit.php:119
+msgid "License"
+msgstr ""
+
 #: www/snippet/submit.php:142
 msgid "Paste the Code Here"
 msgstr ""
 
-#: www/soap/index.php:164
+#: www/soap/index.php:163
 msgid "en_US"
 msgstr ""
 
@@ -16475,6 +16544,10 @@
 msgid "Toggle"
 msgstr ""
 
+#: www/themes/evolvis/Theme.class.php:563
+msgid "Register a new Project on the forge"
+msgstr ""
+
 #: www/top/index.php:29
 #, php-format
 msgid "Top %1$s Projects"
@@ -16638,10 +16711,12 @@
 msgstr ""
 
 #: www/tracker/admin/form-addextrafield.php:115
+#: www/tracker/admin/form-updateextrafield.php:48
 msgid "Custom Field name (human-readable)"
 msgstr ""
 
 #: www/tracker/admin/form-addextrafield.php:119
+#: www/tracker/admin/form-updateextrafield.php:72
 msgid "Field alias (internal name)"
 msgstr ""
 
@@ -16660,8 +16735,8 @@
 
 #: www/tracker/admin/form-addextrafield.php:137
 msgid ""
-"Text Fields and Text Areas need to have Size/Maxlength and Rows/Cols "
-"defined, respectively."
+"Text Fields, Text Areas and Relations between artifacts need to have Size/"
+"Maxlength and Rows/Cols defined, respectively."
 msgstr ""
 
 #: www/tracker/admin/form-addextrafield.php:138
@@ -16699,8 +16774,8 @@
 #: www/tracker/admin/updates.php:39 www/tracker/admin/updates.php:58
 #: www/tracker/admin/updates.php:87 www/tracker/admin/updates.php:181
 #: www/tracker/admin/updates.php:223 www/tracker/admin/updates.php:246
-#: www/tracker/admin/updates.php:374 www/tracker/admin/updates.php:394
-#: www/tracker/admin/updates.php:417 www/tracker/admin/updates.php:469
+#: www/tracker/admin/updates.php:381 www/tracker/admin/updates.php:401
+#: www/tracker/admin/updates.php:424 www/tracker/admin/updates.php:476
 msgid "Unable to create ArtifactExtraField Object"
 msgstr ""
 
@@ -16733,27 +16808,27 @@
 msgid "Add New Element"
 msgstr ""
 
-#: www/tracker/admin/form-clonetracker.php:32
-msgid "Unable to Create Template Group Object"
+#: www/tracker/admin/form-clonetracker.php:67
+msgid "Error looking up template projects"
 msgstr ""
 
-#: www/tracker/admin/form-clonetracker.php:48
-#: www/tracker/include/ArtifactTypeHtml.class.php:835
-msgid "Clone Tracker"
+#: www/tracker/admin/form-clonetracker.php:68
+msgid "No template project found"
 msgstr ""
 
-#: www/tracker/admin/form-clonetracker.php:51
-msgid ""
-"The site administrator must first set up template trackers in the template "
-"projet with default values and set permissions propertly so you can access "
-"them."
+#: www/tracker/admin/form-clonetracker.php:72
+msgid "Some errors occured during template project lookup"
 msgstr ""
 
-#: www/tracker/admin/form-clonetracker.php:54
+#: www/tracker/admin/form-clonetracker.php:75 www/tracker/admin/tracker.php:61
+msgid "Apply Template Tracker"
+msgstr ""
+
+#: www/tracker/admin/form-clonetracker.php:77
 msgid "Choose the template tracker to clone."
 msgstr ""
 
-#: www/tracker/admin/form-clonetracker.php:57
+#: www/tracker/admin/form-clonetracker.php:84
 msgid ""
 "WARNING!!! Cloning this tracker will duplicate all the fields and all the "
 "elements from those fields into this tracker. There is nothing to prevent "
@@ -16774,17 +16849,17 @@
 msgid "Submitted By"
 msgstr ""
 
-#: www/tracker/admin/form-customizelist.php:48 www/tracker/browse.php:277
-#: www/tracker/browse.php:672 www/tracker/query.php:199
+#: www/tracker/admin/form-customizelist.php:48 www/tracker/browse.php:283
+#: www/tracker/browse.php:685 www/tracker/query.php:201
 msgid "Close Date"
 msgstr ""
 
-#: www/tracker/admin/form-customizelist.php:49 www/tracker/item.php:312
-#: www/tracker/item.php:323 www/tracker/query.php:383
+#: www/tracker/admin/form-customizelist.php:49 www/tracker/item.php:335
+#: www/tracker/item.php:346 www/tracker/query.php:385
 msgid "Detailed description"
 msgstr ""
 
-#: www/tracker/admin/form-customizelist.php:50 www/tracker/browse.php:687
+#: www/tracker/admin/form-customizelist.php:50 www/tracker/browse.php:702
 msgid "Related tasks"
 msgstr ""
 
@@ -16813,7 +16888,7 @@
 
 #: www/tracker/admin/form-deleteextrafieldelement.php:42
 #: www/tracker/admin/form-updateextrafieldelement.php:40
-#: www/tracker/admin/updates.php:252 www/tracker/admin/updates.php:475
+#: www/tracker/admin/updates.php:252 www/tracker/admin/updates.php:482
 msgid "Unable to create ArtifactExtraFieldElement Object"
 msgstr ""
 
@@ -16838,20 +16913,20 @@
 "its contents!"
 msgstr ""
 
-#: www/tracker/admin/form-extrafieldcopy.php:53
+#: www/tracker/admin/form-extrafieldcopy.php:52
 msgid "Cannot find a destination tracker where you have administration rights."
 msgstr ""
 
-#: www/tracker/admin/form-extrafieldcopy.php:56
+#: www/tracker/admin/form-extrafieldcopy.php:55
 #, php-format
 msgid "Copy choices from custom field %1$s"
 msgstr ""
 
-#: www/tracker/admin/form-extrafieldcopy.php:69
+#: www/tracker/admin/form-extrafieldcopy.php:68
 msgid "Copy From"
 msgstr ""
 
-#: www/tracker/admin/form-extrafieldcopy.php:75
+#: www/tracker/admin/form-extrafieldcopy.php:74
 msgid "Into trackers and custom fields"
 msgstr ""
 
@@ -16865,10 +16940,6 @@
 msgid "Modify a custom field in %s"
 msgstr ""
 
-#: www/tracker/admin/form-updateextrafield.php:48
-msgid "Custom Field Name"
-msgstr ""
-
 #: www/tracker/admin/form-updateextrafield.php:53
 msgid "Text Area Rows"
 msgstr ""
@@ -16885,10 +16956,6 @@
 msgid "Text Field Maxlength"
 msgstr ""
 
-#: www/tracker/admin/form-updateextrafield.php:72
-msgid "Field alias"
-msgstr ""
-
 #: www/tracker/admin/form-updateextrafield.php:75
 msgid "Field is mandatory"
 msgstr ""
@@ -16906,37 +16973,41 @@
 msgid "Modify a custom field element in %s"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:36
+#: www/tracker/admin/form-updatetracker.php:37
 #, php-format
 msgid "Update settings for %s"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:41
+#: www/tracker/admin/form-updatetracker.php:42
 msgid ""
 "<strong>Name:</strong> (examples: meeting minutes, test results, RFP Docs)"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:63 www/tracker/admin/ind.php:148
+#: www/tracker/admin/form-updatetracker.php:64 www/tracker/admin/ind.php:146
+msgid "Allow non-logged-in postings"
+msgstr ""
+
+#: www/tracker/admin/form-updatetracker.php:66 www/tracker/admin/ind.php:148
 msgid "Send email on new submission to address"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:66 www/tracker/admin/ind.php:151
+#: www/tracker/admin/form-updatetracker.php:69 www/tracker/admin/ind.php:151
 msgid "Send email on all changes"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:68 www/tracker/admin/ind.php:153
+#: www/tracker/admin/form-updatetracker.php:71 www/tracker/admin/ind.php:153
 msgid "Days till considered overdue"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:71 www/tracker/admin/ind.php:156
+#: www/tracker/admin/form-updatetracker.php:74 www/tracker/admin/ind.php:156
 msgid "Days till pending tracker items time out"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:74 www/tracker/admin/ind.php:159
+#: www/tracker/admin/form-updatetracker.php:77 www/tracker/admin/ind.php:159
 msgid "Free form text for the \"submit new item\" page"
 msgstr ""
 
-#: www/tracker/admin/form-updatetracker.php:77 www/tracker/admin/ind.php:162
+#: www/tracker/admin/form-updatetracker.php:80 www/tracker/admin/ind.php:162
 msgid "Free form text for the \"browse items\" page"
 msgstr ""
 
@@ -16949,33 +17020,51 @@
 msgid "Select Template"
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:30
+#: www/tracker/admin/form-workflow.php:33
 msgid ""
 "To create a workflow, you need first to create a custom field of type "
 "'Status'."
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:34
-msgid "Internal error: Illegal number of status fields (WKFL01)."
+#: www/tracker/admin/form-workflow.php:36
+msgid "Internal error: Illegal number of status fields (only one allowed)."
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:37
+#: www/tracker/admin/form-workflow.php:40
 msgid "Configure workflow"
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:55
+#: www/tracker/admin/form-workflow.php:47
+msgid "Cannot continue due to an error."
+msgstr ""
+
+#: www/tracker/admin/form-workflow.php:62
 #, php-format
 msgid "Allowed initial values for the %1$s field"
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:63
+#: www/tracker/admin/form-workflow.php:93
 msgid "Initial values"
 msgstr ""
 
-#: www/tracker/admin/form-workflow.php:66
-msgid "From Value"
+#: www/tracker/admin/form-workflow.php:105
+#, php-format
+msgid "Allowed transitions for the %1$s field"
 msgstr ""
 
+#: www/tracker/admin/form-workflow.php:143
+#: www/tracker/admin/form-workflow.php:145
+#: www/tracker/admin/form-workflow.php:154
+msgid "Edit roles"
+msgstr ""
+
+#: www/tracker/admin/form-workflow.php:152
+#, php-format
+msgid ""
+"Tip: Click on %s to configure allowed roles for a transition (all by "
+"default)."
+msgstr ""
+
 #: www/tracker/admin/form-workflow_roles.php:56
 #, php-format
 msgid "Configuring allowed roles for the transitions from %1$s to %2$s"
@@ -17032,10 +17121,6 @@
 msgid "Publicly Available"
 msgstr ""
 
-#: www/tracker/admin/ind.php:146
-msgid "Allow non-logged-in postings"
-msgstr ""
-
 #: www/tracker/admin/index.php:68 www/tracker/admin/updates.php:170
 #: www/tracker/download.php:43 www/tracker/tracker.php:53
 msgid "ArtifactType could not be created"
@@ -17050,7 +17135,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:31
-#: www/tracker/include/ArtifactTypeHtml.class.php:744
+#: www/tracker/include/ArtifactTypeHtml.class.php:746
 msgid "New Tracker"
 msgstr ""
 
@@ -17059,7 +17144,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:36
-#: www/tracker/include/ArtifactTypeHtml.class.php:810
+#: www/tracker/include/ArtifactTypeHtml.class.php:812
 msgid "Update Settings"
 msgstr ""
 
@@ -17068,7 +17153,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:41
-#: www/tracker/include/ArtifactTypeHtml.class.php:815
+#: www/tracker/include/ArtifactTypeHtml.class.php:817
 msgid "Manage Custom Fields"
 msgstr ""
 
@@ -17080,7 +17165,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:46
-#: www/tracker/include/ArtifactTypeHtml.class.php:820
+#: www/tracker/include/ArtifactTypeHtml.class.php:822
 msgid "Manage Workflow"
 msgstr ""
 
@@ -17089,7 +17174,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:51
-#: www/tracker/include/ArtifactTypeHtml.class.php:825
+#: www/tracker/include/ArtifactTypeHtml.class.php:827
 msgid "Customize List"
 msgstr ""
 
@@ -17098,7 +17183,7 @@
 msgstr ""
 
 #: www/tracker/admin/tracker.php:56
-#: www/tracker/include/ArtifactTypeHtml.class.php:830
+#: www/tracker/include/ArtifactTypeHtml.class.php:832
 msgid "Add/Update Canned Responses"
 msgstr ""
 
@@ -17106,10 +17191,6 @@
 msgid "Create/change generic response messages for the tracker."
 msgstr ""
 
-#: www/tracker/admin/tracker.php:61
-msgid "Apply Template Tracker"
-msgstr ""
-
 #: www/tracker/admin/tracker.php:62
 msgid "Duplicate parameters and fields from a template trackers in this one."
 msgstr ""
@@ -17130,6 +17211,10 @@
 msgid "Custom Field Deleted"
 msgstr ""
 
+#: www/tracker/admin/updates.php:100 www/tracker/admin/updates.php:199
+msgid "Error inserting an element"
+msgstr ""
+
 #: www/tracker/admin/updates.php:103
 msgid "Element inserted"
 msgstr ""
@@ -17146,8 +17231,8 @@
 msgid "Canned Response Inserted"
 msgstr ""
 
-#: www/tracker/admin/updates.php:144 www/tracker/admin/updates.php:300
-#: www/tracker/admin/updates.php:324 www/tracker/admin/updates.php:338
+#: www/tracker/admin/updates.php:144 www/tracker/admin/updates.php:307
+#: www/tracker/admin/updates.php:331 www/tracker/admin/updates.php:345
 msgid "Error updating"
 msgstr ""
 
@@ -17160,8 +17245,8 @@
 msgstr ""
 
 #: www/tracker/admin/updates.php:228 www/tracker/admin/updates.php:259
-#: www/tracker/admin/updates.php:379 www/tracker/admin/updates.php:402
-#: www/tracker/admin/updates.php:422
+#: www/tracker/admin/updates.php:386 www/tracker/admin/updates.php:409
+#: www/tracker/admin/updates.php:429
 msgid "Error updating a custom field"
 msgstr ""
 
@@ -17177,190 +17262,194 @@
 msgid "Clone ID"
 msgstr ""
 
-#: www/tracker/admin/updates.php:278
+#: www/tracker/admin/updates.php:281
+msgid "Error looking up template project"
+msgstr ""
+
+#: www/tracker/admin/updates.php:284
 msgid "Error cloning fields: "
 msgstr ""
 
-#: www/tracker/admin/updates.php:280
+#: www/tracker/admin/updates.php:286
 msgid "Successfully Cloned Tracker Fields "
 msgstr ""
 
-#: www/tracker/admin/updates.php:303 www/tracker/admin/updates.php:327
-#: www/tracker/admin/updates.php:382 www/tracker/admin/updates.php:411
-#: www/tracker/admin/updates.php:425
+#: www/tracker/admin/updates.php:310 www/tracker/admin/updates.php:334
+#: www/tracker/admin/updates.php:389 www/tracker/admin/updates.php:418
+#: www/tracker/admin/updates.php:432
 msgid "Tracker Updated"
 msgstr ""
 
-#: www/tracker/admin/updates.php:361
+#: www/tracker/admin/updates.php:368
 msgid "Renderer Uploaded"
 msgstr ""
 
-#: www/tracker/admin/updates.php:363
+#: www/tracker/admin/updates.php:370
 msgid "Renderer File empty"
 msgstr ""
 
-#: www/tracker/admin/updates.php:438
+#: www/tracker/admin/updates.php:445
 msgid "ERROR: Initial values not saved, no initial state given."
 msgstr ""
 
-#: www/tracker/admin/updates.php:442
+#: www/tracker/admin/updates.php:449
 msgid "Initial values saved."
 msgstr ""
 
-#: www/tracker/admin/updates.php:451 www/tracker/admin/updates.php:460
+#: www/tracker/admin/updates.php:458 www/tracker/admin/updates.php:467
 msgid "Workflow saved"
 msgstr ""
 
-#: www/tracker/admin/updates.php:478
+#: www/tracker/admin/updates.php:485
 msgid "Error deleting an element"
 msgstr ""
 
-#: www/tracker/admin/updates.php:481
+#: www/tracker/admin/updates.php:488
 msgid "Element deleted"
 msgstr ""
 
-#: www/tracker/browse.php:158
+#: www/tracker/browse.php:164
 msgid "Query Name"
 msgstr ""
 
-#: www/tracker/browse.php:162 www/tracker/browse.php:494
+#: www/tracker/browse.php:168 www/tracker/browse.php:502
 msgid "Load"
 msgstr ""
 
-#: www/tracker/browse.php:174
+#: www/tracker/browse.php:180
 msgid "Deleted query successful."
 msgstr ""
 
-#: www/tracker/browse.php:217
+#: www/tracker/browse.php:223
 #, php-format
 msgid "Saved query with name \"%s\"."
 msgstr ""
 
-#: www/tracker/browse.php:278 www/tracker/query.php:200
+#: www/tracker/browse.php:284 www/tracker/query.php:202
 msgid "Submitter"
 msgstr ""
 
-#: www/tracker/browse.php:295 www/tracker/query.php:217
+#: www/tracker/browse.php:301 www/tracker/query.php:219
 msgid "Ascending"
 msgstr ""
 
-#: www/tracker/browse.php:296 www/tracker/query.php:218
+#: www/tracker/browse.php:302 www/tracker/query.php:220
 msgid "Descending"
 msgstr ""
 
-#: www/tracker/browse.php:306 www/tracker/query.php:229
+#: www/tracker/browse.php:312 www/tracker/query.php:231
 msgid "Any changes"
 msgstr ""
 
-#: www/tracker/browse.php:307 www/tracker/query.php:230
+#: www/tracker/browse.php:313 www/tracker/query.php:232
 msgid "Last 24H"
 msgstr ""
 
-#: www/tracker/browse.php:308 www/tracker/query.php:231
+#: www/tracker/browse.php:314 www/tracker/query.php:233
 msgid "Last 7days"
 msgstr ""
 
-#: www/tracker/browse.php:309 www/tracker/query.php:232
+#: www/tracker/browse.php:315 www/tracker/query.php:234
 msgid "Last 2weeks"
 msgstr ""
 
-#: www/tracker/browse.php:310 www/tracker/query.php:233
+#: www/tracker/browse.php:316 www/tracker/query.php:235
 msgid "Last 1month"
 msgstr ""
 
-#: www/tracker/browse.php:369
+#: www/tracker/browse.php:375
 msgid "Power Query [OLD]"
 msgstr ""
 
-#: www/tracker/browse.php:421
+#: www/tracker/browse.php:427
 msgid "Power Query"
 msgstr ""
 
-#: www/tracker/browse.php:423 www/tracker/browse.php:428
-#: www/tracker/query.php:252 www/tracker/query.php:256
+#: www/tracker/browse.php:429 www/tracker/browse.php:434
+#: www/tracker/query.php:254 www/tracker/query.php:258
 msgid "Build Query"
 msgstr ""
 
-#: www/tracker/browse.php:434
+#: www/tracker/browse.php:440
 msgid "Advanced queries"
 msgstr ""
 
-#: www/tracker/browse.php:454
+#: www/tracker/browse.php:460
 msgid "Select Query"
 msgstr ""
 
-#: www/tracker/browse.php:456
+#: www/tracker/browse.php:462
 msgid "Select One"
 msgstr ""
 
-#: www/tracker/browse.php:467
+#: www/tracker/browse.php:473
 msgid "Tracker Queries"
 msgstr ""
 
-#: www/tracker/browse.php:484
+#: www/tracker/browse.php:491
 msgid "Private Queries"
 msgstr ""
 
-#: www/tracker/browse.php:509
+#: www/tracker/browse.php:517
 msgid "Simple Filtering and Sorting"
 msgstr ""
 
-#: www/tracker/browse.php:538 www/tracker/query.php:390
+#: www/tracker/browse.php:546 www/tracker/query.php:392
 msgid "Order by"
 msgstr ""
 
-#: www/tracker/browse.php:541
+#: www/tracker/browse.php:549
 msgid "Quick Browse"
 msgstr ""
 
-#: www/tracker/browse.php:566
+#: www/tracker/browse.php:574
 msgid "Default"
 msgstr ""
 
-#: www/tracker/browse.php:567
+#: www/tracker/browse.php:575
 msgid ""
 "Viewing only opened records by default, use 'Advanced queries' or 'Simple "
 "Filtering and Sorting' to change."
 msgstr ""
 
-#: www/tracker/browse.php:656
+#: www/tracker/browse.php:665
 #, php-format
 msgid "unknown #%d"
 msgstr ""
 
-#: www/tracker/browse.php:690
+#: www/tracker/browse.php:706
 #, php-format
 msgid "unknown (\"%s\")"
 msgstr ""
 
-#: www/tracker/browse.php:822
+#: www/tracker/browse.php:858
 msgid "Check  all"
 msgstr ""
 
-#: www/tracker/browse.php:824
+#: www/tracker/browse.php:860
 msgid "Clear  all"
 msgstr ""
 
-#: www/tracker/browse.php:851
-#: www/tracker/include/ArtifactTypeHtml.class.php:656
-#: www/tracker/include/ArtifactTypeHtml.class.php:688
+#: www/tracker/browse.php:887
+#: www/tracker/include/ArtifactTypeHtml.class.php:658
+#: www/tracker/include/ArtifactTypeHtml.class.php:690
 msgid "Nobody"
 msgstr ""
 
-#: www/tracker/browse.php:855
+#: www/tracker/browse.php:891
 msgid "Canned Response"
 msgstr ""
 
-#: www/tracker/browse.php:872 www/tracker/browse.php:874
+#: www/tracker/browse.php:908 www/tracker/browse.php:910
 msgid "Caption"
 msgstr ""
 
-#: www/tracker/browse.php:877
+#: www/tracker/browse.php:913
 #, php-format
 msgid "* Denotes requests > %1$s Days Old"
 msgstr ""
 
-#: www/tracker/browse.php:887
+#: www/tracker/browse.php:923
 msgid "No items found"
 msgstr ""
 
@@ -17381,10 +17470,10 @@
 msgstr ""
 
 #: www/tracker/download.php:51 www/tracker/taskmgr.php:36
-#: www/tracker/tracker.php:94 www/tracker/tracker.php:290
-#: www/tracker/tracker.php:480 www/tracker/tracker.php:497
-#: www/tracker/tracker.php:526 www/tracker/tracker.php:547
-#: www/tracker/tracker.php:596
+#: www/tracker/tracker.php:94 www/tracker/tracker.php:288
+#: www/tracker/tracker.php:479 www/tracker/tracker.php:506
+#: www/tracker/tracker.php:535 www/tracker/tracker.php:556
+#: www/tracker/tracker.php:605
 msgid "Artifact Could Not Be Created"
 msgstr ""
 
@@ -17412,126 +17501,130 @@
 msgstr ""
 
 #: www/tracker/include/ArtifactTypeFactoryHtml.class.php:45
-#: www/tracker/include/ArtifactTypeHtml.class.php:750
+#: www/tracker/include/ArtifactTypeHtml.class.php:752
 msgid "View Trackers"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:139
+#: www/tracker/include/ArtifactTypeHtml.class.php:141
 msgid "No related tasks."
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:149
+#: www/tracker/include/ArtifactTypeHtml.class.php:151
 msgid "Remove Relation"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:186
+#: www/tracker/include/ArtifactTypeHtml.class.php:188
 #, php-format
 msgid "Average completion rate: %d%%"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:231
+#: www/tracker/include/ArtifactTypeHtml.class.php:233
 msgid "Tick an attachment and submit to delete it."
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:611
+#: www/tracker/include/ArtifactTypeHtml.class.php:613
 #, php-format
 msgid "[#%d] (unknown)"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:625
+#: www/tracker/include/ArtifactTypeHtml.class.php:627
 msgid ""
 "Tip: Enter a space-separated list of artifact ids ([#NNN] also accepted)"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:746
+#: www/tracker/include/ArtifactTypeHtml.class.php:748
 msgid "Create a new Tracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:752
+#: www/tracker/include/ArtifactTypeHtml.class.php:754
 msgid "-tooltip:tracker:viewtrackers"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:758
+#: www/tracker/include/ArtifactTypeHtml.class.php:760
 msgid "Browse all items in the current Tracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:761
+#: www/tracker/include/ArtifactTypeHtml.class.php:763
 msgid "Download .csv"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:764
+#: www/tracker/include/ArtifactTypeHtml.class.php:766
 msgid "Download an overview over the items in the current Tracker as CSV file"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:767
+#: www/tracker/include/ArtifactTypeHtml.class.php:769
 msgid "Submit New"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:770
+#: www/tracker/include/ArtifactTypeHtml.class.php:772
 msgid "Enter a new item into the current Tracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:777
+#: www/tracker/include/ArtifactTypeHtml.class.php:779
 msgid "-tooltip:tracker:reporting"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:780
+#: www/tracker/include/ArtifactTypeHtml.class.php:782
 msgid "Stop Monitor"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:784
+#: www/tracker/include/ArtifactTypeHtml.class.php:786
 msgid "-tooltip:tracker:stopmonitor"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:793
+#: www/tracker/include/ArtifactTypeHtml.class.php:795
 msgid "-tooltip:tracker:startmonitor"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:803
+#: www/tracker/include/ArtifactTypeHtml.class.php:805
 msgid ""
 "Administrating that tracker; click here to return to the Tracker Admin "
 "overview page"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:805
+#: www/tracker/include/ArtifactTypeHtml.class.php:807
 msgid "Administrate the current tracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:813
+#: www/tracker/include/ArtifactTypeHtml.class.php:815
 msgid "-tooltip:tracker:updatesettings"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:818
+#: www/tracker/include/ArtifactTypeHtml.class.php:820
 msgid "-tooltip:tracker:managecustomfields"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:823
+#: www/tracker/include/ArtifactTypeHtml.class.php:825
 msgid "Assign Role permissions to state transitions"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:828
+#: www/tracker/include/ArtifactTypeHtml.class.php:830
 msgid "-tooltip:tracker:customiselist"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:833
+#: www/tracker/include/ArtifactTypeHtml.class.php:835
 msgid "-tooltip:tracker:cannedresp"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:838
+#: www/tracker/include/ArtifactTypeHtml.class.php:837
+msgid "Clone Tracker"
+msgstr ""
+
+#: www/tracker/include/ArtifactTypeHtml.class.php:840
 msgid "-tooltip:tracker:clonetracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:840
+#: www/tracker/include/ArtifactTypeHtml.class.php:842
 msgid "Really delete the entire tracker"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:843
+#: www/tracker/include/ArtifactTypeHtml.class.php:845
 msgid "Irrevocably delete this entire Tracker and all its contents"
 msgstr ""
 
-#: www/tracker/include/ArtifactTypeHtml.class.php:954
-#: www/tracker/include/ArtifactTypeHtml.class.php:959
-#: www/tracker/query.php:366
+#: www/tracker/include/ArtifactTypeHtml.class.php:958
+#: www/tracker/include/ArtifactTypeHtml.class.php:963
+#: www/tracker/query.php:368
 #, php-format
 msgid "(%% for wildcards)"
 msgstr ""
@@ -17565,160 +17658,178 @@
 msgid "%1$s %2$s: Submit New"
 msgstr ""
 
-#: www/tracker/item.php:189
+#: www/tracker/item.php:194
 msgid "New submission"
 msgstr ""
 
-#: www/tracker/item.php:192
+#: www/tracker/item.php:197
 msgid "Date Submitted"
 msgstr ""
 
-#: www/tracker/item.php:197
+#: www/tracker/item.php:202
 msgid "Date Closed"
 msgstr ""
 
-#: www/tracker/item.php:210
+#: www/tracker/item.php:215
 msgid "Data Type"
 msgstr ""
 
-#: www/tracker/item.php:237
+#: www/tracker/item.php:242
 msgid "Stop monitor"
 msgstr ""
 
-#: www/tracker/item.php:265 www/tracker/item.php:387 www/tracker/query.php:265
+#: www/tracker/item.php:270 www/tracker/item.php:410 www/tracker/query.php:267
 msgid "Save Changes"
 msgstr ""
 
-#: www/tracker/item.php:272
+#: www/tracker/item.php:276
+msgid "Please login"
+msgstr ""
+
+#: www/tracker/item.php:283
+msgid "Please log in."
+msgstr ""
+
+#: www/tracker/item.php:284
+msgid ""
+"If you <strong>cannot</strong> login, then enter your email address here to "
+"submit a new item, post a comment or make any other permitted changes."
+msgstr ""
+
+#: www/tracker/item.php:286
+msgid "Anonymous User eMail"
+msgstr ""
+
+#: www/tracker/item.php:295
 msgid "Debugging Functions"
 msgstr ""
 
-#: www/tracker/item.php:289
+#: www/tracker/item.php:312
 msgid "Item Description"
 msgstr ""
 
-#: www/tracker/item.php:331 www/tracker/query.php:385
+#: www/tracker/item.php:354 www/tracker/query.php:387
 msgid "Followups"
 msgstr ""
 
-#: www/tracker/item.php:332
+#: www/tracker/item.php:355
 msgid "No Followups Have Been Posted"
 msgstr ""
 
-#: www/tracker/item.php:346
+#: www/tracker/item.php:369
 msgid "Attach files to this submission"
 msgstr ""
 
-#: www/tracker/item.php:354
+#: www/tracker/item.php:377
 msgid "Create an attachment"
 msgstr ""
 
-#: www/tracker/item.php:369
+#: www/tracker/item.php:392
 msgid "OR use a canned response"
 msgstr ""
 
-#: www/tracker/item.php:384
+#: www/tracker/item.php:407
 msgid "indicates required fields."
 msgstr ""
 
-#: www/tracker/item.php:394
+#: www/tracker/item.php:417
 msgid "Item Relationships"
 msgstr ""
 
-#: www/tracker/item.php:403
+#: www/tracker/item.php:426
 msgid "You do not have sufficient privileges to view Task relations."
 msgstr ""
 
-#: www/tracker/item.php:405
+#: www/tracker/item.php:428
 msgid "This project does not use Tasks."
 msgstr ""
 
-#: www/tracker/item.php:411
+#: www/tracker/item.php:434
 msgid "Build Task Relation"
 msgstr ""
 
-#: www/tracker/item.php:412
+#: www/tracker/item.php:435
 msgid "Related Tasks"
 msgstr ""
 
-#: www/tracker/item.php:434
+#: www/tracker/item.php:457
 msgid "Instructions"
 msgstr ""
 
-#: www/tracker/item.php:437
+#: www/tracker/item.php:460
 msgid "DO NOT enter passwords or confidential information in your message!"
 msgstr ""
 
-#: www/tracker/query.php:67
+#: www/tracker/query.php:68
 msgid "Query Successfully Created"
 msgstr ""
 
-#: www/tracker/query.php:115
+#: www/tracker/query.php:117
 msgid "Query Updated"
 msgstr ""
 
-#: www/tracker/query.php:144
+#: www/tracker/query.php:146
 msgid "Query Deleted"
 msgstr ""
 
-#: www/tracker/query.php:156
+#: www/tracker/query.php:158
 msgid "Missing Build Query Action"
 msgstr ""
 
-#: www/tracker/query.php:288 www/tracker/query.php:299
+#: www/tracker/query.php:290 www/tracker/query.php:301
 msgid "Name and Save Query"
 msgstr ""
 
-#: www/tracker/query.php:289
+#: www/tracker/query.php:291
 msgid "Load Query"
 msgstr ""
 
-#: www/tracker/query.php:292
+#: www/tracker/query.php:294
 msgid "Update Query"
 msgstr ""
 
-#: www/tracker/query.php:293
+#: www/tracker/query.php:295
 msgid "Delete Query"
 msgstr ""
 
-#: www/tracker/query.php:296
+#: www/tracker/query.php:298
 msgid "Run Query"
 msgstr ""
 
-#: www/tracker/query.php:319
+#: www/tracker/query.php:321
 #, php-format
 msgid "Note: The default project query is currently '%1$s'."
 msgstr ""
 
-#: www/tracker/query.php:322
+#: www/tracker/query.php:324
 msgid "Note: There is no default project query defined."
 msgstr ""
 
-#: www/tracker/query.php:327
+#: www/tracker/query.php:329
 msgid "Type of query"
 msgstr ""
 
-#: www/tracker/query.php:329
+#: www/tracker/query.php:331
 msgid "Private query"
 msgstr ""
 
-#: www/tracker/query.php:331
+#: www/tracker/query.php:333
 msgid "Project level query (query is public)"
 msgstr ""
 
-#: www/tracker/query.php:333
+#: www/tracker/query.php:335
 msgid "Default project query (for project level query only)"
 msgstr ""
 
-#: www/tracker/query.php:371
+#: www/tracker/query.php:373
 msgid "Last Modified Date range"
 msgstr ""
 
-#: www/tracker/query.php:373
+#: www/tracker/query.php:375
 msgid "Open Date range"
 msgstr ""
 
-#: www/tracker/query.php:375
+#: www/tracker/query.php:377
 msgid "Close Date range"
 msgstr ""
 
@@ -17731,7 +17842,7 @@
 msgstr ""
 
 #: www/tracker/reporting/trackeract_graph.php:49
-#: www/tracker/reporting/trackerpie_graph.php:63 www/tracker/tracker.php:303
+#: www/tracker/reporting/trackerpie_graph.php:63 www/tracker/tracker.php:301
 msgid "Error: "
 msgstr ""
 
@@ -17739,27 +17850,36 @@
 msgid "No Available Tasks Found"
 msgstr ""
 
-#: www/tracker/taskmgr.php:99 www/tracker/taskmgr.php:154
+#: www/tracker/taskmgr.php:100 www/tracker/taskmgr.php:167
 msgid "Build Relationship Between Tracker Items and Tasks"
 msgstr ""
 
-#: www/tracker/taskmgr.php:114
+#: www/tracker/taskmgr.php:120
 msgid "Add Relationship to Selected Task"
 msgstr ""
 
-#: www/tracker/taskmgr.php:148
+#: www/tracker/taskmgr.php:161
 msgid "No Existing Project Groups Found"
 msgstr ""
 
-#: www/tracker/taskmgr.php:165
+#: www/tracker/taskmgr.php:178
 msgid "Add Relation to Existing Task"
 msgstr ""
 
-#: www/tracker/taskmgr.php:166
+#: www/tracker/taskmgr.php:179
 msgid "Create New Task"
 msgstr ""
 
-#: www/tracker/tracker.php:143 www/tracker/tracker.php:394
+#: www/tracker/tracker.php:102
+#, php-format
+msgid "Invalid eMail Address \"%s\""
+msgstr ""
+
+#: www/tracker/tracker.php:104
+msgid "No eMail address given"
+msgstr ""
+
+#: www/tracker/tracker.php:143 www/tracker/tracker.php:392
 msgid "Could Not Create File Object"
 msgstr ""
 
@@ -17772,71 +17892,71 @@
 msgid "Item [#%d] successfully created"
 msgstr ""
 
-#: www/tracker/tracker.php:256
+#: www/tracker/tracker.php:254
 msgid "Updated Successfully"
 msgstr ""
 
-#: www/tracker/tracker.php:303
+#: www/tracker/tracker.php:301
 #, php-format
 msgid "Could not get Project Task for %d"
 msgstr ""
 
-#: www/tracker/tracker.php:331 www/tracker/tracker.php:350
+#: www/tracker/tracker.php:329 www/tracker/tracker.php:348
 msgid "Comment added"
 msgstr ""
 
-#: www/tracker/tracker.php:375
+#: www/tracker/tracker.php:373
 #, php-format
 msgid "ERROR: Skipping attachment %d: file is too large."
 msgstr ""
 
-#: www/tracker/tracker.php:379
+#: www/tracker/tracker.php:377
 #, php-format
 msgid "ERROR: Skipping attachment %d: transfer interrupted."
 msgstr ""
 
-#: www/tracker/tracker.php:403
+#: www/tracker/tracker.php:401
 msgid "File Upload: Error"
 msgstr ""
 
-#: www/tracker/tracker.php:406
+#: www/tracker/tracker.php:404
 msgid "File Upload: Successful"
 msgstr ""
 
-#: www/tracker/tracker.php:423
+#: www/tracker/tracker.php:421
 msgid "Could Not Create File Object::"
 msgstr ""
 
-#: www/tracker/tracker.php:428
-msgid "File Delete:"
+#: www/tracker/tracker.php:426
+msgid "File Delete"
 msgstr ""
 
-#: www/tracker/tracker.php:431
+#: www/tracker/tracker.php:429
 msgid "File Delete: Successful"
 msgstr ""
 
-#: www/tracker/tracker.php:443
+#: www/tracker/tracker.php:442
 #, php-format
 msgid "Item [#%d] successfully updated"
 msgstr ""
 
-#: www/tracker/tracker.php:485 www/tracker/tracker.php:502
+#: www/tracker/tracker.php:484 www/tracker/tracker.php:511
 msgid "Monitoring Started"
 msgstr ""
 
-#: www/tracker/tracker.php:487 www/tracker/tracker.php:504
+#: www/tracker/tracker.php:486 www/tracker/tracker.php:513
 msgid "Monitoring Deactivated"
 msgstr ""
 
-#: www/tracker/tracker.php:552
+#: www/tracker/tracker.php:561
 msgid "Confirmation failed. Artifact not deleted"
 msgstr ""
 
-#: www/tracker/tracker.php:556
+#: www/tracker/tracker.php:565
 msgid "Artifact Delete Failed"
 msgstr ""
 
-#: www/tracker/tracker.php:558
+#: www/tracker/tracker.php:567
 msgid "Artifact Deleted Successfully"
 msgstr ""
 

Modified: branches/messer-51/src/utils/fixscripts/fix_default_role.php
===================================================================
--- branches/messer-51/src/utils/fixscripts/fix_default_role.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/fixscripts/fix_default_role.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 			 
 $res=db_query_params('CREATE FUNCTION upgrade_default_role_to_admin () RETURNS void AS $$

Modified: branches/messer-51/src/utils/fixscripts/populate_template_project.php
===================================================================
--- branches/messer-51/src/utils/fixscripts/populate_template_project.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/fixscripts/populate_template_project.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -21,7 +21,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfcommon.'include/pre.php';
 
 $err='';
@@ -231,6 +231,13 @@
 	}
 	$project->normalizeAllRoles () ;
 
+	foreach (array(
+		'extratabs',
+		'mediawiki',
+	    ) as $plugname) {
+		$project->setPluginUse($plugname);
+	}
+
 	db_commit();
 
 	return true;

Modified: branches/messer-51/src/utils/include.pl
===================================================================
--- branches/messer-51/src/utils/include.pl	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/include.pl	2012-04-07 14:10:47 UTC (rev 18260)
@@ -4,13 +4,60 @@
 ##############################
 # Global Variables
 ##############################
-$config_file	=	"/etc/gforge/local.pl";	# Local Include file for database username and password
-
 $dummy_uid      =       getpwnam('scm-gforge');                  # UserID of the dummy user that will own group's files
 $date           =       int(time()/3600/24);    # Get the number of days since 1/1/1970 for /etc/shadow
 
-require $config_file;
+ at possible_paths = (
+    '/usr/share/gforge/bin',
+    '/usr/share/fusionforge/bin',
+    '/usr/local/share/gforge/bin',
+    '/usr/local/share/fusionforge/bin',
+    '/opt/gforge/bin',
+    '/opt/fusionforge/bin',
+    '/usr/bin',
+    '/usr/local/bin') ;
+foreach $p (@possible_paths) {
+    if (-x "$p/forge_get_config") {
+	$fgc = "$p/forge_get_config";
+	last;
+    }
+}
 
+%forge_config_cache = ();
+
+sub forge_get_config ($$) {
+    my $var = shift;
+    my $sec = shift || 'core';
+
+    if (!defined $forge_config_cache{$sec}{$var}) {
+	$forge_config_cache{$sec}{$var} = qx!$fgc $var $sec!;
+	chomp $forge_config_cache{$sec}{$var};
+    }
+    return $forge_config_cache{$sec}{$var};
+}
+
+$sys_default_domain = &forge_get_config ('web_host') ;
+$sys_scm_host = &forge_get_config ('web_host') ;
+$domain_name = &forge_get_config ('web_host') ;
+$sys_users_host = &forge_get_config ('users_host') ;
+$sys_lists_host = &forge_get_config ('lists_host') ;
+$sys_name = &forge_get_config ('forge_name') ;
+$sys_themeroot = &forge_get_config ('themes_root') ;
+$sys_news_group = &forge_get_config ('news_group') ;
+$sys_dbhost = &forge_get_config ('database_host') ;
+$sys_dbport = &forge_get_config ('database_port') ;
+$sys_dbname = &forge_get_config ('database_name') ;
+$sys_dbuser = &forge_get_config ('database_user') ;
+$sys_dbpasswd = &forge_get_config ('database_password') ;
+$sys_ldap_base_dn = &forge_get_config ('ldap_base_dn') ;
+$sys_ldap_host = &forge_get_config ('ldap_host') ;
+$server_admin = &forge_get_config ('admin_email') ;
+$peerrating_groupid = &forge_get_config ('peer_rating_group') ;
+$chroot_prefix = &forge_get_config ('chroot') ;
+$homedir_prefix = &forge_get_config ('homedir_prefix') ;
+$grpdir_prefix = &forge_get_config ('groupdir_prefix') ;
+$file_dir = &forge_get_config ('data_path') ;
+
 ##############################
 # Database Connect Functions
 ##############################

Modified: branches/messer-51/src/utils/inject-files.php
===================================================================
--- branches/messer-51/src/utils/inject-files.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/inject-files.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname (__FILE__).'/../www/env.inc.php');
+require (dirname (__FILE__).'/../common/include/env.inc.php');
 require_once $gfcommon.'include/pre.php';
 require_once $gfcommon.'frs/FRSPackage.class.php';
 require_once $gfcommon.'frs/FRSRelease.class.php';

Modified: branches/messer-51/src/utils/inject-groups.php
===================================================================
--- branches/messer-51/src/utils/inject-groups.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/inject-groups.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname (__FILE__).'/../www/env.inc.php');
+require (dirname (__FILE__).'/../common/include/env.inc.php');
 require_once $gfcommon.'include/pre.php';
 
 db_begin ();

Modified: branches/messer-51/src/utils/inject-users.php
===================================================================
--- branches/messer-51/src/utils/inject-users.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/inject-users.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname (__FILE__).'/../www/env.inc.php');
+require (dirname (__FILE__).'/../common/include/env.inc.php');
 require_once $gfcommon.'include/pre.php';
 
 db_begin ();

Modified: branches/messer-51/src/utils/migrate-to-ini-files.sh
===================================================================
--- branches/messer-51/src/utils/migrate-to-ini-files.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/migrate-to-ini-files.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -82,7 +82,6 @@
 add_config core src_path >> $tmp
 add_config core stats_group >> $tmp
 add_config core sys_proxy >> $tmp
-add_config core template_group >> $tmp
 add_config core themes_root >> $tmp
 add_config core unix_cipher >> $tmp
 add_config core upload_dir >> $tmp

Modified: branches/messer-51/src/utils/normalize_roles.php
===================================================================
--- branches/messer-51/src/utils/normalize_roles.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/normalize_roles.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,9 +19,9 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require (dirname(__FILE__).'/../common/include/env.inc.php');
 require_once $gfcommon.'include/pre.php';
-			 
+
 $err='';
 
 // Plugins subsystem
@@ -39,8 +39,9 @@
 for ($i=0; $i<$rows; $i++) {
 	$role = RBACEngine::getInstance()->getRoleById (db_result($res,$i,'role_id')) ;
 	echo "Normalizing role ".$role->getDisplayableName()."\n" ;
-	
+
 	$role->normalizeData() ;
 }
 
-?>
+$params = array();
+plugin_hook("normalise_roles", $params);

Copied: branches/messer-51/src/utils/scm-newsubrepo.php (from rev 18259, trunk/gforge_base/evolvisforge-5.1/src/utils/scm-newsubrepo.php)
===================================================================
--- branches/messer-51/src/utils/scm-newsubrepo.php	                        (rev 0)
+++ branches/messer-51/src/utils/scm-newsubrepo.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,89 @@
+#!/usr/bin/php5 -f
+<?php
+/*-
+ * Create new SCM subrepository for an existing group.
+ *
+ * Copyright © 2011
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * Copyright © 2010
+ *	Roland Mas
+ * All rights reserved.
+ *
+ * This file is part of FusionForge. FusionForge 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 Licence, or (at your option)
+ * any later version.
+ *
+ * FusionForge 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 FusionForge; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *-
+ * Create new SCM subrepository for an existing group, if the SCM
+ * supports this (svn doesn’t but git does).
+ */
+
+function usage($rc=1) {
+	echo "Usage: .../scm-newsubrepo.php groupname newreponame\n";
+	exit($rc);
+}
+
+if (count($argv) != 3) {
+	usage();
+}
+$argv0 = array_shift($argv);
+$p_groupname = array_shift($argv);
+$p_reponame = array_shift($argv);
+
+require_once(dirname(__FILE__).'/../common/include/env.inc.php');
+require_once $gfwww.'include/squal_pre.php';
+require_once $gfcommon.'include/cron_utils.php';
+
+// Plugins subsystem
+require_once $gfcommon.'include/Plugin.class.php';
+require_once $gfcommon.'include/PluginManager.class.php';
+
+// SCM-specific plugins subsystem
+require_once $gfcommon.'include/SCMPlugin.class.php';
+
+// Fake admin user login
+session_set_admin();
+
+setup_plugin_manager();
+
+$group = group_get_object_by_name($p_groupname);
+if (!$group || $group->isError()) {
+	echo "Wrong group! ";
+	if ($group) {
+		echo $group->getErrorMessage();
+	}
+	echo "\n";
+	usage();
+}
+
+/* ltrim and rtrim, strip leading/trailing slash and ".git" */
+$p_reponame = ltrim(preg_replace('#(/|.git)*$#', '', trim($p_reponame)), "/");
+
+foreach (explode("/", $p_reponame) as $p_reponamepart) {
+	if (!account_groupnamevalid($p_reponamepart)) {
+		echo "Invalid subrepo name! " . $GLOBALS['register_error'] . "\n";
+		usage();
+	}
+}
+
+$hook_params = array(
+	'group_id' => $group->getID(),
+	'newrepo' => $p_reponame,
+    );
+if (plugin_hook('scm_create_subrepo', $hook_params)) {
+	echo "Failed! Maybe the plugin doesn't support this?\n";
+	usage();
+}
+
+$hook_params = array();
+plugin_hook('scm_update_repolist', $hook_params);


Property changes on: branches/messer-51/src/utils/scm-newsubrepo.php
___________________________________________________________________
Added: svn:executable
   + *

Modified: branches/messer-51/src/utils/sync_unix_groups.php
===================================================================
--- branches/messer-51/src/utils/sync_unix_groups.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/sync_unix_groups.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -19,7 +19,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require (dirname(__FILE__).'/../www/env.inc.php');
+require (dirname(__FILE__).'/../common/include/env.inc.php');
 require_once $gfcommon.'include/pre.php';
 			 
 $err='';

Modified: branches/messer-51/src/utils/user-del.php
===================================================================
--- branches/messer-51/src/utils/user-del.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/utils/user-del.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -47,7 +47,7 @@
 	usage();
 }
 
-require_once(dirname(__FILE__).'/../www/env.inc.php');
+require dirname(__FILE__).'/../common/include/env.inc.php';
 require_once $gfwww.'include/squal_pre.php';
 require_once $gfcommon.'include/cron_utils.php';
 

Modified: branches/messer-51/src/www/DTD/xhtml10t-rdfa10.dtd
===================================================================
--- branches/messer-51/src/www/DTD/xhtml10t-rdfa10.dtd	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/DTD/xhtml10t-rdfa10.dtd	2012-04-07 14:10:47 UTC (rev 18260)
@@ -12,7 +12,7 @@
    Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
    All Rights Reserved.
 
-   Copyright (c) 2011 Thorsten Glaser <t.glaser at tarent.de>
+   Copyright (c) 2011, 2012 Thorsten Glaser <t.glaser at tarent.de>
    HTML 4 (loose) + RDFa 1.0 by: Shane McCarron <shane at aptest.com>
 
    This DTD module is covered by the same licence as the W3C published
@@ -911,6 +911,7 @@
   %focus;
   shape       %Shape;        "rect"
   coords      %Coords;       #IMPLIED
+  href        %URI;          #IMPLIED
   nohref      (nohref)       #IMPLIED
   alt         %Text;         #REQUIRED
   target      %FrameTarget;  #IMPLIED

Modified: branches/messer-51/src/www/account/register.php
===================================================================
--- branches/messer-51/src/www/account/register.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/account/register.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -235,8 +235,8 @@
 		      util_make_url ('/terms.php')); ?>
 	</p>
 <?php } ?>
-<?php if (false && forge_check_global_perm ('forge_admin')) { ?>
-	<p><input type="checkbox" name="activate_immediately" value="0" />
+<?php if (forge_check_global_perm('forge_admin')) { ?>
+	<p><input type="checkbox" name="activate_immediately" value="1" />
 <?php print _('Activate this user immediately') ; ?>
 	</p>
 <?php } ?>

Modified: branches/messer-51/src/www/admin/grouplist.php
===================================================================
--- branches/messer-51/src/www/admin/grouplist.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/admin/grouplist.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,8 +1,11 @@
 <?php
-/**
- * List of all groups in the system. 
+/*-
+ * List of all groups on the forge.
  *
- * Copyright 1999-2000 (c) The SourceForge Crew
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * Copyright © 1999-2000 The SourceForge Crew
+ * All rights reserved.
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -22,152 +25,187 @@
 
 require_once('../env.inc.php');
 require_once $gfcommon.'include/pre.php';
+require_once $gfcommon.'include/datepick.php';
 require_once $gfwww.'admin/admin_utils.php';
 
-site_admin_header(array('title'=>_('Project List')));
+$tcolnames = array(
+	_('Project Name (click to edit)'),
+	_('Register Time'),
+	_('Unix name'),
+	_('Status'),
+	_('Public?'),
+	_('Licence'),
+	_('Members#'),
+	_('Template?'),
+    );
 
-$sortorder = getStringFromRequest('sortorder');
+$tcolids = array(
+	'group_name',
+	'register_time',
+	'unix_group_name',
+	'status',
+	'is_public',
+	'license_name',
+	'members',
+	'is_template',
+    );
+
 $group_name_search = getStringFromRequest('group_name_search');
 $status = getStringFromRequest('status');
+$sortorder = getStringFromRequest('sortorder');
+$sortorder = in_array($sortorder, $tcolids) ? $sortorder : 'unix_group_name';
+$sortrev = getIntFromRequest('sortrev');
 
-$sortorder = util_ensure_value_in_set ($sortorder,
-				       array ('group_name',
-					      'register_time',
-					      'unix_group_name',
-					      'status',
-					      'is_public',
-					      'license_name',
-					      'members',
-					      'is_template')) ;
-
-$sqlsortorder = $sortorder;
-
-if ($sortorder == 'is_public') {
-	$sortorder = 'group_name' ;
-} elseif ($sortorder == 'is_template') {
-	$sortorder = 'is_template DESC' ;
+if (USE_PFO_RBAC) {
+	$ra = RoleAnonymous::getInstance();
+	$qpa = db_construct_qpa(false, '
+		SELECT group_name, register_time, unix_group_name,
+		    groups.group_id, groups.is_template, status, license_name,
+		    COUNT(DISTINCT(pfo_user_role.user_id)) AS members
+		FROM groups
+		LEFT OUTER JOIN pfo_role
+			ON pfo_role.home_group_id = groups.group_id
+		LEFT OUTER JOIN pfo_user_role
+			ON pfo_user_role.role_id = pfo_role.role_id
+		    , licenses
+		WHERE
+			license_id = license
+	    ');
+} else {
+	$qpa = db_construct_qpa(false, '
+		SELECT group_name, register_time, unix_group_name,
+		    groups.group_id, groups.is_public, groups.is_template,
+		    status, license_name,
+		    COUNT(user_group.group_id) AS members
+		FROM groups
+		LEFT JOIN user_group
+			ON user_group.group_id = groups.group_id
+		    , licenses
+		WHERE
+			license_id = license
+	    ');
 }
+if ($group_name_search) {
+	$qpa = db_construct_qpa($qpa, '
+		AND lower(group_name) LIKE $1
+	    ', array(
+		strtolower($group_name_search . '%'),
+	    ));
+} else if ($status) {
+	$qpa = db_construct_qpa($qpa, '
+		AND status = $1
+	    ', array(
+		$status,
+	    ));
+}
+if (USE_PFO_RBAC) {
+	$qpa = db_construct_qpa($qpa, '
+		GROUP BY group_name, register_time, unix_group_name,
+		    groups.group_id,
+		    groups.is_template, status, license_name
+	    ');
+} else {
+	$qpa = db_construct_qpa($qpa, '
+		GROUP BY group_name, register_time, unix_group_name,
+		    groups.group_id, groups.is_public,
+		    groups.is_template, status, license_name
+	    ');
+}
+$res = db_query_qpa($qpa);
 
-if ($group_name_search != '') {
-	echo "<p>"._('Projects that begin with'). " <strong>".$group_name_search."</strong></p>\n";
+$rows = array();
+while (($grp = db_fetch_array($res))) {
 	if (USE_PFO_RBAC) {
-		$res = db_query_params ('SELECT group_name,register_time,unix_group_name,groups.group_id,groups.is_template,status,license_name,COUNT(DISTINCT(pfo_user_role.user_id)) AS members FROM groups LEFT OUTER JOIN pfo_role ON pfo_role.home_group_id=groups.group_id LEFT OUTER JOIN pfo_user_role ON pfo_user_role.role_id=pfo_role.role_id, licenses WHERE license_id=license AND lower(group_name) LIKE $1 GROUP BY group_name,register_time,unix_group_name,groups.group_id,groups.is_template,status,license_name ORDER BY '.$sqlsortorder,
-					array (strtolower ("$group_name_search%"))) ;
-	} else {
-	$res = db_query_params ('SELECT group_name,register_time,unix_group_name,groups.group_id,groups.is_public,groups.is_template,status,license_name,COUNT(user_group.group_id) AS members
-FROM groups
-LEFT JOIN user_group ON user_group.group_id=groups.group_id, licenses
-WHERE license_id=license
-AND lower(group_name) LIKE $1
-GROUP BY group_name,register_time,unix_group_name,groups.group_id,groups.is_public,groups.is_template,status,license_name
-ORDER BY '.$sortorder,
-				array (strtolower ("$group_name_search%"))) ;
+		$grp['is_public'] = $ra->hasPermission('project_read',
+		    $grp['group_id']) ? 1 : 0;
 	}
-} else {
-	if (USE_PFO_RBAC) {
-		$qpa = db_construct_qpa (false, 'SELECT group_name,register_time,unix_group_name,groups.group_id,groups.is_template,status,license_name,COUNT(DISTINCT(pfo_user_role.user_id)) AS members FROM groups LEFT OUTER JOIN pfo_role ON pfo_role.home_group_id=groups.group_id LEFT OUTER JOIN pfo_user_role ON pfo_user_role.role_id=pfo_role.role_id, licenses WHERE license_id=license') ;
-		if ($status) {
-			$qpa = db_construct_qpa ($qpa, ' AND status=$1', array ($status)) ;
-		}
-		$qpa = db_construct_qpa ($qpa, ' GROUP BY group_name,register_time,unix_group_name,groups.group_id,groups.is_template,status,license_name ORDER BY '.$sqlsortorder) ;
-		$res = db_query_qpa ($qpa) ;
-	} else {
-		$qpa = db_construct_qpa (false, 'SELECT group_name,register_time,unix_group_name,groups.group_id,groups.is_public,groups.is_template,status,license_name,COUNT(user_group.group_id) AS members
-FROM groups
-LEFT JOIN user_group ON user_group.group_id=groups.group_id, licenses
-WHERE license_id=license',
-					 array ()) ;
-		if ($status) {
-			$qpa = db_construct_qpa ($qpa, ' AND status=$1', array ($status)) ;
-		}
-		$qpa = db_construct_qpa ($qpa, ' GROUP BY group_name,register_time,unix_group_name,groups.group_id,groups.is_public,groups.is_template,status,license_name ORDER BY '.$sortorder) ;
-		$res = db_query_qpa ($qpa) ;
-	}
+	$rows[] = $grp;
 }
 
-$headers = array(
-	_('Project Name (click to edit)'),
-	_('Register Time'),
-	_('Unix name'),
-	_('Status'),
-	_('Public?'),
-	_('License'),
-	_('Members'),
-	_('Template?')
-);
+usort($rows, create_function('$a, $b', '
+	global $sortorder, $sortrev;
 
-$headerLinks = array(
-	'/admin/grouplist.php?sortorder=group_name',
-	'/admin/grouplist.php?sortorder=register_time',
-	'/admin/grouplist.php?sortorder=unix_group_name',
-	'/admin/grouplist.php?sortorder=status',
-	'/admin/grouplist.php?sortorder=is_public',
-	'/admin/grouplist.php?sortorder=license_name',
-	'/admin/grouplist.php?sortorder=members',
-	'/admin/grouplist.php?sortorder=is_template'
-);
+	$av = $a[$sortorder];
+	$bv = $b[$sortorder];
 
-echo $HTML->listTableTop($headers, $headerLinks);
+	switch ($sortorder) {
+	case "register_time":
+	case "is_public":
+	case "members":
+	case "is_template":
+		$rv = $av === $bv ? 0 : $av > $bv ? 1 : -1;
+		break;
 
-if (USE_PFO_RBAC) {
-	$public_rows = array();
-	$private_rows = array();
-	$ra = RoleAnonymous::getInstance() ;
-	while ($grp = db_fetch_array($res)) {
-		if ($ra->hasPermission('project_read', $grp['group_id'])) {
-			$grp['is_public'] = 1;
-			$public_rows[] = $grp;
-		} else {
-			$grp['is_public'] = 0;
-			$private_rows[] = $grp;
-		}
+	case "group_name":
+	case "status":
+	case "license_name":
+		$rv = strcasecmp($av, $bv);
+		break;
+
+	case "unix_group_name":
+	default:
+		$rv = 0;
 	}
-	$rows = $private_rows;
-	$rows = array_merge($rows, $public_rows);
-} else {
-	$rows = array();
-	while ($grp = db_fetch_array($res)) {
-		$rows[] = $grp;
+
+	/* second order sort is by unix group id */
+	$rv = $rv ? $rv : strcmp($a["unix_group_name"], $b["unix_group_name"]);
+
+	return ($sortrev ? -$rv : $rv);
+    '));
+
+$t = new EvolvisTable($tcolnames, array_map(create_function('$v', '
+	global $sortorder, $sortrev;
+
+	$rv = "/admin/grouplist.php?sortorder=" . $v;
+	if ($v == $sortorder && !$sortrev) {
+		$rv .= "&sortrev=1";
 	}
-}
 
-$i = 0;
+	return ($rv);
+    '), $tcolids));
+
 foreach ($rows as $grp) {
+	switch ($grp['status']) {
+	case 'A':
+		$status = "active";
+		break;
+	case 'D':
+		$status = "deleted";
+		break;
+	case 'P':
+		$status = "pending";
+		break;
+	default:
+		$status = "";
+	}
 
-	if ($grp['status']=='A'){
-		$status="active";
+	$r = $t->tr();
+	$r->td()->setraw(html_e('a', array(
+		'href' => 'groupedit.php?group_id=' . $grp['group_id'],
+	    ), util_html_secure($grp['group_name'])));
+	$x = $r->td();
+	if ($grp['register_time']) {
+		$x->set(datepick_format($grp['register_time'], true));
 	}
-	if ($grp['status']=='P'){
-		$status="pending";
-	}
-	if ($grp['status']=='D'){
-		$status="deleted";
-	}
-	
-	$time_display = "";
-	if ($grp['register_time'] != 0) {
-		$time_display = date(_('Y-m-d H:i'),$grp['register_time']);
-	}
-	echo '<tr '.$HTML->boxGetAltRowStyle($i).'>';
-	echo '<td><a href="groupedit.php?group_id='.$grp['group_id'].'">'.$grp['group_name'].'</a></td>';
-	echo '<td>'.$time_display.'</td>';
-	echo '<td>'.$grp['unix_group_name'].'</td>';
-	echo '<td class="'.$status.'">'.$grp['status'].'</td>';
-	echo '<td>'.$grp['is_public'].'</td>';
-	echo '<td>'.$grp['license_name'].'</td>';
-	echo '<td>'.$grp['members'].'</td>';
-	echo '<td>'.$grp['is_template'].'</td>';
-	echo '</tr>';
-	$i++;
+	$r->td()->set($grp['unix_group_name']);
+	$r->td(array(
+		'class' => $status,
+	    ), -1, $grp['status']);
+	$r->td()->set($grp['is_public'] ? _('Yes') : _('No'));
+	$r->td()->set($grp['license_name']);
+	$r->td()->set($grp['members']);
+	$r->td()->set($grp['is_template'] ? _('Yes') : _('No'));
 }
 
-echo $HTML->listTableBottom();
+site_admin_header(array(
+	'title' => _('Project List'),
+    ));
 
+if ($group_name_search) {
+	echo html_e('p', array(
+	    ), util_html_encode(sprintf(_('Projects that begin with "%s"'),
+	    $group_name_search)));
+}
+echo $t->emit();
+
 site_admin_footer(array());
-
-// Local Variables:
-// mode: php
-// c-file-style: "bsd"
-// End:
-
-?>

Modified: branches/messer-51/src/www/admin/pi.php
===================================================================
--- branches/messer-51/src/www/admin/pi.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/admin/pi.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -48,6 +48,11 @@
 
 session_require_global_perm ('forge_admin');
 
+site_admin_header(array('title' => '<' . '?php phpinfo(); ?' . '>'));
+ob_start();
 phpinfo();
-
-?>
+$pi = ob_get_clean();
+echo "<div id=\"ff-phpinfo-content\">\n" .
+    preg_replace('#^.*<body[^>]*>(.*)</body.*$#ms', '$1', $pi) .
+    "\n</div>\n";
+site_admin_footer(array());

Modified: branches/messer-51/src/www/export/rss_utils.inc
===================================================================
--- branches/messer-51/src/www/export/rss_utils.inc	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/export/rss_utils.inc	2012-04-07 14:10:47 UTC (rev 18260)
@@ -65,7 +65,7 @@
 		print "   <title>".htmlspecialchars($row['group_name'])."</title>\n";
 		print "   <link>".util_make_url_g ($row['unix_group_name'],$row['group_id'])."</link>\n";
 		print "   <description>";
-		print ereg_replace(" *\r*\n *"," ",rss_description($row['short_description']));
+		print preg_replace("/ *\r*\n */"," ",rss_description($row['short_description']));
                 print $addendum;
 		print "</description>\n";
 		print "  </item>\n";

Modified: branches/messer-51/src/www/forum/monitor.php
===================================================================
--- branches/messer-51/src/www/forum/monitor.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/forum/monitor.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -50,22 +50,6 @@
 		}
 
 		if (getStringFromRequest('stop')) {
-			$confirm = getStringFromRequest('confirm');
-			$cancel = getStringFromRequest('cancel');
-			if ($cancel) {
-                session_redirect('/forum/forum.php?forum_id='.$forum_id.'&group_id='.$group_id);
-			}
-			if (!$confirm) {
-				forum_header(array('title'=>_('Stop Monitoring')));
-			echo $HTML->confirmBox(
-				sprintf(_('You are about to stop monitoring the %1$s forum.'),$f->getName()).
-					'<br/><br/>'.
-					_('Do you really want to unsubscribe ?'),
-					array('group_id' => $group_id, 'forum_id' => $forum_id, 'stop' => 1),
-			array('confirm' => _('Unsubscribe'), 'cancel' => _('Cancel')) );
-				forum_footer(array());
-				exit;
-			}
 			if (!$f->stopMonitor()) {
 				exit_error($f->getErrorMessage(),'forums');
 			} else {

Modified: branches/messer-51/src/www/frs/index.php
===================================================================
--- branches/messer-51/src/www/frs/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/frs/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -188,10 +188,10 @@
                 // Switch whether release_id exists and/or release_id == package_release['release_id']
                 if ( ! $release_id ) {
                     // no release_id
-                    echo $GLOBALS['HTML']->listTableTop($cell_data,'',false);
+                    echo $GLOBALS['HTML']->listTableTop($cell_data);
                 } elseif ($release_id == $cur_relid) {
                     // release_id is current one
-                    echo $GLOBALS['HTML']->listTableTop($cell_data,'',true);
+                    echo $GLOBALS['HTML']->listTableTop($cell_data);
                 } else {
                     // release_id but not current one => dont print anything here
                 }

Modified: branches/messer-51/src/www/frs/reporting/downloads.php
===================================================================
--- branches/messer-51/src/www/frs/reporting/downloads.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/frs/reporting/downloads.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -112,8 +112,7 @@
     echo '</p>';
 } else {
 
-    echo $HTML->listTableTop (array('Package', 'Release', 'File','User', 'Date'),
-                              false, true, 'Download');
+    echo $HTML->listTableTop(array('Package', 'Release', 'File','User', 'Date'));
 
     for ($i=0; $i<count($data); $i++) {
 		$date = preg_replace('/^(....)(..)(..)$/', '\1-\2-\3', $data[$i][4]);

Modified: branches/messer-51/src/www/include/Layout.class.php
===================================================================
--- branches/messer-51/src/www/include/Layout.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/include/Layout.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -602,12 +602,12 @@
 	 *
 	 * @param	array	The array of titles
 	 * @param	array	The array of title links
-	 * @param	string	The css classes to add (optional)
-	 * @param	string	The id of the table (needed by sortable for example)
-	 * @param	array	specific class for th column
 	 * @return	string	the html code
 	 */
-	function listTableTop($titleArray, $linksArray=false, $class='', $id='', $thClassArray=array()) {
+	function listTableTop($titleArray, $linksArray=false) {
+		$class='';
+		$id='';
+		$thClassArray=array();
 		$args = '';
 		if ($class) {
 			$args .= ' class="listing '.$class.'"';

Modified: branches/messer-51/src/www/include/html.php
===================================================================
--- branches/messer-51/src/www/include/html.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/include/html.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,7 +5,7 @@
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2010 (c) FusionForge Team
  * Copyright (C) 2010 Alain Peyrat - Alcatel-Lucent
- * Copyright © 2011
+ * Copyright © 2011, 2012
  *	Thorsten “mirabilos” Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge. FusionForge is free software;
@@ -836,22 +836,28 @@
 
 	//get the project object
 	$project = group_get_object($group_id);
-
-	if (!$project || !is_object($project)) {
-		exit_no_group();
-	} else if ($project->isError()) {
-		if ($project->isPermissionDeniedError()) {
-			if (!session_get_user()) {
- 			$next = '/account/login.php?error_msg='.urlencode($project->getErrorMessage());
- 			if (getStringFromServer('REQUEST_METHOD') != 'POST') {
-				$next .= '&return_to='.urlencode(getStringFromServer('REQUEST_URI'));
- 			}
+	if ($project && !is_object($project)) {
+		$project = false;
+	}
+	if (!$project || $project->isError()) {
+		/* prevent information leak */
+		if (!session_get_user()) {
+			$next = '/account/login.php?error_msg=' .
+			    urlencode('You must log in to access a project.');
+			if (getStringFromServer('REQUEST_METHOD') != 'POST') {
+				$next .= '&return_to=' .
+				    urlencode(getStringFromServer('REQUEST_URI'));
+			}
 			session_redirect($next);
+			/* NOTREACHED */
 		}
-			else
-				exit_error(sprintf(_('Project access problem: %s'),$project->getErrorMessage()),'home');
+		if (!$project) {
+			exit_error(sprintf(_('Could not access the project #%d'),
+			    $group_id), 'home');
+			/* NOTREACHED */
 		}
-		exit_error(sprintf(_('Project Problem: %s'),$project->getErrorMessage()),'home');
+		exit_error(sprintf(_('Error accessing the project #%d: %s'),
+		    $group_id, $project->getErrorMessage()), 'home');
 	}
 
 	// Check permissions in case of restricted access
@@ -935,13 +941,6 @@
 	$arr_l[] = '/account/' ;
 	$arr_p[] = _('Change the password, SSH keys; configure account settings') ;
 
-	if (!forge_get_config ('project_registration_restricted')
-			|| forge_check_global_perm ('approve_projects', '')) {
-		$arr_t[] = _('Register Project') ;
-		$arr_l[] = '/register/' ;
-		$arr_p[] = _('Register a new Project on the forge') ;
-	}
-
 	$smp = array(
 		'title_arr' => $arr_t,
 		'links_arr' => $arr_l,
@@ -1047,14 +1046,11 @@
 		}
 		$rv .= ' ' . $key . '="' . htmlspecialchars($value) . '"';
 	}
-	if (!$content) {
-		if ($shortform) {
-			$rv .= ' />';
-			return $rv;
-		}
-		$content = "";
+	if ($content === "" && $shortform) {
+		$rv .= ' />';
+	} else {
+		$rv .= '>' . $content . '</' . $name . '>';
 	}
-	$rv .= '>' . $content . '</' . $name . '>';
 	return $rv;
 }
 

Modified: branches/messer-51/src/www/include/project_home.php
===================================================================
--- branches/messer-51/src/www/include/project_home.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/include/project_home.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -34,12 +34,6 @@
 
 $title = _('Project Home');
 
-use_javascript('/scripts/prototype/prototype.js');
-use_javascript('/scripts/scriptaculous/scriptaculous.js');
-use_javascript('/scripts/codendi/Tooltip.js');
-use_javascript('/scripts/codendi/LayoutManager.js');
-use_javascript('/scripts/codendi/ReorderColumns.js');
-
 $request =& HTTPRequest::instance();
 $request->set('group_id',$group_id);
 

Modified: branches/messer-51/src/www/js/sortable.js
===================================================================
--- branches/messer-51/src/www/js/sortable.js	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/js/sortable.js	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,12 +1,28 @@
 /*
 Table sorting script  by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/.
 Based on a script from http://www.kryogenix.org/code/browser/sorttable/.
-Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html .
 
-Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk.
+Version 1.5.7 + FusionForge
 
-Version 1.5.7
-*/
+ * Copyright (c) 1997-2007 Stuart Langridge, Joost de Valk
+ * Copyright (c) 2012 Thorsten Glaser <t.glaser at tarent.de>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
 
 /* You can change these values */
 var image_path = "/images/";
@@ -61,6 +77,7 @@
 function ts_getInnerText(el) {
 	if (typeof el == "string") return el;
 	if (typeof el == "undefined") { return el };
+	if (el.hasAttribute("content")) return el.getAttribute("content");
 	if (el.innerText) return el.innerText;	//Not needed but it is faster
 	var str = "";
 	
@@ -104,7 +121,7 @@
 	sortfn = ts_sort_caseinsensitive;
 	if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
 	if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
-	if (itm.match(/^-?[£$€Û¢´]\d/)) sortfn = ts_sort_numeric;
+	if (itm.match(/^-?[\u00A3$\u20AC\u00A2\u00A5]\d/)) sortfn = ts_sort_numeric;
 	// ape: added to provide numeric sort on size for the docs tools.
 	if (itm.match(/^\d+ *(B|KB|MB)$/)) sortfn = ts_sort_numeric;
 	if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric;
@@ -242,11 +259,11 @@
 	return compare_numeric(aa,bb);
 }
 function compare_numeric(a,b) {
-  var aa = parseFloat(a);
-  aa = (isNaN(aa) ? 0 : aa);
-  var bb = parseFloat(b);
-  bb = (isNaN(bb) ? 0 : bb);
-  return aa - bb;
+	var aa = parseFloat(a);
+	aa = (isNaN(aa) ? 0 : aa);
+	var bb = parseFloat(b);
+	bb = (isNaN(bb) ? 0 : bb);
+	return aa - bb;
 }
 function ts_sort_caseinsensitive(a,b) {
 	var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();

Modified: branches/messer-51/src/www/mail/admin/index.php
===================================================================
--- branches/messer-51/src/www/mail/admin/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/mail/admin/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -107,29 +107,28 @@
 	//
 	//	Reset admin password
 	//
-	if (getIntFromRequest('reset_pw') == 1) {
+	if (getIntFromGet('change_adminpw') && getIntFromGet('group_list_id')) {
 		$mailingList = new MailingList($group, getIntFromGet('group_list_id'));
-		
+
 		if(!$mailingList || !is_object($mailingList)) {
-			exit_error(_('Error getting the list'),'mail');
+			exit_error(_('Error getting the list'), 'mail');
 		} elseif($mailingList->isError()) {
-			exit_error($mailingList->getErrorMessage(),'mail');
+			exit_error($mailingList->getErrorMessage(), 'mail');
 		}
-		
-		if($mailingList->getStatus() == MAIL__MAILING_LIST_IS_CONFIGURED) {
-			if(!$mailingList->update(
-				   $mailingList->getDescription(),
-				   $mailingList->isPublic(),
-				   MAIL__MAILING_LIST_PW_RESET_REQUESTED
-				   )) {
-				exit_error($mailingList->getErrorMessage(),'mail');
-			} else {
-				$feedback .= _('Password reset requested');
-			}
-		}
+
+		if (!is_writable("/var/lib/mailman/lists/".$mailingList->getName()."/config.pck"))
+			exit_error(_('Mailing list configuration not writable'), 'mail');
+
+		$newpw = account_genstr(8);
+
+		$ml = escapeshellarg($mailingList->getName());
+		$newpw = escapeshellarg($newpw);
+		$out = `/usr/lib/mailman/bin/change_pw -l $ml -p $newpw 2>&1`;
+	} else {
+		$newpw = false;
+		$out = "";
 	}
 
-
 //
 //	Form to add list
 //
@@ -140,7 +139,7 @@
 		print '</p>';
 
 		print '<p>';
-		print _('It will take <span class="important">6-24 Hours</span> for your list to be created.');
+		print _('It will take <span class="important">about one hour</span> for your list to be created.');
 		print '</p>';
 		
 		$mlFactory = new MailingListFactory($group);
@@ -252,6 +251,12 @@
 			mail_footer(array());
 			exit;
 		}
+		if ($newpw !== false) {
+			printf('<p>' .
+			    _('Setting mailing list administrator password to: %s') .
+			    "</p>\n", $newpw);
+			echo "<pre>" . htmlentities($out) . "</pre>\n";
+		}
 		echo '<p>'.sprintf(_('You can administrate lists from here. Please note that private lists can still be viewed by members of your project, but are not listed on %1$s.'), forge_get_config ('forge_name')).'</p>';
 		echo '<ul>
 			<li>
@@ -259,6 +264,7 @@
 			</li>
 		</ul>';
 		$mlCount = count($mlArray);
+		$nolistadmin = false;
 		if($mlCount > 0) {
 			$tableHeaders = array(
 				_('Mailing list'),
@@ -274,7 +280,7 @@
 					echo $currentList->getErrorMessage();
 					echo '</td></tr>';
 				} else {
-					echo '<tr '. $HTML->boxGetAltRowStyle($i) . '><td width="60%">'.
+					echo '<tr '. $HTML->boxGetAltRowStyle($i) . '><td width="45%">'.
 					'<strong>'.$currentList->getName().'</strong><br />'.
 					htmlspecialchars($currentList->getDescription()).'</td>'.
 					'<td style="text-align:center"><a href="'.getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_list_id='.$currentList->getID().'&change_status=1">'._('Update').'</a></td>' ;
@@ -286,15 +292,22 @@
 					}
 					echo '</td>';
 					echo '<td style="text-align:center">';
-					if($currentList->getStatus() == MAIL__MAILING_LIST_IS_CONFIGURED) {
-						print '<a href="'.getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_list_id='.$currentList->getID().'&reset_pw=1">'._('Reset admin password').'</a>';
-
+					if ($currentList->getStatus() == MAIL__MAILING_LIST_IS_CONFIGURED) {
+						if (is_writable("/var/lib/mailman/lists/".$currentList->getName()."/config.pck")) {
+							echo '<a href="'.getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&group_list_id='.$currentList->getID().'&change_adminpw=1">'._('Reset Admin Password').'</a>';
+						} else {
+							$nolistadmin = true;
+							echo _("Not available");
+						}
 					}
 					echo "</td></tr>\n";
 				}
 			}
 			echo $HTML->listTableBottom();
 		}
+		if ($nolistadmin) {
+			echo "<p>" . _("To enable changing the ML Admin Password, ask your sysadmin to add www-data to the list group.") . "</p>\n";
+		}
 		mail_footer(array());
 	}
 } else {

Modified: branches/messer-51/src/www/news/news_utils.php
===================================================================
--- branches/messer-51/src/www/news/news_utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/news/news_utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -33,7 +33,8 @@
 	$params['toptab']='news';
 	$params['group']=$group_id;
 
-	if ($group_id && ($group_id != forge_get_config('news_group'))) {
+	if ($group_id && ($group_id != forge_get_config('news_group')) &&
+	    forge_check_perm('project_admin', $group_id)) {
 		$menu_texts=array();
 		$menu_links=array();
 		$menu_ttips=array();
@@ -46,16 +47,13 @@
 		$menu_links[]='/news/submit.php?group_id='.$group_id;
 		$menu_ttips[]=_('-tooltip:news:new');
 
-		if (session_loggedin()) {
-			$project = group_get_object($params['group']);
-			if ($project && is_object($project) && !$project->isError()) {
-				if (forge_check_perm ('project_admin', $group_id)) {
-					$menu_texts[]=_('Administration');
-					$menu_links[]='/news/admin/?group_id='.$group_id;
-					$menu_ttips[]=_('-tooltip:news:admin');
-				}
-			}
+		$project = group_get_object($params['group']);
+		if ($project && is_object($project) && !$project->isError()) {
+			$menu_texts[]=_('Administration');
+			$menu_links[]='/news/admin/?group_id='.$group_id;
+			$menu_ttips[]=_('-tooltip:news:admin');
 		}
+
 		$params['submenu'] = array($menu_texts,$menu_links,$menu_ttips);
 	}
 	/*

Modified: branches/messer-51/src/www/pm/admin/index.php
===================================================================
--- branches/messer-51/src/www/pm/admin/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/admin/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -251,7 +251,7 @@
 	    pm_header(array ('title'=>$title));
 		?>
 		<p />
-		<form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post" />
+		<form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id; ?>" method="post">
 		<input type="hidden" name="update_cat" value="y" />
 		<input type="hidden" name="id" value="<?php echo $ac->getID(); ?>" />
 		<input type="hidden" name="group_project_id" value="<?php echo $pg->getID(); ?>" />

Modified: branches/messer-51/src/www/pm/browse_task.php
===================================================================
--- branches/messer-51/src/www/pm/browse_task.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/browse_task.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -86,6 +86,7 @@
 		exit_error('Error: ' . $pgff->getErrorMessage(), 'pm');
 	}
 
+	$pt_arr = array();
 
 	//Loop through all subprojects and accumulate all project tasks
 	for ($jj = 0; $jj < count($pgArr); $jj++ ) {
@@ -256,7 +257,6 @@
 $hours = pm_ispref("hours");
 $statusId = pm_ispref("statusId");
 $categoryId = pm_ispref("categoryId");
-$categoryName = pm_ispref("catName");
 $lastModifiedDate = pm_ispref("lastModDat");
 $externalId = pm_ispref("externalId");
 $subProjectName = pm_ispref("subprjname");
@@ -387,7 +387,6 @@
 		'hours'              => ($hours ? true : false),
 		'status_id'          => ($statusId ? true : false),
 		'category_id'        => ($categoryId ? true : false),
-		'category_name'      => ($categoryName ? true : false),
 		'last_modified_date' => ($lastModifiedDate ? true : false),
 		'external_id'        => ($externalId ? true : false),
 		'sub_project_name'   => ($subProjectName ? true : false)
@@ -400,8 +399,10 @@
 		$title_arr[]=_('Task Summary');
 	if ($display_col['start_date'])
 		$title_arr[]=_('Start Date');
-	if ($display_col['end_date'])
-		$title_arr[]=_('End Date');
+	if ($display_col['end_date']) {
+		$title_arr[] = '';
+		$title_arr[] = _('End Date');
+	}
 	if ($display_col['percent_complete'])
 		$title_arr[]=_('Percent Complete');
 	if ($display_col['category'])
@@ -428,8 +429,6 @@
 		$title_arr[]=_('Status Id');
 	if ($display_col['category_id'])
 		$title_arr[]=_('Category Id');
-	if ($display_col['category_name'])
-		$title_arr[]=_('Category Name');
 	if ($display_col['last_modified_date'])
 		$title_arr[]=_('Last Modified Date');
 	if ($display_col['external_id'])
@@ -471,11 +470,41 @@
 			$pt_arr[$i]->getID() .'</td>';
 		if ($display_col['summary'])
 			echo '<td class="separateRowsForPrinting"><a href="'.$url.'">'. util_html_secure($pt_arr[$i]->getSummary()) .'</a></td>';
-		if ($display_col['start_date']) 
-			echo '<td class="separateRowsForPrinting">'. date(_('Y-m-d H:i'), $pt_arr[$i]->getStartDate()) .'</td>';
-		if ($display_col['end_date']) 
-			echo '<td class="separateRowsForPrinting">'. (($now>$pt_arr[$i]->getEndDate() && $pt_arr[$i]->getStatusId() != 2 ) ? '<strong>* ' : '  ') .
-				date(_('Y-m-d H:i'), $pt_arr[$i]->getEndDate()) .'</strong></td>';
+		if ($display_col['start_date']) {
+			$t = $pt_arr[$i]->getStartDate();
+			echo html_e('td', array(
+				'class' => array(
+					'separateRowsForPrinting',
+				    ),
+				'content' => $t,
+			    ), datepick_format($t, true));
+		}
+		if ($display_col['end_date']) {
+			$t = $pt_arr[$i]->getEndDate();
+			$as = html_ap();
+			echo html_ao('td', array(
+				'class' => array(
+					'separateRowsForPrinting',
+				    ),
+			    ));
+			if (($now > $t) &&
+			    ($pt_arr[$i]->getStatusID() != 2)) {
+				echo html_ao('strong') . '*';
+			}
+			echo html_ac($as);
+			echo html_ao('td', array(
+				'class' => array(
+					'separateRowsForPrinting',
+				    ),
+				'content' => $t,
+			    ));
+			if (($now > $t) &&
+			    ($pt_arr[$i]->getStatusID() != 2)) {
+				echo html_ao('strong');
+			}
+			echo datepick_format($t, true);
+			echo html_ac($as);
+		}
 		if ($display_col['percent_complete']) 
 			echo '<td class="separateRowsForPrinting">'. $pt_arr[$i]->getPercentComplete() .'%</td>';
 		if ($display_col['category']) 
@@ -504,10 +533,15 @@
 			echo '<td class="separateRowsForPrinting">'. util_html_secure($pt_arr[$i]->getStatusID()) .'</td>';
 		if ($display_col['category_id'])
 			echo '<td class="separateRowsForPrinting">'. util_html_secure($pt_arr[$i]->getCategoryID()) .'</td>';
-		if ($display_col['category_name'])
-			echo '<td class="separateRowsForPrinting">'. util_html_secure($pt_arr[$i]->getCategoryName()) .'</td>';
-		if ($display_col['last_modified_date'])
-			echo '<td class="separateRowsForPrinting">'. date('Y-m-d H:i:s', $pt_arr[$i]->getLastModifiedDate()) .'</td>';
+		if ($display_col['last_modified_date']) {
+			$t = $pt_arr[$i]->getLastModifiedDate();
+			echo html_e('td', array(
+				'class' => array(
+					'separateRowsForPrinting',
+				    ),
+				'content' => $t,
+			    ), datepick_format($t, true));
+		}
 		if ($display_col['external_id'])
 			echo '<td class="separateRowsForPrinting">'. util_html_secure($pt_arr[$i]->getExternalID()) .'</td>';
 		if ($display_col['sub_project_name'])

Modified: branches/messer-51/src/www/pm/downloadcsv.php
===================================================================
--- branches/messer-51/src/www/pm/downloadcsv.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/downloadcsv.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -91,6 +91,13 @@
 sysdebug_off('Content-type: text/csv');
 header('Content-disposition: filename="tasks-'.$date.'.csv"');
 
+function break_header_reimport($foo) {
+	global $arrRemove;
+
+	return str_replace($arrRemove, ' ',
+	    util_unconvert_htmlspecialchars($foo));
+}
+
 $ptf = new ProjectTaskFactory($pg);
 if (!$ptf || !is_object($ptf)) {
     exit_error(_('Could Not Get ProjectTaskFactory'),'pm');
@@ -190,7 +197,7 @@
 		$pt_arr[$i]->getExternalID().$sep.
 		$pt_arr[$i]->getParentID().$sep.
 		$sep.
-		str_replace($arrRemove, ' ', $pt_arr[$i]->getSummary()).$sep;
+		break_header_reimport($pt_arr[$i]->getSummary()).$sep;
 	if ($full) {
 		echo $pt_arr[$i]->getCategoryName().$sep;
 	}
@@ -200,7 +207,7 @@
 		date('Y-m-d H:i:s',$pt_arr[$i]->getEndDate()).$sep.
 		$pt_arr[$i]->getPercentComplete().$sep.
 		$pt_arr[$i]->getPriority().$sep.
-		str_replace($arrRemove, ' ', $pt_arr[$i]->getDetails()).$sep;
+		break_header_reimport($pt_arr[$i]->getDetails()).$sep;
 
 		$users =& user_get_objects($pt_arr[$i]->getAssignedTo());
 		for ($j=0; $j<5; $j++) {

Modified: branches/messer-51/src/www/pm/include/ProjectView.class.php
===================================================================
--- branches/messer-51/src/www/pm/include/ProjectView.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/include/ProjectView.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -308,6 +308,9 @@
 			break;
 		case 'detailtask':
 		default:
+			/* showSubmitButton() EAVAIL, no <form/> either */
+			return '';
+			/* otherwise: */
 			$formname = 'adddefaultform';
 			break;
 		}

Modified: branches/messer-51/src/www/pm/include/pm_columns.php
===================================================================
--- branches/messer-51/src/www/pm/include/pm_columns.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/include/pm_columns.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -44,7 +44,6 @@
 	array("hours", 0, _('Estimated Hours')),
 	array("statusId", 0, _('Status Id')),
 	array("categoryId", 0, _('Category Id')),
-	array("catName", 0, _('Category Name')),
 	array("lastModDat", 0, _('Last Modified Date')),
 	array("externalId", 0, _('External Id')),
 	array("subprjname", 0, _('Sub-Project')),

Modified: branches/messer-51/src/www/pm/pm_task.php
===================================================================
--- branches/messer-51/src/www/pm/pm_task.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/pm_task.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -78,7 +78,9 @@
 
 /* Implements the theme and includes the pm_controller.php that implements the view in this file */
 
-if (forge_get_config('pm_timetracking')) {
+if (forge_get_config('pm_timetracking') &&
+    /* place to figure out access rights, too */
+    $pageView != /*XXX Patrick, why post? */ 'postaddtask') {
 /* time_tracking.php should moved in the MVC pattern if more time is available */
 	echo '<div id="trackingTaskContainer">';
 	echo $HTML->boxTop(_('Time tracking'), 'tracking', false, 'pm_item_ttrack');

Modified: branches/messer-51/src/www/pm/postuploadcsv.php
===================================================================
--- branches/messer-51/src/www/pm/postuploadcsv.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/postuploadcsv.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -62,15 +62,48 @@
 	fseek($handle, 0);
 	
 	if ($headers) {
+		$hdrmap = array(
+			'project_task_id' => 'id',
+			'title' => 'name',
+			'external_task_id' => 'msproj_id',
+			'external_parent_id' => 'parent_msproj_id',
+		    );
+
 		// Headers are given in the file (first line).
 		$headers = array_flip(fgetcsv($handle, 4096, $sep));
 		while (($values = fgetcsv($handle, 4096, $sep)) !== false) {
 			$task = array();
-			foreach($headers as $name => $id) {
-				if ($name == 'project_task_id') $name = 'id';
-				if ($name == 'title') $name = 'name';
-				$task[$name] = $values[$id];
+			foreach ($headers as $name => $id) {
+				$task[util_ifsetor($hdrmap[$name], $name)] =
+				     $values[$id];
 			}
+
+			$task['resources'] = array();
+			for ($i = 1; $i <= 5; ++$i) {
+				$field = "resource" . $i . "_unixname";
+				if (util_ifsetor($task[$field])) {
+					$task['resources'][] = array(
+						'user_name' => $task[$field],
+					    );
+				}
+			}
+
+			$task['dependenton'] = array();
+			for ($i = 1; $i <= 5; ++$i) {
+				$field = "dependenton" . $i . "_";
+				$fptid = $field . "project_task_id";
+				$fetid = $field . "external_task_id";
+				$flink = $field . "linktype";
+				if (util_ifsetor($task[$fptid])) {
+					$task['dependenton'][] = array(
+						'task_id' => $task[$fptid],
+						'msproj_id' => $task[$fetid],
+						'task_name' => '',
+						'link_type' => $task[$flink],
+					    );
+				}
+			}
+
 			$tasks[] = $task;
 		}
 	} else {

Modified: branches/messer-51/src/www/pm/reporting/index.php
===================================================================
--- branches/messer-51/src/www/pm/reporting/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/reporting/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -196,7 +196,7 @@
 GROUP BY Subproject',
 					  array ($group_id,
 						 $period_threshold)) ;
-		$qpa2 = db_construct_qpa ('SELECT project_group_list.project_name AS Subproject, count(*) AS Count 
+		$qpa2 = db_construct_qpa(false, 'SELECT project_group_list.project_name AS Subproject, count(*) AS Count 
 FROM project_group_list,project_task 
 WHERE project_group_list.group_project_id=project_task.group_project_id 
 AND project_task.status_id <> 3
@@ -205,14 +205,13 @@
 GROUP BY Subproject',
 					  array ($group_id,
 						 $period_threshold)) ;
-
 		pm_quick_report($group_id,
 			  _('Tasks By Category'),
 			  _('Open Tasks By Category'), $qpa1,
 			  _('All Tasks By Category'), $qpa2);
 
 	} else if ($what=="tech") {
-		$qpa1 = db_construct_qpa ('SELECT users.user_name AS Technician, count(*) AS Count 
+		$qpa1 = db_construct_qpa(false, 'SELECT users.user_name AS Technician, count(*) AS Count 
 FROM users,project_group_list,project_task,project_assigned_to 
 WHERE users.user_id=project_assigned_to.assigned_to_id 
 AND project_assigned_to.project_task_id=project_task.project_task_id 
@@ -224,7 +223,7 @@
 					  array ($group_id,
 						 $period_threshold)) ;
 
-		$qpa2 = db_construct_qpa ('SELECT users.user_name AS Technician, count(*) AS Count 
+		$qpa2 = db_construct_qpa(false, 'SELECT users.user_name AS Technician, count(*) AS Count 
 FROM users,project_group_list,project_task,project_assigned_to 
 WHERE users.user_id=project_assigned_to.assigned_to_id 
 AND project_assigned_to.project_task_id=project_task.project_task_id 

Modified: branches/messer-51/src/www/pm/t_follow.php
===================================================================
--- branches/messer-51/src/www/pm/t_follow.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/t_follow.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -37,6 +37,14 @@
 require_once $gfwww.'include/pre.php';
 require_once $gfcommon.'pm/ProjectTaskSqlQueries.php';
 
+/*-
+ * I'm not a real programmer. I throw together things until it works
+ * then I move on. The real programmers will say "yeah it works but
+ * you're leaking memory everywhere. Perhaps we should fix that." I'll
+ * just restart apache every 10 requests.
+ * -- Rasmus Lerdorf
+ */
+
 $tid = getIntFromRequest('tid');
 if (!$tid)
 	$tid = getIntFromRequest('id');

Modified: branches/messer-51/src/www/pm/t_lookup.php
===================================================================
--- branches/messer-51/src/www/pm/t_lookup.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/t_lookup.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -26,27 +26,38 @@
 
 require_once('../env.inc.php');
 require_once $gfcommon.'include/pre.php';
+require_once $gfcommon.'include/minijson.php';
 require_once $gfcommon.'pm/ProjectTaskSqlQueries.php';
 
+/*-
+ * We have things like protected properties. We have abstract methods.
+ * We have all this stuff that your computer science teacher told you
+ * you should be using. I don't care about this crap at all.
+ * -- Rasmus Lerdorf
+ */
+
 $tid = getIntFromRequest('tid');
 if (!$tid)
 	$tid = util_path_info_last_numeric_component();
 if (!$tid) {
-    exit_missing_param('',array(_('Task ID')),'pm');
+	exit_missing_param('', array(_('Task ID')), 'pm');
 }
 
 $tinfo = getGroupProjectIdGroupId($tid);
 
 if (!$tinfo) {
-    exit_error(_('No Task with ID: ').$tid,'pm');
+	exit_error(_('No Task with ID: ') . $tid, 'pm');
 }
 
 $asuser = getStringFromRequest('asuser');
 
-if (getIntFromRequest('text'))
+if (getIntFromRequest('text')) {
 	$asformat = "text/plain; charset=\"UTF-8\"";
-else
+	$jsonindent = "";
+} else {
 	$asformat = "application/json; charset=\"UTF-8\"";
+	$jsonindent = false;
+}
 
 $islogin = session_loggedin();
 $isadmin = forge_check_global_perm ('forge_admin');
@@ -83,6 +94,5 @@
 $tinfo['forge_name'] = forge_get_config ('forge_name') ;
 
 sysdebug_off("Content-type: " . $asformat);
-setup_gettext_from_langname ('English') ;
-echo json_encode($tinfo) . "\n";
+echo minijson_encode($tinfo, $jsonindent) . "\n";
 exit;

Modified: branches/messer-51/src/www/pm/task.php
===================================================================
--- branches/messer-51/src/www/pm/task.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/pm/task.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -181,7 +181,7 @@
 
 		session_require_perm ('pm', $pg->getID(), 'manager');
 
-		$add_artifact_id = getStringFromRequest('add_artifact_id');
+		$add_artifact_id = getArrayFromRequest('add_artifact_id');
 
 		$pt = createProjectTask($pg);
 
@@ -328,7 +328,7 @@
 				$error_msg .= ' ID: '.$project_task_id_list[$i].'::'.$pt->getErrorMessage();
 			} else {
 
-				$mass_summary=addslashes(util_unconvert_htmlspecialchars($pt->getSummary()));
+				$mass_summary = util_unconvert_htmlspecialchars($pt->getSummary());
 				$mass_details='';
 				$mass_priority=(($priority != 100) ? $priority : $pt->getPriority());
 				$mass_hours=$pt->getHours();

Modified: branches/messer-51/src/www/project/admin/index.php
===================================================================
--- branches/messer-51/src/www/project/admin/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/project/admin/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -147,8 +147,8 @@
 </textarea>
 </p>
 
+<h2><?php echo _('Long Project Description'); ?></h2>
 <p>
-<?php echo _('Long Project Description') ?>:<br />
 <textarea cols="70" rows="10" name="form_longdesc">
 <?php echo $group->getRegisterPurpose(); ?>
 </textarea>

Modified: branches/messer-51/src/www/project/admin/massadd.php
===================================================================
--- branches/messer-51/src/www/project/admin/massadd.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/project/admin/massadd.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,6 +24,7 @@
 
 require_once('../../env.inc.php');
 require_once $gfcommon.'include/pre.php';
+require_once $gfcommon.'include/EvolvisTable.class.php';
 require_once $gfwww.'project/admin/project_admin_utils.php';
 require_once $gfwww.'include/role_utils.php';
 
@@ -87,30 +88,44 @@
 	echo '<p>' . _('No Matching Users Found') . '</p>';
 } else {
 
-	$titles[]=_('Real name');
-	$titles[]=_('Unix name');
-	$titles[]=_('Add user');
-
-	echo $HTML->listTableTop($titles);
-
 	//
 	//	Everything is built on the multi-dimensial arrays in the Role object
 	//
-	for ($i=0; $i<db_numrows($res); $i++) {
-		$uid = db_result($res,$i,'user_id');
-		echo '<tr '. $HTML->boxGetAltRowStyle($i) . '>
-			<td>'.db_result($res,$i,'lastname').', '.db_result($res,$i,'firstname').'</td>
-			<td>'.db_result($res,$i,'user_name').'</td>
-			<td><input type="checkbox" name="newids[]" value="'. $uid .'"';
-		if (in_array($uid, $accumulated_ids)) {
-			echo ' checked="checked" ';
-		}
-		echo ' /></td></tr>';
 
+	$tstyles = array(
+		array('style' => array(
+			'width:3em;',
+			'white-space:nowrap;',
+			'padding-right:1em;',
+		    )),
+		array('style' => array(
+			'width:12em;',
+			'white-space:nowrap;',
+		    )),
+		array('style' => array(
+			'white-space:nowrap;',
+		    )),
+	    );
+	$t = new EvolvisTable(array(
+		array(_('Add user'), $tstyles[0]),
+		array(_('Unix name'), $tstyles[1]),
+		array(_('Real name'), $tstyles[2]),
+	    ));
+	for ($i = 0; $i < db_numrows($res); $i++) {
+		$uid = db_result($res, $i, 'user_id');
+		$r = $t->tr();
+		$r->td($tstyles[0])->setraw(html_e('input', array(
+			'type' => 'checkbox',
+			'name' => 'newids[]',
+			'value' => $uid,
+			'checked' => (in_array($uid, $accumulated_ids) ? "checked" : false),
+		    )));
+		$r->td($tstyles[1])->set(db_result($res, $i, 'user_name'));
+		$r->td($tstyles[2])->set(sprintf(_('%2$s, %1$s'),
+		    db_result($res, $i, 'firstname'),
+		    db_result($res, $i, 'lastname')));
 	}
-
-	echo $HTML->listTableBottom();
-
+	echo $t->emit();
 }
 
 echo '<p><input type="submit" name="finished" value="'._('Finish').'" /></p>

Modified: branches/messer-51/src/www/project/admin/project_admin_utils.php
===================================================================
--- branches/messer-51/src/www/project/admin/project_admin_utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/project/admin/project_admin_utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -116,9 +116,9 @@
 AND group_id=$1 ORDER BY group_history.adddate DESC", array($group_id));
 }
 
-function group_add_history ($field_name,$old_value,$group_id) {
+function group_add_history($field_name, $old_value, $group_id, $new_value="") {
 	$group=group_get_object($group_id);
-	$group->addHistory($field_name,$old_value);
+	$group->addHistory($field_name,$old_value,$new_value);
 }
 
 /*

Modified: branches/messer-51/src/www/project/admin/users.php
===================================================================
--- branches/messer-51/src/www/project/admin/users.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/project/admin/users.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -4,7 +4,7 @@
  *
  * Copyright 2004 GForge, LLC
  * Copyright 2006 federicot
- * Copyright © 2011
+ * Copyright © 2011, 2012
  *	Thorsten Glaser <t.glaser at tarent.de>
  * Copyright 2011, Roland Mas
  * All rights reserved.
@@ -111,7 +111,7 @@
 				if (!$group->addUser($form_unix_name,$role_id)) {
 					$error_msg = $group->getErrorMessage();
 				} else {
-					$feedback = _("Member Added Successfully");
+					$feedback = _("Project Role assigned to Member successfully");
 					//if the user have requested to join this group
 					//we should remove him from the request list
 					//since it has already been added
@@ -135,7 +135,7 @@
 		if (!$role->removeUser (user_get_object ($user_id))) {
 			$error_msg = $role->getErrorMessage() ;
 		} else {
-			$feedback = _("Member Removed Successfully");
+			$feedback = _('Project Role removed from Member successfully');
 		}
 	} else if (getStringFromRequest('updateuser')) {
 		/* Adjust Member Role */
@@ -171,7 +171,7 @@
 					$gjr->send_accept_mail();
 					$gjr->delete(true);
 				}
-				$feedback = _("Member Added Successfully");
+				$feedback = _("Project Role assigned to Member successfully");
 			}
 		}
 	} elseif (getStringFromRequest('rejectpending')) {
@@ -253,8 +253,9 @@
 				<td style="white-space: nowrap;"><a
 					href="/users/<?php
 						echo $user->getUnixName();
-					?>"><?php echo $user->getRealName(); ?></a>
-				</td>
+					?>"><?php echo $user->getRealName();
+					?></a> (<?php echo $user->getUnixName();
+				?>)</td>
 				<td style="white-space: nowrap; text-align: right;"><?php
 					echo role_box($group_id,'role_id'); ?>
 				<input type="submit" name="acceptpending"
@@ -334,15 +335,18 @@
 	foreach ($roles as $role) {
 		echo '<tr '. $HTML->boxGetAltRowStyle($i) . '>' ;
 		if (!$seen) {
-			echo '<td style="white-space: nowrap;" rowspan="'.(count($roles)+1).'">
-			<a href="/users/'.$user->getUnixName().'">';
-			$display = $user->getRealName();
-			if (!empty($display)) {
-				echo $user->getRealName();
+			$seen = $user->getRealName();
+			if ($seen) {
+				$seen .= html_e('br');
 			} else {
-				echo $user->getUnixName();
+				$seen = "";
 			}
-			echo "</a></td>\n";
+			echo html_e('td', array(
+				'style' => 'white-space:nowrap;',
+				'rowspan' => count($roles) + 1,
+			    ), html_e('a', array(
+				'href' => '/users/' . $user->getUnixName(),
+			    ), $seen . $user->getUnixName()));
 			$seen = true ;
 		}
 

Modified: branches/messer-51/src/www/projects
===================================================================
--- branches/messer-51/src/www/projects	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/projects	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,11 +1,14 @@
 <?php
-/**
+/*-
  * FusionForge Projects Redirector
  *
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2002-2004 (c) GForge Team
  * Copyright 2010 (c) FusionForge Team
  * http://fusionforge.org/
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * All rights reserved.
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -24,11 +27,11 @@
  */
 
 require_once 'env.inc.php';
-require_once $gfcommon.'include/pre.php';    
+require_once $gfcommon.'include/pre.php';
 
 //
 //	IMPORTANT NOTE!!
-//	Setting up the $project object is all being 
+//	Setting up the $project object is all being
 //	handled in the logger now
 //	This was done so the logger would accurately record these pages
 //
@@ -37,30 +40,48 @@
 //	test to see if the logger was successful in setting up the objects
 //
 if (!$group_id || !$project) {
+	/* prevent information leak */
+	if (!session_get_user()) {
+		/* handles the redirect for us */
+		include $gfwww.'include/project_home.php';
+		exit;
+	}
+
+	/* we are logged in for sure */
 	exit_no_group();
-} else {
-	$subpage = getStringFromRequest('subpage');
+}
 
-	if ($subpage == "admin") {
-		session_redirect(util_make_url("/project/admin/?group_id=$group_id"));
-	} else if ($subpage == "files" || $subpage == "download" || $subpage == "dl") {
-		if (getStringFromRequest('subpage2') == "release") {
-			session_redirect(util_make_url("/frs/admin/qrs.php?group_id=$group_id"));
-		} else {
-			session_redirect(util_make_url("/frs/?group_id=$group_id"));
-		}
-	} else if ($subpage == "cvs") {
-		sysdebug_off("Location: ".account_group_cvsweb_url($project->getUnixName()));
-		exit();
+$subpage = getStringFromRequest('subpage');
+
+switch ($subpage) {
+case "admin":
+	session_redirect("/project/admin/?group_id=$group_id");
+	break;
+case "home":
+	/* project home page; possibly a Wiki */
+	if ($project->usesPlugin("mediawiki")) {
+		session_redirect("/plugins/mediawiki/wiki/" .
+		    $project->getUnixName() . "/index.php");
+	}
+	break;
+case "files":
+case "download":
+case "dl":
+	if (getStringFromRequest('subpage2') == "release") {
+		session_redirect("/frs/admin/qrs.php?group_id=$group_id");
 	} else {
-		//show the project summary page
-		include $gfwww.'include/project_home.php';
+		session_redirect("/frs/?group_id=$group_id");
 	}
+	break;
+case "cvs":
+	session_redirect_uri(account_group_cvsweb_url($project->getUnixName()));
+	break;
 }
 
+/* show the default group summary page */
+include $gfwww.'include/project_home.php';
+
 // Local Variables:
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/www/register/index.php
===================================================================
--- branches/messer-51/src/www/register/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/register/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -51,7 +51,7 @@
 }
 
 $template_projects = group_get_template_projects() ;
-sortProjectList ($template_projects) ;
+sortProjectList ($template_projects, 'id', true) ;
 
 if (getStringFromRequest('submit')) {
 	if (!form_key_is_valid(getStringFromRequest('form_key'))) {
@@ -219,11 +219,48 @@
 	echo '<h3>'.$index.'. '._('Source Code').'</h3>';
 	echo _('<p>You can choose among different SCM for your project, but just one (or none at all). Please select the SCM system you want to use.</p>')."\n";
 	echo '<table><tbody><tr><td><strong>'._('SCM Repository').':</strong></td>';
-	echo '<td><input type="radio" name="scm" value="noscm" checked="checked" />'._('No SCM').'</td>';
-	foreach($scm_plugins as $plugin) {
-		$myPlugin= plugin_get_object($plugin);
-		echo '<td><input type="radio" name="scm" value="'.$myPlugin->name.'" />'.$myPlugin->text.'</td>';
+
+	/* gather all possible SCMs */
+	$scms = array(array(
+		'name' => 'noscm',
+		'desc' => _('No SCM'),
+		'checked' => false,
+	    ));
+	foreach ($scm_plugins as $plugin) {
+		$myPlugin = plugin_get_object($plugin);
+		$scms[] = array(
+			'name' => $myPlugin->name,
+			'desc' => $myPlugin->text,
+			'checked' => false,
+		    );
 	}
+
+	/* check one */
+	$found = false;
+	$myscm = getStringFromRequest('scm');
+	if ($myscm) {
+		for ($i = 0; $i < count($scms); ++$i) {
+			if ($scms[$i]['name'] == $myscm) {
+				$scms[$i]['checked'] = true;
+				$found = true;
+				break;
+			}
+		}
+	}
+	if (!$found) {
+		$scms[0]['checked'] = true;
+	}
+
+	/* display them all */
+	foreach ($scms as $ascm) {
+		echo html_e('td', array(), html_e('input', array(
+			'type' => 'radio',
+			'name' => 'scm',
+			'value' => $ascm['name'],
+			'checked' => $ascm['checked'] ? 'checked' : false,
+		    )) . util_html_secure($ascm['desc']));
+	}
+
 	echo '</tr></tbody></table>'."\n";
 }
 
@@ -246,7 +283,11 @@
 		$tpv_arr[] = $tp->getID() ;
 		$tpn_arr[] = $tp->getPublicName() ;
 	}
-	echo html_build_select_box_from_arrays ($tpv_arr, $tpn_arr, 'built_from_template', $template_projects[0]->getID(),
+	if (($built_from_template = getIntFromRequest('built_from_template',
+	    -1)) < 0) {
+		$built_from_template = $template_projects[0]->getID();
+	}
+	echo html_build_select_box_from_arrays ($tpv_arr, $tpn_arr, 'built_from_template', $built_from_template,
 						false, '', false, '') ;
 } elseif (count ($template_projects) == 1) {
 	echo '<p>';
@@ -260,7 +301,11 @@
 		$tpn_arr[] = _('Start from empty project') ;
 		$tpv_arr[] = $template_projects[0]->getID() ;
 		$tpn_arr[] = $template_projects[0]->getPublicName() ;
-		echo html_build_select_box_from_arrays ($tpv_arr, $tpn_arr, 'built_from_template', $template_projects[0]->getID(),
+		if (($built_from_template =
+		    getIntFromRequest('built_from_template', -1)) < 0) {
+			$built_from_template = $template_projects[0]->getID();
+		}
+		echo html_build_select_box_from_arrays ($tpv_arr, $tpn_arr, 'built_from_template', $built_from_template,
 							false, '', false, '') ;
 	} else {
 		printf(_('Your project will initially have the same configuration as the %s project (same roles and permissions, same trackers, same set of enabled plugins, and so on).'),

Modified: branches/messer-51/src/www/reporting/projectact.php
===================================================================
--- branches/messer-51/src/www/reporting/projectact.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/reporting/projectact.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -69,7 +69,7 @@
 </form>
 <?php if ($g_id && $start != $end) { ?>
 	<p>
-	<img src="projectact_graph.php?<?php echo "SPAN=$SPAN&start=$start&end=$end&g_id=$g_id&area=$area"; ?>" width="640" height="480" alt="" />
+	<img src="projectact_graph.php?<?php echo "SPAN=$SPAN&start=$start&end=$end&g_id=$g_id&area=$area"; ?>" width="640" height="480" alt="" />
 	</p>
 	<?php
 

Modified: branches/messer-51/src/www/reporting/usersummary.php
===================================================================
--- branches/messer-51/src/www/reporting/usersummary.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/reporting/usersummary.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -119,7 +119,7 @@
 		echo '
 		<tr '.$HTML->boxGetAltRowStyle(1).'>
 			<td> </td>
-			<td>'.util_make_link ('/pm/task.php?func=detailtask&group_id='.db_result($res,$i,'group_id') .'&project_task_id='.db_result($res,$i,'project_task_id') .'&group_project_id='.db_result($res,$i,'group_project_id'),db_result($res,$i,'summary')) .'
+			<td>'.util_make_link ('/pm/task.php?func=detailtask&group_id='.db_result($res,$i,'group_id') .'&project_task_id='.db_result($res,$i,'project_task_id') .'&group_project_id='.db_result($res,$i,'group_project_id'),db_result($res,$i,'summary')) .'
 			</td>
 			<td>'.db_result($res,$i,'status_name').'</td>
 			<td>'.number_format(db_result($res,$i,'cumulative_hrs'),1).'</td>

Modified: branches/messer-51/src/www/scm/browser.php
===================================================================
--- branches/messer-51/src/www/scm/browser.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/scm/browser.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -27,6 +27,18 @@
 require_once $gfwww.'scm/include/scm_utils.php';    
 
 $group_id = getIntFromRequest("group_id");
+$project = group_get_object($group_id);
+if (!$project || !is_object($project)) {
+	exit_no_group();
+} else if ($project->isError()) {
+	exit_error($project->getErrorMessage(), 'scm');
+}
+$scmplugin = scm_get_instance($project);
+if (!$scmplugin) {
+	$error_msg = _('Could not get SCM Plugin instance');
+} else if (!$scmplugin->browserDisplayable($project)) {
+	$error_msg = _('SCM Browser not displayable; possibly because it’s not anonymously accessible?');
+}
 scm_header(array('title'=>_('SCM Repository'),'group'=>$group_id));
 
 $repo_name = getStringFromRequest("repo_name", "none");
@@ -37,5 +49,3 @@
 plugin_hook ("scm_browser_page", $hook_params) ;
 
 scm_footer(); 
-
-?>

Modified: branches/messer-51/src/www/scm/include/scm_utils.php
===================================================================
--- branches/messer-51/src/www/scm/include/scm_utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/scm/include/scm_utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,7 +5,8 @@
  * Copyright 2004-2005 (c) GForge LLC, Tim Perdue
  * Copyright 2010 (c), Franck Villaume
  * Copyright (C) 2010-2011 Alain Peyrat - Alcatel-Lucent
- * http://fusionforge.org
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -23,8 +24,35 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+$scm_instance_cache = false;
+function &scm_get_instance($group) {
+	global $gfcommon, $scm_instance_cache;
+	require_once $gfcommon.'scm/SCMFactory.class.php';
+
+	if ($scm_instance_cache === false) {
+		$SCMFactory = new SCMFactory();
+		$scm_plugins = $SCMFactory->getSCMs();
+		$usedplugin = false;
+		if (count($scm_plugins) >= 1) {
+			foreach ($scm_plugins as $plugin) {
+				$myPlugin = plugin_get_object($plugin);
+				if ($group->usesPlugin($myPlugin->name)) {
+					if ($usedplugin === false) {
+						$usedplugin = $myPlugin;
+					} else {
+						exit_error(_('More than one SCM plugin in use.'), 'scm');
+					}
+				}
+			}
+		}
+		$scm_instance_cache = $usedplugin;
+	}
+	return $scm_instance_cache;
+}
+
 function scm_header($params) {
 	global $HTML;
+
 	if (!forge_get_config('use_scm')) {
 		exit_disabled();
 	}
@@ -39,31 +67,32 @@
 	if (!$project->usesSCM()) {
 		exit_disabled();
 	}
-	/*
-		Show horizontal links
-	*/
-	if (session_loggedin()) {
-		if (forge_check_perm ('project_admin', $project->getID())) {
-			$params['submenu'] = array(
-				array(
-					_('View Source Code'),
-					_('Reporting'),
-					_('Administration')
-					),
-				array(
-					'/scm/?group_id='.$params['group'],
-					'/scm/reporting/?group_id='.$params['group'],
-					'/scm/admin/?group_id='.$params['group']
-					),
-				array(
-					_('-tooltip:scm:view'),
-					_('-tooltip:scm:reporting'),
-					_('-tooltip:scm:admin'),
-					)
-				);
-		}
+
+	$submenu = array(array(), array(), array());
+	$submenu[0][] = _('Access Source Code');
+	$submenu[1][] = '/scm/?group_id=' . $params['group'];
+	$submenu[2][] = _('-tooltip:scm:view');
+
+	$scmplugin = scm_get_instance($project);
+	if ($scmplugin && $scmplugin->browserDisplayable($project)) {
+		$submenu[0][] = _('Browse Source Code');
+		$submenu[1][] = '/scm/browser.php?group_id=' .
+		    $params['group'];
+		$submenu[2][] = _('Look at the source code repository using your webbrowser!');
 	}
 
+	if (session_loggedin() &&
+	    forge_check_perm('project_admin', $project->getID())) {
+		$submenu[0][] = _('Reporting');
+		$submenu[1][] = '/scm/reporting/?group_id=' . $params['group'];
+		$submenu[2][] = _('-tooltip:scm:reporting');
+
+		$submenu[0][] = _('Administration');
+		$submenu[1][] = '/scm/admin/?group_id=' . $params['group'];
+		$submenu[2][] = _('-tooltip:scm:admin');
+	}
+
+	$params['submenu'] = $submenu;
 	$params['toptab'] = 'scm';
 	site_project_header($params);
 	echo '<div id="scm" class="scm">';
@@ -78,5 +107,3 @@
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/www/scm/include/viewvc_utils.php
===================================================================
--- branches/messer-51/src/www/scm/include/viewvc_utils.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/scm/include/viewvc_utils.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -70,7 +70,7 @@
 		$projectName = preg_replace('|/.*|','',$projectName);
 	}
 	// Remove eventual leading /root/ or root/
-       return ereg_replace('^..[^/]*/','', $projectName);
+       return preg_replace('#^..[^/]*/#','', $projectName);
 }
 
 /**

Modified: branches/messer-51/src/www/scm/viewvc/templates/include/header.ezt
===================================================================
--- branches/messer-51/src/www/scm/viewvc/templates/include/header.ezt	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/scm/viewvc/templates/include/header.ezt	2012-04-07 14:10:47 UTC (rev 18260)
@@ -31,7 +31,7 @@
 </table>
 </div>
 
-<div style="float: right; padding: 5px;"><a href="http://www.viewvc.org/"><img src="[docroot]/images/logo.png" alt="ViewVC logotype" width="128" height="48" /></a></div>
+<div style="float: right; padding: 5px;"><a href="http://www.viewvc.org/"><img src="[docroot]/images/logo.png" alt="ViewVC logotype" width="240" height="70" /></a></div>
 <h1>[page_title]</h1>
 
 

Modified: branches/messer-51/src/www/scm/viewvc.php
===================================================================
--- branches/messer-51/src/www/scm/viewvc.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/scm/viewvc.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -110,7 +110,7 @@
 
 $line = preg_split('/[\t\r\0\x0B]*\n[\t\r\0\x0B]*\n/', $content, 2);
 $header = preg_split('/[\t\r\0\x0B]*\n/', $line[0]);
-$content = $line[1];
+$content = util_ifsetor($line[1], $content);
 foreach ($header as $line) {
 	if (preg_match('/^Location:(.*)$/i', $line, $matches)) {
 		$tgt = ltrim($matches[1]);

Modified: branches/messer-51/src/www/soap/frs/frs.php
===================================================================
--- branches/messer-51/src/www/soap/frs/frs.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/soap/frs/frs.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -579,3 +579,54 @@
 		return $frsf->getID();
 	}
 }
+
+function addUploadedFile($session_ser, $group_id, $package_id, $release_id,
+    $file_name, $type_id, $processor_id, $release_time) {
+	continue_session($session_ser);
+
+	$grp =& group_get_object($group_id);
+	if (!$grp || !is_object($grp)) {
+		return new soap_fault('','addUploadedFile','Could Not Get Group','Could Not Get Group');
+	} elseif ($grp->isError()) {
+		return new soap_fault('','addUploadedFile',$grp->getErrorMessage(),$grp->getErrorMessage());
+	}
+
+	$frsp =& frspackage_get_object($package_id);
+	if (!$frsp || !is_object($frsp)) {
+		return new soap_fault('','addUploadedFile','Could Not Get Package','Could Not Get Package');
+	} else if ($frsp->isError()) {
+		return new soap_fault('','addUploadedFile',$frsp->getErrorMessage(),$frsp->getErrorMessage());
+	}
+
+	$frsr =& frsrelease_get_object($release_id);
+	if (!$frsr || !is_object($frsr)) {
+		return new soap_fault('','addUploadedFile','Could Not Get Release','Could Not Get Release');
+	} else if ($frsr->isError()) {
+		return new soap_fault('','addUploadedFile',$frsr->getErrorMessage(),$frsr->getErrorMessage());
+	}
+
+	$frsf = new FRSFile($frsr);
+	if (!$frsf || !is_object($frsf)) {
+		return new soap_fault('','addUploadedFile','Could Not Get File','Could Not Get File');
+	}
+
+	$groupdir_prefix = forge_get_config('groupdir_prefix');
+
+	if (forge_get_config('use_manual_uploads')) {
+		/* target directory for SFTP uploaded files */
+		$incoming = $groupdir_prefix . "/" . $grp->getUnixName() .
+		    "/incoming";
+	} else {
+		return new soap_fault('','addUploadedFile', 'No uploaded data files available','No uploaded data files available');
+	}
+
+	$tmpname = $incoming . '/' . $file_name;
+
+	if (!$frsf->create($file_name,$tmpname,$type_id,$processor_id,$release_time)) {
+		@unlink($tmpname);
+		return new soap_fault('','addUploadedFile',$frsf->getErrorMessage(),$frsf->getErrorMessage());
+	} else {
+		@unlink($tmpname);
+		return $frsf->getID();
+	}
+}

Modified: branches/messer-51/src/www/soap/index.php
===================================================================
--- branches/messer-51/src/www/soap/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/soap/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -12,21 +12,20 @@
 ini_set('memory_limit','32M');
 sysdebug_off();
 
-$uri = 'http://'.forge_get_config('web_host');
+$uri = 'https://' . forge_get_config('web_host');
 // FusionForge
 //$tnsuri = $uri = 'http://'.forge_get_config('web_host');
 // EvolvisForge official releases
-$uri = 'https://' . forge_get_config('web_host');
-$tnsuri = 'https://evolvis.org/wsdl/1';
+$tnsuri = 'https://evolvis.org/wsdl/3';
+
 // 1. include client and server
-#require_once $gfwww.'soap/nusoap.php';
+//require_once $gfwww.'soap/nusoap.php';
 require_once '/usr/share/php/nusoap/nusoap.php';
 //$debug = true;
 // 2. instantiate server object
 $server = new soap_server();
 $server->setDebugLevel(0);
 //configureWSDL($serviceName,$namespace = false,$endpoint = false,$style='rpc', $transport = 'http://schemas.xmlsoap.org/soap/http');
-//$server->configureWSDL('GForgeAPI',$tnsuri);
 $server->configureWSDL('FusionForgeAPI',$tnsuri,false,'rpc','http://schemas.xmlsoap.org/soap/http',$tnsuri);
 
 // add types
@@ -161,7 +160,10 @@
 function login($userid, $passwd) {
 	global $feedback, $session_ser;
 		
-	setlocale (LC_TIME, _('en_US'));
+	$lc_time = _("en_US");
+	if (!setlocale(LC_TIME, $lc_time . ".UTF-8"))
+		if (!setlocale(LC_TIME, $lc_time))
+			setlocale(LC_TIME, "C");
 
 	$res = session_login_valid($userid, $passwd);
 	

Modified: branches/messer-51/src/www/soap/tracker/query.php
===================================================================
--- branches/messer-51/src/www/soap/tracker/query.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/soap/tracker/query.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -285,7 +285,7 @@
 	'SOAP-ENC:Array',
 	array(),
 	array(
-		array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:ArrayOfint')
+		array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:int[]')
 	),
 	'xsd:int'
 ); 

Modified: branches/messer-51/src/www/soap/tracker/tracker.php
===================================================================
--- branches/messer-51/src/www/soap/tracker/tracker.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/soap/tracker/tracker.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1056,6 +1056,7 @@
 	array(
 		'field_name' => array('name' => 'field_name', 'type' => 'xsd:string'),
 		'old_value' => array('name' => 'old_value', 'type' => 'xsd:string'),
+		'new_value' => array('name' => 'new_value', 'type' => 'xsd:string'),
 		'date' => array('name' => 'date', 'type' => 'xsd:int'),
 		'user_name' => array('name' => 'user_name', 'type' => 'xsd:string')
 	)
@@ -1120,22 +1121,27 @@
 	while ($entry = db_fetch_array($db_result)) {
 		$field_name = $entry["field_name"];
 		$old_value = $entry["old_value"];
+		$new_value = $entry["new_value"];
 		$date = $entry["entrydate"];
 		$user_name = $entry["user_name"];
 		
 		if ($field_name == 'status_id') {
 			$old_value = $artifactType->getStatusName($old_value);
+			$new_value = $artifactType->getStatusName($new_value);
 		} else if ($field_name == 'assigned_to') {
 			$old_value =  user_getname($old_value);
+			$new_value =  user_getname($new_value);
 		} else if ($field == 'close_date') {
-			$old_value =  date(_('Y-m-d H:i'), $old_value);
+			$old_value =  date('Y-m-d H:i', $old_value);
+			$new_value =  date('Y-m-d H:i', $new_value);
 		}
 		
-		//$date = date(_('Y-m-d H:i'), $date);
+		//$date = datepick_format($date, true);
 		
 		$result[] = array(
 					"field_name"	=> $field_name,
 					"old_value"		=> $old_value,
+					"new_value"		=> $new_value,
 					"date"			=> $date,
 					"user_name"		=> $user_name
 					);

Modified: branches/messer-51/src/www/softwaremap/index.php
===================================================================
--- branches/messer-51/src/www/softwaremap/index.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/softwaremap/index.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -24,6 +24,11 @@
 
 require_once('../env.inc.php');
 require_once $gfcommon.'include/pre.php';
+
+/* always use the group list in Evolvis */
+session_redirect('softwaremap/full_list.php');
+/* NOTREACHED */
+
 if (forge_get_config('use_project_tags')) {
 	session_redirect('softwaremap/tag_cloud.php');
 } elseif (forge_get_config('use_trove')){

Modified: branches/messer-51/src/www/themes/css/fusionforge.css
===================================================================
--- branches/messer-51/src/www/themes/css/fusionforge.css	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/css/fusionforge.css	2012-04-07 14:10:47 UTC (rev 18260)
@@ -755,12 +755,24 @@
 	border-width: 0px;
 	padding: 0px;
 	color: red;
+	text-align: left;
 }
 
 #ffErrors .warning {
 	background-color: inherit;
 }
 
+#ffBacktrace {
+	padding:12px;
+	margin:12px;
+	border:1px solid black;
+}
+
+#ffBacktrace p {
+	text-indent:-3em;
+	margin-left:3em;
+}
+
 .img-shadow-l {
 	float:left;
 	background: url(../../images/img-shadowAlpha.png) no-repeat bottom right !important;
@@ -1037,3 +1049,84 @@
 .taskHeading {
 	font-weight:bold;
 }
+
+/* phpinfo(); */
+
+#ff-phpinfo-content {
+	background-color: #ffffff;
+	color: #000000;
+	font-family: sans-serif;
+}
+#ff-phpinfo-content td, #ff-phpinfo-content th, #ff-phpinfo-content h1, #ff-phpinfo-content h2 {
+	font-family: sans-serif;
+}
+#ff-phpinfo-content pre {
+	margin: 0px;
+	font-family: monospace;
+}
+#ff-phpinfo-content a:link {
+	color: #000099;
+	text-decoration: none;
+	background-color: #ffffff;
+}
+#ff-phpinfo-content a:hover {
+	text-decoration: underline;
+}
+#ff-phpinfo-content table {
+	border-collapse: collapse;
+}
+#ff-phpinfo-content .center {
+	text-align: center;
+}
+#ff-phpinfo-content .center table {
+	margin-left: auto;
+	margin-right: auto;
+	text-align: left;
+}
+#ff-phpinfo-content .center th {
+	text-align: center !important;
+}
+#ff-phpinfo-content td, #ff-phpinfo-content th {
+	border: 1px solid #000000;
+	font-size: 75%;
+	vertical-align: baseline;
+}
+#ff-phpinfo-content h1 {
+	font-size: 150%;
+}
+#ff-phpinfo-content h2 {
+	font-size: 125%;
+}
+#ff-phpinfo-content .p {
+	text-align: left;
+}
+#ff-phpinfo-content .e {
+	background-color: #ccccff;
+	font-weight: bold;
+	color: #000000;
+}
+#ff-phpinfo-content .h {
+	background-color: #9999cc;
+	font-weight: bold;
+	color: #000000;
+}
+#ff-phpinfo-content .v {
+	background-color: #cccccc;
+	color: #000000;
+}
+#ff-phpinfo-content .vr {
+	background-color: #cccccc;
+	text-align: right;
+	color: #000000;
+}
+#ff-phpinfo-content img {
+	float: right;
+	border: 0px;
+}
+#ff-phpinfo-content hr {
+	width: 600px;
+	background-color: #cccccc;
+	border: 0px;
+	height: 1px;
+	color: #000000;
+}

Modified: branches/messer-51/src/www/themes/evolvis/EvStyle.class.php
===================================================================
--- branches/messer-51/src/www/themes/evolvis/EvStyle.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/evolvis/EvStyle.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -250,7 +250,7 @@
       <div id="ev_awstats">
         <script language="javascript" type="text/javascript"
          src="/js/awstats_misc_tracker.js"></script>
-        <noscript>img src="/js/awstats_misc_tracker.js?nojs=y"
+        <noscript><img src="/js/awstats_misc_tracker.js?nojs=y"
          height="0" width="0" border="0"
          style="display:none" alt="stats" /></noscript>
       </div>

Modified: branches/messer-51/src/www/themes/evolvis/Theme.class.php
===================================================================
--- branches/messer-51/src/www/themes/evolvis/Theme.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/evolvis/Theme.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,7 +3,7 @@
  * Evolvis theme for tarent solutions GmbH
  * heavily modified version of the Mac OS X like theme.
  *
- * Copyright (c) 2009, 2010, 2011
+ * Copyright (c) 2009, 2010, 2011, 2012
  *	Thorsten Glaser <t.glaser at tarent.de>
  * Copyright (c) 2007 Thorsten Glaser <t.glaser at aurisp.de>
  *	on behalf of tarent GmbH
@@ -361,16 +361,13 @@
 	 *
 	 * @param	array	The array of titles
 	 * @param	array	The array of title links
-	 * @param	int	(ignored?!)
-	 * @param	bool	Show a table border (default: false)
 	 */
-	function listTableTop($title_arr,$links_arr=false,$cnt=0,$useborder=false) {
+	function listTableTop($title_arr,$links_arr=false) {
 		$params = array();
 		$params['text'] = &$title_arr;
 		if ($links_arr) {
 			$params['link'] = &$links_arr;
 		}
-		$params['border'] = &$useborder;
 		$params['sortable'] = false;
 		return $this->listTableStart($params);
 	}
@@ -387,7 +384,6 @@
 		if ($links_arr) {
 			$params['link'] = &$links_arr;
 		}
-		$params['border'] = false;
 		$params['sortable'] = true;
 		return $this->listTableStart($params);
 	}
@@ -401,9 +397,7 @@
 			'cellpadding' => 1,
 			'width' => "100%",
 			'bgcolor' => $this->COLOR_HTMLBOX_BACK,
-			'border' => (util_ifsetor($params['border']) ?
-			    preg_replace('/^\s*border="(.*)"\s*$/', "\\1",
-			    $params['border']) : '0'),
+			'border' => "0",
 		    ));
 		$rv .= html_eo('tr', array('class' => 'ff'));
 		$rv .= html_eo('td', array('class' => 'ff'));
@@ -446,20 +440,50 @@
 				    "\n" . htmlentities(debug_string_backtrace())));
 			} else if ($ct == $cl) {
 				for ($i = 0; $i < $ct; ++$i) {
-					$rv .= html_e('th', array(
-						'class' => 'ff',
-						'align' => 'left',
-					    ), html_e('a', array(
+					$celltext = $params['text'][$i];
+					if (is_array($celltext)) {
+						$cellattr = $celltext[1];
+						$celltext = $celltext[0];
+					} else {
+						$cellattr = array();
+					}
+					$cellattr['align'] =
+					    util_ifsetor($cellattr['align']) ?
+					    $cellattr['align'] : 'left';
+					if (!util_ifsetor($cellattr['class'])) {
+						$cellattr['class'] = 'ff';
+					} else if (is_array($cellattr['class'])) {
+						array_unshift($cellattr['class'], 'ff');
+					} else {
+						$cellattr['class'] = 'ff ' .
+						    $cellattr['class'];
+					}
+					$rv .= html_e('th', $cellattr,
+					    html_e('a', array(
 						'class' => 'titlebar',
 						'href' => $params['link'][$i],
-					    ), $params['text'][$i]));
+					    ), $celltext));
 				}
 			} else {
-				foreach ($params['text'] as $x) {
-					$rv .= html_e('th', array(
-						'class' => 'list_table_top',
-						'align' => 'left',
-					    ), $x);
+				foreach ($params['text'] as $celltext) {
+					if (is_array($celltext)) {
+						$cellattr = $celltext[1];
+						$celltext = $celltext[0];
+					} else {
+						$cellattr = array();
+					}
+					$cellattr['align'] =
+					    util_ifsetor($cellattr['align']) ?
+					    $cellattr['align'] : 'left';
+					if (!util_ifsetor($cellattr['class'])) {
+						$cellattr['class'] = 'list_table_top';
+					} else if (is_array($cellattr['class'])) {
+						array_unshift($cellattr['class'], 'list_table_top');
+					} else {
+						$cellattr['class'] = 'list_table_top ' .
+						    $cellattr['class'];
+					}
+					$rv .= html_e('th', $cellattr, $celltext);
 				}
 			}
 			$rv .= html_ac($spos);
@@ -532,9 +556,12 @@
 		$texts = array();
 		$ttips = array();
 
-		$links[] = util_make_url("/register/");
-		$texts[] = _('Register Project');
-		$ttips[] = _('Register a new Project on the forge');
+		if (!forge_get_config('project_registration_restricted') ||
+		    forge_check_global_perm('approve_projects', '')) {
+			$links[] = util_make_url("/register/");
+			$texts[] = _('Register Project');
+			$ttips[] = _('Register a new Project on the forge');
+		}
 
 		$links[] = util_make_url("/softwaremap/full_list.php");
 		$texts[] = _('Project List');
@@ -656,5 +683,3 @@
 // mode: php
 // c-file-style: "bsd"
 // End:
-
-?>

Modified: branches/messer-51/src/www/themes/evolvis/evolvis.css
===================================================================
--- branches/messer-51/src/www/themes/evolvis/evolvis.css	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/evolvis/evolvis.css	2012-04-07 14:10:47 UTC (rev 18260)
@@ -116,7 +116,7 @@
 	font-weight:bold;
 }
 
-.titlebar td {
+.titlebar td, .titlebar th {
 	background-image:url(/themes/evolvis/images/bg-head.png);
 	background-repeat:repeat-x;
 	line-height:1.5em;

Modified: branches/messer-51/src/www/themes/evolvis/images/logo_internal_repo.png
===================================================================
--- branches/messer-51/src/www/themes/evolvis/images/logo_internal_repo.png	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/evolvis/images/logo_internal_repo.png	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,78 +1,69 @@
 ‰PNG
 
    
-IHDR  Ê   ,   åöø÷   sRGB ®Îé    IDATxÚíw¼Eùÿß{n˦Þ#5&+QJ"åGGŠŠ)¢H¤ˆTøDPÚ€”
-j ¡!¡%”@–do;g̳œ½{÷ôso"žÏ뵯ÜìٝyúóŒE
-ð»	88ØØX ÌnþêúAH
-4Ð@
-ü—ªIî	\Œ*rÙ<àמnu
-4Ð@ÿ3ŒÒsìC€i at k—¯wýà¾Æp7ÐÏØx½1
-4ÐÀ*e”žc»ÀÓ@SìôÀ}Àl`<p °aì÷nÀuý`NcÈè' ìœt
-“
-40ðŒR|’³€ÏÅNÿÌõƒŸ§\{)pzìÔÓÀ.
-ŸeŸqʸ~ëÇö›\?È~Š‡p+``0ØI³ÕrÌ<Ƕ *]²ö»~ðqcÕ4ÐÀêÍ(÷fÄNýÆõƒI ³Ûí]CÂc!s·»tå}Bþ»þ®Ì4׆᩶†+Èð4ßí.]>w0+Œ´°=0¸Èå9Œyo&héõj˜¿¾_ ÇYà\×nªã; þì<\àúÁ“U¶ÕlŒ–cX‘ËCà-›yÀkµ
-žc¾Læà;ÀµòMšEÀi˜@²jž³/ða¸÷G»~ÐUÇorpÆ1ÙõƒK˼ï$à§ÀÀÀ·\?计­2ß·–cT‰9Ë€Å2Æ3]?˜Õ Ÿ
-4eúÛx…¼Ùõ^ט·6CWvÛo!aSÓØϸ|ž0 gm€€]?XùÔ†Ø-Ëí¹Àæ)yβøÞØ¥ÁÀ GW3ÉTÙÌÇÀ¯€K+!^âç½3v* ¶wýàµ:½ÛõÀ‰±SÏ»~°C…mŒ’ñÙKQ5X	\\èúAGïñ}éC„ƒ98XxØ
-\\*ó­’ç´ õc§Ïvýàuúc™ôvYŒqýàŸ%î.*ÎÈŽvý Zaàp£Íj|¥—Ë]?˜Ò £
-|ÚQspý`pCìÔþžcê	††ëdå²›µöu]?€=¯Ûº~°òvhjYnÿ© “Ø!yÜ1øýõÒžcñûàŸŸj¦†æ†‰føoϱw­à¾¯&þoÇ×éý_Oœí9ööåjžcŸ<L¨I"þ§À\±HTŠo%þ‚çØ ïû‹ s¥üþ5À©â9ãLà¤:N»o'˜dÔ×R80EÛ;¦Š9±µçØO ·×I‚1y_ï9ö5bi ÿ=Fé9¶ã9öΞcÍ+ÂéΟ]¾ü=,®ˆßÜêÎÝ7k¡Û¹~ðŽë·º~ðÞ¬µ‡¬»™3x*&ð"ÂkÀã„tôj×
-â|b?0ÉVàIŒ	¬¹ŽMo<î9öQe^ÿJʹ	uêËx -q®KƺÔøXÀÀÀ :ŽÏÀϱ¿SÞVúÒ&šb[~ããŽ1æÑ“gäüùò~?ª¢ißcϱ·«Óûï“r®ëÁÐ2Ï»1ÁNõÆ÷€¤´ÿFé9¶å9öqžc?¼/¦¢§ç<ǾH.{ZLAq†eçcñrìüNV.;×sìW¼öA×yíöL«;·Âãb×|l5e÷wý`üà‚aÈÄ£­ðšgFÚ¬Îï|.ðÙ~O¸Ösìu˸vFʹ1žc¯ÝODùI×V–qï)Àý8ç.ó{‹"¿Ÿ³6X AÒæ§Å»¹ð³@;Æ_!'š=¿ïø
-­%¯`–ûÖA8Û
-Ø8å§h_|¦Û?­\kE
-ü7¢9¶˜G7bÌXi88hÁD軈•3‡dÆ7·ä¦‡½Ñ–„Ö–)í}@5öƒ®— ¶ƒ.>
-.›Õ>è+´~1Sµd2ÖIUjikl‘¶V /¯%˜áúBxÒˆßÀdàÿ•èΓòÌ!‰¶÷n­ñU÷.“1§ô_ø9Àø¥^Áø‹a]L€Hšy}ð{ϱǧù|˜$sð^€Û:{øWO–s·~¢Fu„l)ߪ'voc*~cîÿÆ´^I”èúИ üº¾ÇB×þÓßÜsì	"|¤á?2foe|Ómå’ø­¸Jƽ>ŒÒsìõ€‡
-\×	üNþþ½ÍzïDŒ[±âÝÙííã	;ÎÅD$Ú)m…À}–ÅwÇúoÌrìC,8%$üOfpÇ)cuÜ⍰¿‹ÅäêƒêÅ(1A!IskVΟçúÁG¡/HjH{Ž½ë3Šh0]žckŒ-I˜«f”žc¯oäŽÊ¥hißìà,×–TØ—Ý0Q©£?íŠñ³ý1ež},ÿÄq~°Ø¡)oøè0š¥%óÐâßl6Æœ¹'&Mä$àŒ	¹¥¦9cJŒc7ϱmñ·×Sß1 at k<íÙ=ø-U¤©KSò›Ž÷»¥–hÜX]‘ñ;ƒñ_Ä™ä|‘ÈwÃFØ®\">£'Ì]Óã
-Ž]ºô#×~˜íÎl†ÅÉVÈo	ÃB¬?`…?Íes[»~ð•±Kƒ7ž1¢Ý2ZìîÖD‚Álj^/y·IXC©½ØoÃøµ’¸ØõƒI•2Iav÷_Í0‰qej0}[”kWG¸øW‰ñ±H÷aÝèúÁ	•2IŸÓJ»÷ó´õ¹"ˆ]—…×µ,lmb¨e†de‘3Œ¯P4u0+Lj658“â) š¾9˜ƒ
-<§Üy×Ràþb”Û¦œ»Òõƒ›«Ikóý¡	LêNƒI6ð©Õ(' nìÜLà€$aô{
-à.z›fïwý`aZÃãV¬x—\Sìá]™®Ÿæ#­žùÃz¼Oªå£
-Ԛ϶]Š6ù.&h¥j¸~°PŠ+œ—øit·O/`âú,ðï*»”fæ{¨¢¸0<qn9&/±–ñYâ9öyÐg.¤ðgÉE¹̸yXÛþ#bbCOÒf1eˆû¦qì&À‡bé-m7ðWJ˜Œ]?øØs직ÝS´üû«‚qôÍ;ÍŠg f]øKßôIoºW´úç1¾ÿ>PJMÖ²ZëK#bˆL<ü~°§ëçØQµ“‘ÂHw¢·YîàûÕ>øQhs|?¦+Þ=棕Ï™û
-Ö'?¼½]íLÒxæ¸~ÐY‡¶Ó’¯·/ƒà¼ì9öëBÜ“„¹bF)ZaUþÉãób5švZ×Jh:Æ'ýà‹b©h±`Y°òsf˱¬—–AêàèDö!ðÆ—Ú
-l)ÑUeöuFFYO
-ßsýÀïïÅí9öPÒÝ)kmÛõƒG<Ç^ØÄõƒ—úXïì\àçNŒ_õu`ÖúÍ)¯+&ÉúìÆä$7e‚@Þ*Lr'LŠ@!à2`ÿBÚd9>¼mÓœ•O?È„áU s†]§ËÊ~)vé3uz×4FP¯`Š´vFyŽÝZFe—ô
-¶Ø“^)vÒ¢f\Åã3?åÜHϱ×pýàCŒßºG4¯?s€³pôËÙ_ÈôNÓ›2´mÆÞË:¢ ?‹àb¢°[DÃ^ýŒ̺–ŸLwØÚsìM$2¶Œr Ì®…æÞzGWË,LPU`?LúO9Lu:pŽÖÚ£Ð8· aþ°ÖúwŸöwÎ`Âì?ÑÞä_§“œlSª¢H)d››{E†¹–ç º[²½óÃðú:½kZúŠ:µÖN¥}baNâ‹¢
-Ôƒ(¿àúÁ[UŽÏò~>Ì…í˜(Ó(ŠúLþµ3ùMÐMö¶†MÀo0~²Ïc‚±ŽÆøŒÂD».n¸
-N§ü"éÿ$½ªOÅZ¥çØí¤ûŧÄâ!miÊOÊèØ`–Rꔬ)‡û¿¢Q¾¬'ÿ´‘Ç,³ óùXáòž±Èh×_Q—Z¬V¶§‹LfAôÿž–žA†/Z›b… BÂg]¿ãáOù7x㳊«M­˜\Æ{*lkï*µÉǼž—wÞ/Ùû˜Õhw™Œ?üó¯åBç–ÎŽÔòɽ[4eºEC¼D$ÛCƒ0æÖm0õP#Td:vý ç9öCB’ĸÒrm{Ñ·¨ÇG¤›êûÿ”~Äq¤J= cÿÅɇÂp߬1ú·Zü’Þ&ÀVLjÖ0UŸFÊù‹•Rh­Ÿo𲚰·Œqc‹£|ã8Æsìó$zíWýùàåíO
-õíu¿gÖAÀµÙLϹM¹æ+!ü(cY§Yýû±Ö÷{\ÚY£©ß÷{–,ú$a.›QJØ~Z	½«Û¤{¢;Ë/VvÑ“ÏYÜãkÜQ„†à©ÌÉÁø§zrì’ͱyS/žó0U,"?…½
-ÆGù¯»8#…Qîå9v³ë=5jøTØF­øS
-£l‘£R-ù=Œopp}™E,jE‡Ö:éÓ}˜­”º
-)½&ZúüjÞ«<´Ö‹£ÐwÁ<De×6:=Ç^‚ID¾øslí³ÇB:¼ácXÖ¾ Vž>sxÛŒqv¾ ]{Ðû+G¡\&?#…QVZfwÒËÖ=¶ºMºY=YFX--Î…_·–˜q¢ÝAæ4ƒî‚ñ¯dsÌêɱaÆ¢5ØóLÀÔ˜À§meþ^É§¬•Q&1ÁZI±þU韌ð{aûÖ©½uäp3=Çþ5pU5ïëDÔßWJ]H>X«¢
-AJ©AKÚ2­úkJ)Kær¨µ^Rc;í—ȵôM)åˆ0¿ðµÖ«…¦¨”*c¿\Þ1W‡6‡ˆ…aY-ãŸÆ(ÿ ü|¢%ßKŽ<Çþ†ëÕ}¤2™{	Ã}…£lÚ”É<åµÛ»K«Ûj5ÇDŒN§oxýžcoáúÁü
-Ì%I<éúÁŠ:¿×ƘÀŸ'H÷żžéÌrÁàVölmšâúÁß1»¨¬C"}ãvËåÓ:{Î};òî,Û6YìÐÜÄ+:·Â˜â"sÜ­"”d0³5Áõƒ·<Ç~¾),Êe”Réj“UÍ(]?èöû0Œ‰ç:7¿&èl;úáHÄã%6WJµi­;‹ÓÀ©“ýèØù…óÿÕZë‡K0ž»¢O­µ>C)µp6¦‚Ùp¹n¾~i­ç•IèLjð·±ø¥ÔbL:ί´Ö¯•h##ïvš|›x¼CVÞó!àN­õƒ)÷ÿØèÖZï;?¸ŒÞéN_QJé”n\¬µ¾?¥íõ0¹øÉ3",WJ=\©µ~´ÄûýSj‘Öú«ÂpŒÉ›Þ4.i­;•RG ß•Ó7k­o,ã;ŒÄl×godÄô}zç¢Å±¦˜õ7ê=»,]yXñµ!OxŽýÞ¬öAÌn4Å1øÂ9ŽÃ*Ñäfi镐„öiT—cö‡¬s9[°YÓ'šá“ä˨õòÙÖÜ5Én-4Ç=]YîíêṞܾ"!'#.ë¹öŒ~ø¯Ökµ
-™å
-L¨)˜ §zã¸2ŠÝ÷'âVÑ :¥Ô_öyôÍuÞTøƒJ©Ë”R­šiÅÔì ”Ú
-“|<½s‘·À§=¥”*©Ñ‹fìaÌþ퉟×ÃDÇ¿¨”úV‘6Z0eoÁ(Ø$ýú6…s_ÝØûÅÑ.ç>—è×ø”c½”¾€‰¤?%Á$‘~<¢”š¢”*¶#Í®òŒqJ©ÍEP:;¥Í¦‰î9S´õRø&¦PÈxàÕŒ,¤G1	ç_IäBòN"-ózϱ¿PÏÙ}d›i="„$~ZÛ
-­	ah€þ´'ìœü_Æ$ߧÌÐvÿB	èe™Ë¤lÝöýÌ(‡ˆ	oMŒOq_úÖE-‰E¹0ݲ¦h©w“R”|Ǧ_n1óýž®,—­ìæÐ31þÉ(h£?LI…ŠÖ¯µ	.•0Ë\?ø¶°oˆ´ü˜®e˜ÜÄbG)\é9öŽ«èõ¶‰ý½Lk½´ ÙÀ->ƒ©_}(&júL°•%ÚX9iëSj—5<IªI@¤
-îUJM(ÂàÎÃ&Y1+ÓéÂ<Î& Ö
-Ü ”új¦.1¸…""çÆ”hœŒñåWŠWd¼®Mùg¥³ï·'¦ÐEĸçbŠ½,´2¾7ï	Àueô§Eæñ(`|¯SdÜþ¥Öúmòñ[RbÃa¤#
-˜Ú77‰TðI^¿L̲Ñ:S>\Ý°“ïû!¨gûÔÐÔtÙç"‹£f;ƒ¦Œõ;]Íäb1iüØõƒÅÞ;]l{”Y?3ÍìZ²l]…8SèýÑ&æöšL¦$FqÚ‚°¼¯q´˜(ŸM{èPokæålŽù¹FL|-kúÑ߁Nzû}32ÖÓJ.ͤïÀ²Ê«$øær”
-)¹¾|¯Óé»yB«˜ÿ=ï#šÇ©±S¸nMàfòќ߮KøënSJ]+ózGàX¥ÔµZëbQÊ‘pp)ðãX{3”RWaÒ˜NíæWJ©I¡RjGa†ÎÑZÇsyÿ¦”º¸žüžµ¿UJ=¬µ~7Aࣘ‹ù€[Dh˜”ÐKBk½PÞÁ%_yŽÖúW%¾Ñ Œ¯<â7÷ Gi­ã–€k¤"Ðd¹n¢Rê/iæÛ6”ãVàD­uÜÍ”ÜÈà:òiQ'`ÊUžäëw߯µ~«Ï~Œÿr'—Öã¯b¶Ïé!_”|ϱ‡Õ;¸Ç‚~pù£pÕÐöÁ{[!ãBØÂC…à†Ö	1	­^¸Øõƒ3W&›FD‡bê¯ê*åCÕÔò,€5„I쎉R&RÙ¹	I0b×
-ó|³-Û'‰úKr!Y at wg9¬­àpicZ‚!~üǝ3§kcë&¸dH+7uöðz6Ä‚>—ÍÍìo†"ï•b~Vâö´²u=ý0’ÁvŠÔ¾ ø›çØÐ×½Ó 3ÉQBݘôQËOŽ	ᓵ֓0ƒ7”RßÁ­I”…ÝK	UZ르•~ ”'}ÜQ´»äš™3Þ–`’Q[=À·”R;É8Àl<q~ì²-#z	Ü[ˆIJ{²6G’¯õp˜Öº+¥O7(¥¶‰)ggRºtäÀ1e(Í¡~sàP¥ÔÉZëBZu¼ Ì”ˆ åuèƒÇõÐùjÎÊ<ïµÛ—Éé+0	㝀šŠuÅÓƒ[‡Ìn>rØšƒ7Ìê|b¬¿ò\×_ù-Ëâ†ÈôcYŒ¯GqôÕ˜½NïRle™_k,[W.>þO4æŘj8>&Øå¬Øu‰´ø5à8‘€¯:lYÇ'&Ú1ÍfÊ-Î…µ¬ãP¹v:½«Èìì5uXÛ»`ÊÖmÜ”á»…)C[¹qXÛ3ôYªõS¦™]gº~°lUÍ/ϱëíç?;Í@ÔOÝ?Q)53vüS)µc6> &ˆ[Dû‹ˆ_NLœÅ4§9Àßå¿»ñUÒ^’¸¤ Ž4â(%,Âè#ü*Á€âˆûè÷*Ó78"ö÷¥iL2†Ëc´`w¥T©½}QN¯\¯i£@¶ƒRj-ò[$¾ÜׇQZV8X‹A„fo9×ÞÁäµµm£êÖcá¶zŽ}¬çس›[›–‡a÷;a6\д.ô{#£EòLôÜÖŸíØÃVw†ç9vS
-·O¯‚0ã'I¢Þ…¢E`üÆkTx{SѦÞFÚ
-ìõf.üDz·-£’ÞÝÕÛ¹ðàJ1‰Eh–IÜòPW¶9^•g°eÑl
-èÚOc”ëzŽ]jãïÕÆ?)±¿
-,ñû®çgR’O¨õ<ÇÙ¯±!&0%:vÂø¶#Ül¥µžV€ømŽ1ÌMÉÉLÃó1ëF±Æ{"bZwÇÖO²­Ñäýv/i­Ÿ+Ñ֝ä‹Cl­”Š-$_Mk{`Š˜IW„YÇc[n/ÁÐÞ¦wÌJ©þWb¥¹)Æ„'¸æëB· ¦j­³QŠÔòööèã‚5;EZ,®ÃâÝG´’‘Ì|‡M–PËÖðØ43Äð:¤cŸÃ=Ǿ8µ
-
-b&y¾#ô{¤ëï¸'M›,·l]©ñ)$˜Ì•É<^´ÈÃD>ãÛ;Kîý-°iv¹¡£›‰ƒZØ£¥‰ë2=¼‘±L`É⢸ðë/µ6õ°j1G˜þÈáeNy°JËÖ%ú2“_™ã’oTÚœÂ$ZçÛeÌꉷȗ׌hÄÆäýÇJ˜g¡ˆâ­ãý“"¥gh£€\·("¦Eˆ·Rê]Ì|ßX)•‰ån»´dqw­uV)µã×·d½¼ûíg¢•EÌ`¢RêÌî9›Ët× NÃáä#x»ÊœoÄþÞ¤ÈuÄöC.cìÞWJ݉‰¯Ø^)5NktáLŒ)Ÿ¤‘Ä5ÊCÚÃï žѶ7±]CÂ0\TãâÝC$À‘EvºWbPºj$zIlU'‚´9Æ	½‰LŠobJ²U
-òŽV	­rŸ:i“iãó™"×_/l”ˆ?–|ÕÙ"é}3êËcÝY^Íæh¶,N•”Ð́}1æ×50‘µ7Ê8d™·Tˆ7m,‹™Ã÷¤w9B0¦ëÙ«àöŠ1É“êÔöF)L²›ôøµbŠÖz\ìøŒh”?fí w(¥Ž.pÿZ‰~YÆvÖ-ÁÄËAÄ[cÚ-ô®±üf…m%ïGŒIôN™…‰3™,QJMÿî@ Þ¿·Ë,v¿E®{§Šâ	ñhÚ¤|·˜Põ€Öú4F×&µë‹ ÂLS|?Âs™Žª#)¥¾ä=ôÞ®ëa*;ó\Ëõƒ¹žcoƒñs}¢áÖ¸1l#øl•ÅÇãï”ÁDt
-IütD„y½ÓrŠf)[·[Ì|i㳍ìCš†•g{Ô¿mD˜‰Kõ3›Û-Þ~3òZ6G†¸ÍökiŠÃ2~wb|Nã0Á@²z m,wñ»5"í[=ìúAnôýúæ–n#k«V¤/xe 6oÖZ¯ÐZ_!ÂX„+¤˜ )Âf|ž_YáQ¬vlK™]Žû9»
-XÉZËl«¥•MkÓZÿF4Õ1Á0'¬DGÏIÐR#[ÅXµ”iEÌU1o4pàH¥TÜjvb\8‹ß×\@êz`öˆÁŸÃ0¯±„\<îÃÞ	ËâóXXRF
-Ë3å"×~’ ¾(4N¤§ÖøÁ^é3þÎkbry~XC»§`VOUÙÞôM-Ø·@Ñ=é[¶. º²u1ùtq0ÌU¨êÊØÐì¯bJÇ-&±ÕŒáƒþñÛŽîµîêÊòÏžû´6Ó†œ=¸åžû?Ên€ÉÝ]cƵ„aÞÈꃍòۋضbø§¥M¤´qÿªè¸ëïHän2jóמcï_mT´çØCè _c
-­õ-Ryå ´I>u!Â’„rj»°Q™×E±+µÖïÅÎûU´µQû{™Å*ø;	'BÜDѐaRLžÔZ¿ÒŸ(îÒYO)Õ,¼Å°q©÷«×a\C0fØ)J©vŒ	Ìtß×('¥E+Ì.‹ow®–…²¦çØ?ò{žü¾<Ç~ÙsìsÒú¢™Ä‰Èo\?ø‰çØmžcî9ö÷<ǾÆsì§Äl·FÂÌ7£F¢ÑIúž„§xŽ}­ø–*!¶çا’ß—-)E]^eWo£oD;¦<Süù-äÓvâøK5eë„h¦i³ÇyŽ}³çØëÔ§ÉÄŠj,‰õñKíëÑ£ÛšÛš€Ù?bY­–õ¤¼Ó‘¢AþS-ä0ê·½W]˜
-&76‰ïI¾dߤ¯K¡“h½ªðç”sû7{Ž½ALrgÄÒ|GO¯¢w<|e±ï(¥¶Kü/Wïà–‘J©¢Ûé‰Ö)"Š›—z˜<kݘfº a"«µ~Rk}¦°LTÑÊŽ1‡~ÓüÉ›R›L°âãðr?tëäMÓ‘ùõÀñôÒ(çarö vô»}Œ¼:»}Èι0;¦	ýâ[žcï L+Iš1>­€yŽ}²ë¿ý¾k´\†)¡W7 'Õ)'ðd16'„…ïÇKtà|!nÅL(Ê»²ŸÿÉõƒÕtÐõƒ7<Ç~„¾ù{S=Çþ¦HÇmÀ$ÐZ4ïSE³K.üc€#=Çž©Îñ‰ÿã?Ùܐ«‚îîgzr Ãδ[~yh[sãY`ãŒÅ›3¼q2"MàQ9Ú(¯Àužc×£÷ÇҏGK̯©ô
-šÚxIjÂöñJ«\uW5ûwˆ0—4
-8Ìsìÿ`ò\K	WkÉ7݈ô4­ç€kVÅj­_QJýŸX>2Àψ¥Nh­JÝÕ-€5”Rûk­ÿ^§Ç[2–Ť¾^HëÖZÏ—àœõ1>{«3+a¤à<[i`ŽÖºC)u%&¦*,"Ÿ¢¡—ãºz\ÆL0ÙÙEÑ¢ý‚ñyÏî‡ùò‘tŒ•‚ñô¡>­8ø‘¼¶¸Ësì	c—®x±Ñ‹4y?}ë&1¸Ésì­\?8+Æ`"„1I¡¹á]Q‘ϯWâ¼ëÏzŽ}pNÊσdÒl_ãcÞ“…Z~ŸÂ(-J'>/¤†¤v×þã9ö™äwbˆ£ãèŽGò™¦{·4ñj6DzÞÈ…»®CÇÒ8,¡ÂŽeñq.fYǧ|ÓÎ
-¹
-øj  ›IDATºZÏêPež¾ú+Ægšô×nAñԁè[®RX¬;S~nä'Œ®ñ1ÝÀ×e£èU…_ˆ@צ”ÚVkgJWcªä€©óh¢2L!Âm•0rªRê¦4“¢ä`Æ];i9—7cŠzƒ©EúHÚ3egŒÓÍ­2ûѨoV1Öo“wG”“.xsŒQž¤”º¬HŠÎ¹1AìN­õÇý4_®#_åhrl
-<(ˆH5½º~0:OŽ5;<Ç>Âsì
-Äoxµ˜Ù¢kîmpg!4wÄ~› ; RwôÛäsÿÎÀD{z˜HÇ;…nèúÁyu¬.áçô_â`¯
-vü(f.ó*¼'N®Ãx]C…fî[›Ø´)C70§'˼žÞ>öІ4Yº~°°‚w|Õsl»³é, \•ÂÝÔž?Ö:.®ü…ÒIñµà\×´t]šV‰q[Dt-ù½®'”³)ð„TÌ)Ä ·RJ]Nºé:‰m1µ\‡'Úp01›É©¿k­ÓŠe\M¾Üã—€?)¥ìD[ëˆ)¯Ò;ÿà(¥Ô}J©
-WJ­‘›T1Öq“ï®J©CK7˜	,C„Í'”R›&úÕ¬”º|Ï.Œ¿¹¿æ‹G~×™ø<HÝœ=éc9Q.J›Ø´†³\?ˆW‰˜%&±ï%L0×J¹«™¢Dð0àj×^!½.fIØÝžcïüD¤¸Ö:5ý2p”ësëÐÇNϱ†^n÷ù®Ü[‡g‡žcï1ÞO‘>Ñ-‹SµpìòNæeCföä™1ÕtÂ0d~6da.Ìnáê£Ž+‡Ó;"»?ÐM‰]×~ë9ö˜˜ZÎ|8®‚KZ©¾jRgέý4ú€U‹×ï×cÞÕ	b‚32ÀJ©´Ö/ÆLŽ‰P¾1&ïò)¥ÔlùV¯‘ÏÏÜ,¦a”²Ð<.´	ÀËJ©ÇDØ“ß92&Dÿ¸ Ñ~[êœÞ&ôñpa at Ob\£1¦þÈ’·S¶-HQ|ö“c‘RjŽX™Þu¼¹(!Cc–’jÍ.­Ì©K)õ^l¡µþ³¼_¨”:±¶ð•ç•RO	³Úãš‹û½O×Z?ßÏóe2½Mæï`Š©SP£bð>Æóx‰ü2b’žcâ9ötϱ'I×ÒÛ½°›EÄ¥ëIµ¦fÔÀ:\?øÆÏ—,ŸV)æb­·­§T-Æ·Px4DC?ã®×³{\?¸LûÝ÷Ù°us†£ÛŒt[gWÝLíèfZg68yEç’å!|
-Ï£òî_Sßí³ÒpC™fÓ„Ѽ]äšå˜@.U’u®ÌI¬ÇžBRoßô§±oZ–cb¶[˜$Zë—b`­Rk½ “CÜsÆ]ò}àÀ“ì ôƘôç1~ê#EÀ<2Æ$_>_lOJ­õ¢M½/§Öeâ,Ì&“|
-س€fw_¬/ó$LY¼sÄü9T,·_«a³ä…YFæë(vc9†¥hü»Æ´ú¡˜ð3¥_“ü˜¨µ¾z ¦Ì4zo;wS¡ˆÜ‚ê²çØ_
-s—„æù°»ëYÉ%{+6(û¹~ð€Ü¯h£‹Q®¬ðûhL:A„o»~0eU/0‰ ÝJçö%´¨¨8ô|9ôƒy8Ù¿
-1•þ7ÂT­Y&’â|`ö <¿	¼ù³úTìÉ…!OöäÖ¾he×>R"_ÆdY˪xþf˜€ˆz×+í‰ööJÆPæË.²¸7Âø·_—o2Ûõƒ¥ý0?¿"„èö"Uš*i³]¾é(9F”0ÿ¾#Bá<àõþžsJ©ýÈçj>"ùoåÜ·%ùñ,f£ãî”ëÆ#ÚE˜Ê0L\ÄÛò-Â$/O¹wòffh­'H4ê70uB7áî±ܬµþ¨Ìþ«ÅŒÿÛ>f{/pK± Ùp8Úr”0ܵ1>ö70¹Ê“#M»@ß'«µþy‰þ®-ŸåY¯¸[ký¯”ë3˜󃄖¬-‚×BL*ÖÔDúLÚ3Ï”5·Tk}eólŽÐýزЦØVj„,¨Áòñg»~ÈoC„QFÌÆ»~ðœl˳0Çõƒ.ϱ[1>ÐxQõ}\?x>-*ß|ªHÓ-"iÞŠ	šéiQÿíHc”Qù¯üŽcÈÇ«<¨µÞ§ÐµÍe˜l>¢@`‰h‰g“÷I:ÀtñSÎpýÀ†º=¦ê}œI>Ð`’Ÿ:,‹Ãn"‘덡i V3Äcl®-vas6YÌ
-Q:ú˜ÈÕNϱŸÁ쑶~âž÷19
-|:ñ>y_K
-4ÐÀê¦M0cŽ¾§_¥ë9‰’¼…ÞUÚHÏû{
-˜àš¡h h ¿c&f¦U”º8¯º¤TPS¦<³#1ÎìBuW`¢¤Ü“l h` 1“ó'LjT<ä­uÉ”µæzõBvGøƒçØ·`"®Fc‚€ÞÅä=&é'
-4Ð@
-4°ªÃDÙN¥ÌšÜÿPžñöçÎ¾Ê    IEND®B`‚
\ No newline at end of file
+IHDR  Ê   ,   åöø÷   sRGB ®Îé    IDATxÚíyœÕÔùÿß¹3É¸Ö¥*‚ÕB*uã(Eô§~õ§Ö­j­[ëöUªV´Z—j]«u¡¨ukõçVµZWp;Z$ØÅD at T” @`&¿?Îs{3™ÜýÞa°ù¼^yÁ$¹'gIžýyŽEð»88Øؘ	LîþæúAHŠ)R¤H±šÂª‚IîÜ*pÛ[Àq®¼šNuŠ)R¤ø¯a”žcïÜô(áö¥À]?x"î)R¤Hñ­g”žc»À«@CäôÛÀÀT`$°°Aäú
+Àuý`Z:å)R¤H‘â[Ë(Å'9ø~äôo\?øm½WgDN½
+ì˜ú,;ÍSÆõƒö:¶ßàúA[:ÓÝcÎ<Ƕ ÊýäÛëíúÁ7é
+¥Hѽåh`RäÔ\?0µÅÞ)$<2¸—>!á/Àá‘ûèúÁdsŸ¡ažaa¸„s ñwáâé«€0Ú˜`¤m€!@ï··cü¯Ó+aþBø.Ž Ú€ó]?¸½†cjþ
+ì¼\äúÁ˶Õ•c·‡À™›·€ª<Çì
+L̾?uzö ΆO‡º~°¼†íŸœ‰qGLpýàÊwðk`Màà×VTяò¾o)Ç "ï||
+|
+Ì&»~0%%Ÿ)RF™üm
+Ì gv}Ìõƒ}ÞZ‡¾KWØŸ !ˆ†á?øjñ[€^¶¾6rý`é+`7-¶§ó†eqÒð…ÁK]À ‡×3ÉTØÌ7ÀeÀ•å/ñó>9 C\?ø¨Fc»	8>rêM׶)³A2?£€Æ
+»²¸¸ØõƒeŒãdéCg¹~pEÞ…&`°~äô¹®\R£ö‡“éè²æúÁ?‹ü®Ÿ0¨(#;Ôõƒ{+ìǏËM«Ò{Àծܜ’Ñßv”Å\?˜	Ü9µ—ç؃V}{}„õö²ÚÛþ>e>\?€Ý€Ÿ ƒ]?Xz?44-¶ïËÃ$¶	C^ôš{_R¯A{ŽÝÇsì+€b|ª™*š[C4Ã{Ž½S¿;,ö·
+]£ñõ~;=Ôsì!¥jžcŸ¼Œ©‚I"þ×Àt±H”‹cb—5_Ö#cLà„¶ÿó“D¾‹bøŸmïð
+Þ‰-=Ç~	¸¿L`à&ϱoëHŠÿ}ŒÒslÇsìí=Ç!šW‰i¤Ûoñâϱ¸&r~ µ¢ý‰)köÝÚõƒù®ÜíúÁçSÖé3`S§÷m˜`Ÿ,>^$dY‡v­ð¯¹÷ñu`’=€—1&°Æ6=xÑsìCJ¼F¹15$ú=cç–Ë\›x
+¸èUÃùÙ˜ä9ö/ÊX«žÀ¶±Ó›ëÖá[HZïxŽ½uÚß=á\)Öƒ¾%ž+( ;ÖaÞN.NIiŠÿFé9¶å9ö‘žc?|1½
+¼á9ö¥rÛ«SPT²Ä²ƒ±x/r~;«½mºçØ3¼–^7z-ödkEû<ŒÜóÕж—ë#{/
+šÃ31þa—á
+¯5÷Ú´Æc>ø^æÓÆ{Ž= „{'%œæ9ö:u"Ê/»~°´„ßž
+ìZÇwî*ϱ7+c>Ë9_1\?ø8³Ü£ÂÙÀF	—žî¢ïüà»ulÿôR­)R¬ŽhŒ|̃€[1þº$œ
+4a‚
+²X	0|K'÷ÉŒlljŸvdD›Z›'´÷%axÈð/—¿°5,gQpÕ”–^ó­Ðºc¦jÊd¬€_ÕH›^ ­%À»ÀÀ²"Ä{}!<IÄoM`ð‹tçeyfŸXÛ£»«êèsAÿ]žËÆ/5ãw,„˜ ‘$ózàϱGÖ3Ú·BL¢s1Àïë°³\?x¿Þò{p\žËïcÌës€ÖÖt°}bך€ë0n–)¾ŒÒsìõ€g
+óÜ×
+üIþÿ}:šõægÿ3bɒϦ¶´Œ$\v>ðŒß-Žx²8q¸¿löÇÞß‚SCÂ÷3½—:|Þ²»¼fûD,~(wï[+F‰	
+‰›[Ûäü®,*“ý!q
+i?ϱwwý`R
+f¹çØØ+0WÌ(=Ç^ßÈå3JÑ<’Öìàl×”Ù—ñ˜HÙ(vÂøÙþÒ;‡‰Sb;{Žm‹¿½–þ¤.SÒ³WbüáwU¦Ò[,Mñ5é9vS5Ѹ)RtWd<ÇÎ`üQ&ù!ð¿¢]:€íúÁâ3:+r_»—ÿ`øÂ…‹\?øeۊ̦Xœb…ü‘0|*Äú3Vøëö¶ö-]?Ø{øÂ`öÍÍ-–Ñbw±°Ž%è}¤èUÑ’w‡50µI߇'\ºÜõƒ±å2IavO ?Í0Ž%j0[•Á*I„qð¯"óc‘ìúÕõƒãÊe’2?ÿ-#é·?è†ßƒÆLj¢ ªxïšòü¾«åà„s׺~pg%iMb¾? ˆ/S&™âÛ¬QŽÜȹÉÀ>qÂè9öšÀÃt4Í>éúÁ¬¤†G,YòK¸¡Ð×g–ŸCˆ“ýÛjÇ3ÿ±>"üÏ7Üô¶1íT›Ï¶u‚6ù&h¥b¸~0KŠ+\»4´D
+&ŽÓõ¿+ìR’™ï™ˆâ¦@¿Ø¹ÅÀéUÎÏϱ/€NïÂàîö1¸~ðçد»$hùOVØì:睶‰§+d]x¨Êyš!éM‰âMŒï?Å· J©cµ6­õ•éŒÆ
+¿ŸìæúAà9öîÀ0 ¿0Òíèh–›œ\郟‡Æ°“#ºâ#Ã-}Ýè©í{cýçÂÜ­«g’À3ÍõƒÖ´”|=¤‚óžçØcv]‰æ²¥h…ù'óÌÏ;•hÚI]+QÓ阔‡QÖRÃ÷\?ðë=ϱû’ìN™U¡â9ϱ×6výàÝ:ë=íó\nÅøU?fj­?IIyM1V¾Ï@Ê(…QF	äÝÂ$·Ã¤ä3~
+ì•O›,ýúõܤÝÊ¥dÂð:€i}û®»ÜjûQäÖ×j4Ö$FP«`Š¤vyŽÝ£„Ê.“èl±&)¼\l$EÍ>½ŠççÄsý=Ç^Óõƒ¯ºÙ71‘Îé[zŽ½±DÆÖ‚Qv•Ù5ß»×,BqµÌ2ÀÀÕ{§”ÈT'çi­½”¤w‰Æ¹&wàY­õŸ¾ícÎ -‘¿çÊ¿N&y°U±Š"ÅÐÖØØ!6loz`ES[ÇüÆ0¼©FcuÎ-©QÛIí4P¸,X”0DZƒhµ Êo»~0§ÂùY\ÇùÎ¦Þî€bªHQ­Vé9vÉ~ñ‰]1Ò&\Úï[FÇÆ S”R§¦l¬K°&p°î‹Fù°žüÕF^°φÌÚÁ²‡ðšEF»þ’šÔbµÚV.'“™™ý{eÓÊ^†/Z›`…3BÂ×]Ù³ßò5x㳊V7éÉe|´Ì¶FW¨M¦È1—vϱŸ"'Æå–kE碋H6ÕדñŠ»HR¥žÂäKIç ¦r¬0ÜOªŒþ­¿££	°&5뇘ªOýåüåJ©ç´Öo¦orU-sœn`a”³äïÃ=Ǿ@¢×.«çƒ·´¾Ò×· ~Ϭ}ñm™•ç7´7^ᢌenÕw±Ö÷{D
+ÚY³
+Âì{Ž=E>ú8a.™QJØ~R	½Iék^6&%0ÊQžc7º~°²J
+ÿ¹2Û¨÷%0ÊF`9ÊÕ’?Çøïn*±ˆEµX¦µŽût?¦*¥îÅà_“¶va%ãJ‘ƒÖz^:?˜g€lÙµ€Vϱ`‘ïþZ­}vÅ2¯9|ËÚÀ
+Ã3&÷ë9iÄW­oÃòÑ]4þ#ä¨Jeò“e¹av!¹lÝék^£Œ£ÁZN±þUéŸÌâa{Ô¨½uåpqžcÿ¸®’‚÷5"ê_(¥.Æä3C	AtQ(¥za,i_k­«\SJY˜ˆÑPk½ ÊvZ0.‘/«é›RÊa~!àk­»…¦¨”ê+s¿XÆØ^ƒ6ûˆ…áëjæ?‰Qþø%¹(DK:?JŽ‹<Ç>Êõƒgj>S™Ìc„áÂQ6iÈd^ñZìýÜ…•mÕÍðU£é^¿™çØ›¹~ðaæ’8^vý`	)ÊÕòçxŽý6#sÇ”Ê(¥ÒÕÆ«šQº~°Âsì1&þíkÜüº˜ ³­é\„¿+—¨”ꩵn- at L›Ó0ù C#çgÓ€ëµÖÏa<g—Zk}¦RjSà\L³~r߇˜t»KµÖo•Hè‡aêPïN$~D)õ)&ç2­õGEÚÈÈØN—µ‰Æ;´É8ŸÔZ?ðû;€M€ZëÑ‘óÁ«è˜î´·RJ'tãr­õ“	m¯‡ÉÅßWž‘Åb¥Ô³ÀµZëç‹ŒïqLu¨yZëÄច)b²ITÒZ·*¥N”Ówj­o-aú÷
+?œ3ÐÉH)º|SÌú¨Z¿Ý3.½¬èB­MÈKžc>¥¥×SS[zÝì5÷¾ø_Žã¬†ô¶Mn
+”.PN IwÐ^¾íZeµëñA­¶Q+“Y.ÁT€º±^kYN±û: jþ-D§”ÚS†ñ:ç:o"üi¥ÔUJ©yšéÙx`$°RjgÌv‚GÓ1 at m3Ì1¯(¥Šjô¢{³Kìòz˜èøw”RÇh£	x³KÌöt. ß ýú9ùs_ÝÈø¢h‘sߏõkd±^BßöÁDÒŸc’H?÷žSJݬ”*´#ÍNòŒJ©"(›Ðf¶—#¿'Úz1üS(d$ðAF>¤ç1	ç;ˆ$r±4ND˼ÉsìÖòí>ÚéqPÿˆ]ZÇ
+­1ah‡þzeØ:a5#²_Pbh»Ì¾ô’ÌeR¶nHÊ(ëÎ(‡yŽ½öê(¸¸~ð¥ë?v”HË/áú“›Xè(†k=ÇÞv
+o«Èÿ¿ÖZ/ÌÃDFc˜²A‹¯aêW 
+\	¶²D+%ía]aJ-ò
+j,ÕŒú)¥Æ`p`“¬ˆ•éaç’ ëÜ¢”:,OSWGÜ,ö—sûaJ4N *IËš!ó5>&䟝pLo7L¡‹,㞎)ö²ŸÐÊèÞ¼Ç7–П&y3e½N•yû{v.µÖsÉÅ{lž  Ä×ÂŽÍjàÀmQs&‰à!I^¿
+c–Í.Ð8Y¸ša;ß÷CP¯;öi¡©éÚ¿ÓM‡LuzÝ<Ü_ö|7'®ŸŠIã,×>-ó·働b×ëg&™]‹–­KQÔ"ÐJG¿oFæúž"‚K#É;°¬rÁE‚oþ,Gɐë‹v7Oè!fÇwåxDó8-rê¹<÷­ÜI.šó$àƘ¿î^¥ÔxLIÏm#”RãµÖ…¢”³ÂÁ•ÀY‘ö&)¥®þ Œ ¸L)5)î#TJm+Ì0‹ó´ÖÑ\Þ¿+¥.n"·gí•RÏj­?‹ølÌŇ€[@hÓ‹Bk=KÆà’«‰<Mk}Y‘5ê…ñ•gùÍ£À!Zë¨%à©4Aî;V)õP’ù6‚
+ä¸8^ku3Å72¸‘\ZÔq˜r•ù°¹úÝOj­çtڏñ_Žã´·kóƒ0Ûç¬$W”|wϱרupíøÁÕÏÃu}[z¶BF„°„`‚(C븈„V+\îúÁ¸n¬ÁôÅÔ_Õ0Êg*©å™"ÇPd£ãxÄè˜bŒ’ä²u+ëðþvå|´ŠÔ>ø»çØOÑÙ½]3ÉAB݈ôižÛO‰á´Öò0ƒÙJ©£0¦ÔQv)&Ti­•ÐV;ð¿J©ÒÇmE»{0vë؈™ðÞ“̶µ8F)µÌs3fã‰#·mž¥—Àcù˜¤´×
+jjד«58Pk½<¡O·(¥¶Š(gã(^:òmàð”&aö ”:EkO«Ž€¹9+!çtèæÞ#VÒúA»•yÓk±¯’Ó×`Æ[+43jŠW{÷è3µ¥_ÿ5Öê½A[¯Ö—†ûKÏwý¥ÇX·dM?–ÅÈ°ûv#Bô1tØÏ3‹=ŠHúÕ”­KQ¾ðRŠŸ2Éì:Ùõƒ¯WÕ@<Ç®µŸÿÜ$Qº¼Rjräø§RjÆl¼OD9¢€ö—%~íg!Íið¸ü¹c_e>í%Ž+òá¬FœMg	0ú,.‹1 (¢Q££JôÅuŠüÿÊ$&ÁÕä*Jí¢”*¶·ï%¥DñÊ=Ùâ5=É“í ”Z›Ü‰s€':1JË
+' kaÑ‹Ðì-çúÁ|ÌþŒ=ž£êÖâÃíá9öžcOmìÑ°8WÌÛ™
+AYžcoh´H^Ë>7„õ§:öݝ²zŽÝPÅÏ'V@˜¿‡ñ“Ä‘¨£à9v±¿»R6bÿ Xà9öÃU¾ŸqI>N Ö󻆱&0%{l¬¹þ0°…Öúž<Äo Æl0=!'3	Ù¢:o£·<Q¤­G"L,ÞÖPr~»wµÖoiëArÅ!¶TJEƒ‡f‘«¦5¸Y̤«¬£±-÷ahsé³R¬ÿåXin0ácóÜóSŒyà6­utܸy9{{vq	Áš‰"->­ÁÇ»;f/¤jM‘°®¥s	µ¶*›d†èWC‚tð[ ŸçاU ALÂloցzŽÝßõƒÏòü&I›,µl]±ù©•`’¯ß"º7¦av˜éŸ ¼LËó¬Ò²u±¾ôÅäfÍqûb|\µ¨Í¹L˜DSì|‹ÌY-1‡\yÍ,ØˆœÿX	óÌQ¼e´R¤ ¢mðNžûæe‰iâ¿B)õ&j#¥T&’3¸IäÖ¢ÅݵÖmJ©y˜Ô#K„ˆ·#×~#ZY–«”šü
+l¤‹htµF?r¼ËK|7fGþ¿qûZ‰ì‡\ÂÜ}¡”z¸5D)5Bk=9vÛ±íü?i$Qrÿ˜
+ÿ'€×›{Ž&²kH†óªüxw	°‚ ›”åU½8¶¨AˆqBo,/ÅÏ€*hJ'ŒÑ*¢Uî^#m2i~¾[£%I"ŸïúÁÂîÌ%ÅÇ›4—…Ìá»Ñ±!˜é«`£"L2‹±5j{Ã&¹‚äøÕâf­õˆÈñ]Ñ()ÌÚPJšç÷kÇú}p	GTØP„‰—‚,ìÑn¡cåOÊl+þ{DÁKÇ”™A˜8“‰À¥Ô=âßí
+Dû7·ÄbÑñ5¸o~ŢѴq3øΡê)­õì$FÕ&µëó ÂLCt?¯Ú3Ë*Ž¤”ú’Òq»®G…©l/Ìsmצ{Ž½pdTírcØ$Fð½
+‹GÇ”ÁDtõ‰]:¨¼„Ži9	³”­Û¹Ff¾¤ùÙJö!­Ûç1Ý­HšË=ÇÎgHZ«g]?h_}Ž~«ìšnU§5ÑU›7k­—h­¯¡4‹k¤˜ 	Âfô=¿¶Ì£Píئ»õs.Ïc%ëQb[Mù¬lZëv­õDS=óMÌJtð†-ÕmÌUÞñÅÐ^Á{ób„ö¬”ŠZÍŽ
+gÑß5摺Þ˜ÚÜûûaæ4–ËG|Õ1aY|ë J¨a9.ÆP.uýàœ°ƒ0Ð(‘¾­Ê{[¤Ïè˜×Âäòü²ŠvOËì^©°½§èœZ°Gž:£»Ñ¹l]@eeëfaòé¢ &˜«âª+žc¯KrbóêÂ(ŸÆøâ¬AÛ‹Xô«Mû$´ñäªè¸ëó%r7µù{ϱ÷ª4*Úsì>tPYekªµ¾K*¯ì#‚öïÈ¥.d± ¦…œVÃ.lXâ}ÙØŽ¥ZëÏ#çý
+ÚÚ0Ïï£óòÆ*ø'	!Bܱ¢!÷¤˜¼¬µžQÇ%ŠZÖSJ5Jo!lTl|UâFŒK¢Æ{³Rª“ÞfºÇ£?ˆj”ŸÆ¥E+lûZ/Ì]±Fp½|(kyŽý+ϱߒ럁çØïyŽ}^’C_4“(ùƒëçxŽÝÓsì{Ž}’çØ7xŽý
+ÆAe’7Qe0„„·'íWwªçØãÅ·T±°=Ç>Ü¾lq)êê
+»z/ƒ$Z0噢Ïo"—¶ÅC•”­¢™¤Íé9öžc¯WAý‘0í$­ôUVH0[RùÆ“$_2ŠŸÑÙ¥°“h½ªðׄs{wzŽý
+Öt{YӍ»ÑšžN®²Ø/”R[Ç®GËÇÕ:¸¥¿Rªàvz¢µd‘™„‹Å&ÏÑLg– L´i­_ÖZŸ‡),“ÝCÔŽ0‡ºiþäL©
+1&˜Ñyx¯Ýú9ÓtÖüz¸`‚xVæÓ(ßÂäìlë9vË0?ø`jKŸíÛöa
+ðüs<ÇÞF˜Vœ 4b|Z¿òû×îˆ\ß)fZÈ\…)¡—· 'Ô('ðLíÅƘ°p"p´D~(Ä­	ek>ûù}®̬¤ƒ®Ìöû9:çïÝæ9öÏD:î	l“G­Fó>
+Sµ"þáì9ö‡˜êÅvŒ€ñ‹¬ŸçúóÏE,(zŽ]‹"ÜßH?ž/ò~ÝFç ©w¥&ìJsR媇˨ù[< Â\ÜTüà@ϱßÇìRL¸Z[ÖtC’Ó´Þ nXÔZÏPJý?±|d€ßIÐZÏ’º«›k*¥öÒZ?^£Ç[2—…¤~šOëÖZ(Á9ëc}Fª3+aVÁy½ÜÀ­õ2¥Ôµ˜˜
+(³ˆ|‚†^ŠëêE™#0Ád熊öÆç=µïË"	è:.¢éCjÁFÆ­äl´ÀÞc¾pÉ›ˆ^¤É'é\‡0Ž¾ÀížcoáúÁÙ“E‘ò™>ùÂZ%λ~ðºçØ—ç%\î%/͐*ó¹|¨ÕàŽFiQ<ñyU$µ»~ð¾çØãÈíÄEÆѽe
+˜ÓÑU®i-«C+ïY¡à«¿arâšñfNÈ®å*ÕˆEÀz0árOLzÂÐ*³ø©l½ªp‰t
+ÀJ©ÁZë(SºS%L˜çc•aòn«„€‘Ó”R·'™%3êÚIʹ¼SÔL-Òç’ž);cœ‘ïÝ*±¯Y•Å'Ìõ\rîˆRÒïŒ0Ê”RWHÑ9?"ˆ=¨µþ¦NïˍäªMˆ|OK¢ÈD>¨)˜hÔ·äXxÀsìƒ<ÇþŽø
+¯ÇØo³÷<"ÚàöBhˆ\›ì#; RwöÚÛärÿÎÄD{z˜º
+!ÜÀõƒêP]æ·Ô/q0ªŒ?
+™Ë¼2§Ô`¾n ~9!&mfV÷wóÛ.ÀlZóWÅðH
+æ2¬v^\?xˆâIñÕà|׺´t]’V‰q[déZ|½n"”³	ð’TÌÉÇ ·PJ]M²é:ŽÁ˜Z®ýbm8˜˜ƒMåÔãZë×~=¹T©÷)¥ìX[늜U,>Å!J©'”Rûä+*®”Z367ÿ¨`®£&ߝ”R)n0	X†›/)¥6‰õ«Q)u¹2žË1þæz½/¹]g¢ïAâæìqËñ2qÙ´‰­1AI8Ûõƒh•ˆ)b;)f‚/å®&‹6’]Àë]?˜Ar]ÌzIØ+<ÇÞ8G¤¸5jú=àצנ­žcï/½Ôî]?x¬Ï=ÇÞc†½;1”‰w€_¸~ðb™óðo:Fd×+(’£ëúÁ=Ç‘BKyŽ¬à29áÜ”
+Ú‡I±:Î`•âcàäZ¼w5ÂŘàŒpRê"­õ;B—)¥ö¡|#LÞå+J©©²V‘ËÏÜ4¢a³Ð¼(´1À{J©DŒÉïì¢ÏÊC´çJÓ{…>þXÐËWÇPŒ©?kÉ[‚)Û$(>{Ê1O)5M¬L³å;(JH߈¥¤Ò@³+D+³DAZ®”ú<ò©µþ«Œ/TJ‰XGøÊ›J©W„YmˆqÍEýÞgh­ß¬óû2Ž&óù˜bêäÕ(…|ñÅ#f¿Ë2Iϱ÷÷{¢çØc¥ñt´A¯ì,AQézlµ©U0ƒe®üãç›Huù™Ó1áÖƒk)UKÁ€‘À]äß
+ÑЏÀø†kõì•®\%û#öÙƒ/ì¶å0ɘ©ªÞ©·”h6<AÍÜ÷,Ær©Z”¬sý`Zì{\™Oê-aMYÓj°[°u7b’h­ßh€´J­õLL~d–Z˜àžÃ1î’“ÿ‰0ÉeßX`&ýMŒŸú`0Ž0Éw€Ú“Rký€hS_È©õD™8Ø;Â$?vË£™FwyY_æ	˜²xç‰ù³¯X$î~RÅfÉ·
+³Ìš¯³±˱F‚Æ¿SD«ï‹É'ýÊ2Éo€cµÖ×wÁ+s·»=_Dn^uÙsìÃDÃÜ1¦y¾ìâúA›ä’͉LÊž®<%¿L´ÑOA®,ñûPL¥÷,~îúÁÍ«ú“Ò-„q)¢Ee‹C(ÇÌz÷{L¥ÿ
+1ûƒ~-’â‡ÀÔ.x~&x)ëÏZ£ˆ©pŽoUP!(éù›b"j]¯´U$ÚûË™Cy_v”{CŒûcY“©µ.¤ ÏÛ[Ñýª4•Óf‹¬é 9š‹¬éüìš×ûSJíI.Wó9É+åw›“‹oÃlt¼"á¾aˆv¦²&.b®¬å3˜¤óÅ	¿]—\…™IZë1z¦׵Π »IDATNè@î^‹ÀZëE%ö¿ŸX-Æ`üßð¥0ÛÇ€»
+ðȆÃÙ=!	Ã]ãcŸ©;!«içiãDQpÚ´Ö¿-ÒßuÄⳑ<+Ë+ÑZÿ+áþ&Ç|_¡%ëˆà5“Šu[,}&é™ãä›[¨µ¾¶Ê÷lšÐýØ<ߦØV	T³|P½eñ§º~ȵ>Bˆö0Òõƒ7d[žm€i®,÷»Æ-ª¾»ëiMÒ)R¬6Hb”鬬–ë8Œ\¼ÊÓZëÝóÝÛX‚ÉfyKDK<—œOÒ&ŠŸr’ëž0Ô!˜ª÷Q&ùTÊ$S¤H‘"Å*B4Æf|¡kð°	bnȦ3ÀD®¶zŽýf´x>ݘœÆ)R¤H‘¢«µÉ=1Æ`Ìя֕Qº~Ð.Q’wѱÊCO’óþ>Ƹfcè)R¤H‘¢ÞŒ±	3ÓC”º(¯º¢XPS¦<³ƒ1Îì|u—`¢¤Ü”I¦H‘"EŠ.D_L:Ì}˜ Õlñ´Ö·ûqc­z!»#üÙsì»0WC1A@ŸaòŠ^ô“)R¤H‘bU¡e{%ÖäþÿæÒ¬Dtb    IEND®B`‚
\ No newline at end of file

Copied: branches/messer-51/src/www/themes/gforge/viewvc/images/logo.png (from rev 18052, branches/messer-51/src/www/themes/gforge/viewvc/images/viewvc-logo.png)
===================================================================
--- branches/messer-51/src/www/themes/gforge/viewvc/images/logo.png	                        (rev 0)
+++ branches/messer-51/src/www/themes/gforge/viewvc/images/logo.png	2012-04-07 14:10:47 UTC (rev 18260)
@@ -0,0 +1,30 @@
+‰PNG
+
+   
+IHDR   ð   F   ÅéÈ   sRGB ®Îé   PLTE     	
+  !!# "$!#%"%'$')&)+(+,*-/,02/241Ë464Ë796Ì
+Í:;9ÎÎ<>;Ï?@>@A?ÑAB at ACAEFDÍ$Ï%GIFIJHÐ'Ï'!JLJÑ("Ò*#LNKNPMÔ-*PQOQSPRTQÒ4+TVSÓ62VXUÔ73WYVÕ84Y[X×:5[\Z\^[Ó?4]_\ÕB<`b_ØD>bdadecÙFEegdÖJ?ÖKEØLFhjgjliÛOHkmjlnkÜPOnpmoqnÚVPrtqÝYSÝYYtvsvxuÛ^TÛ^ZxzwÜ`[y{x{}zàc^|~{}|~€}~Þhe‚ƒákh„…ƒßpi‡‰†árkâsrŠŒ‰ãutŒŽ‹áyuŽ‘Žã{vå|xå~ây”–“â‚€•—”ß…—™–儂熄㉄›šå‹†ž çˆèŽ‰êŠ¡£ éè“Œ¤¦£ç”’¦¨¥§©¦ë˜–©«¨èœ—Ꝙ¬®«ëž™®°­í ›ì¡¢°²¯é¥£´¶³ì§¦¶¸µî©¨¸º·¹»¸ñ¬«ì®ª»½ºî°¬ï±­½¿¼ñ³¯¿Á¾ð´¶ÁÿﷱÂÄÁÃÅÂðººÅÇÄÆÈÅò½¼ÈÊÇïÀ½ÊÌÉñ¿íÅÀÌÎËôÅÂÎÐÌöÆÄÏÑÎÐÒÏòÊÅÑÓÐÒÔÑòÌÍÓÕÒÔÖÓôÎÏÕ×ÔÖØÕöÐÑØÚÖÙÛ×ÚÜÙôÕÔÛÝÚÜÞÛö×ÖÝßÜÞàÝøÚØßáÞàâßûÜÚáäà÷ßÜãåáäæãùáÞåçäæèåûãàçéæèêçüåáéëèûæéêìéëîêøëëíïëîðíúííïñîðòïñóðþðñòôñóõòô÷óûõôöøô÷ùöýøöøú÷ÿùøùûøÿúùúüùûýúÿüúÿýûüÿûþÿüöJk~  dIDATxÚå[{lGO)JGDébéªÑKUšãÝ+핦
+WBKôʉ áQàx„])WÊ£ô´@K胃+p=h¡ü	¶ÉžU³Š–µÌ»ëÍÚ¬³Y­ÿØ›™Ý™Ýu‡Ó©q¿?â™ofgö7óÍ÷šMþ£‚mçÖL© Ê«4ý2 ¬tZ™ÿ€»'»t$Ï_ueSc^¾n€¤l]oæ1ànsW+6ž¹qñãj³v&/56v³Y½bîqw¾¾aà;oqÊÑ
+¬ÌWÀ[ÑŽî„Åï–lïD2N‘-¾Ø8kÚË«ßÌ#Àï!tÛAé#7( £Ldú*Vd¿ÿ{~‰4Eaåõȃ^È\0‰:—/J«	áù—®À: ï“%—áÏF‡qސWf©
+#7#ú6ËYÙ¯_»ðýñs×a©žâr€Ü0HnÓw½k(¯ºÕÓÊ
+Àî¦~ø‡å榽-/:¢ ð£Éto?wùû
+f¹íµiœoöOÀק`iåk°©žíž&Á8U6÷KÀMösyM×;`gò7»?nt Œ°0ÌèÑYé¶7¿YoÖ] ?Ÿ"Æ·ýðv¦¼²ªj2ä5ÜçCl{Ý®	? f Ü_€_$ã÷1CFSi™Û°ûº—ý³“h/¢Ñª*+ª¦m4/e
+”¾å̲B“¦*jæö \ƒàUZ±Ð—u„{ ’ýþ˜s| ~VJk·`d‚ð…´ÎØñºÞ1Î4ô»&ÀuY“sƒÕ×1àg¢Òí°Åú[<›×Î_:²µÂ¦»z&´ýÕ䨒°²~šK¤oÀ0¡AÅ=–)œ^£ý=hƒ¯àXʝ3¢¥	à'ávé#üÙŒ÷ëëÞŸ˜‚½½’Â¥Þ5tú›UË××ϯ_¼ƒµÎd2$ðûs!ëeŠGû7lÕ9B4^kPï·ÀÈØð`ËC8ªšÃA«×Ûê£9QɘË@ïm˜Sû\íÜ7ö3Ä^ᇴŒ½ž=$€GÿÉ|øY0E`oÃÜϽ2¯aoÀaôaE¹>Åj
+’›¢ÆåL^UÁ^Ë¡£®qð@LÇT´…©û1cj(-- ¨ôÞ œi›=¨Ð¢æù€½Êè‘Aæ3e†ùÊŒ@µF-‡¼OPǐù6H2ÎãYÏôRÛ¥S¿QT ž÷i	,o¦†
++_ýc¢‚2ô59,üUQkÉȯ$0nfa<"Šä?ÃK p&4¾0‹ŠžçÀû¨e¸Þ&ƒ·ÎxŒJIÕŽáÆábòmòäCÀÒÆ aÜ“øÏž¢ðaö
+ô:*§Nþ	½‰Ïðq3+i¥™;(,OF}–0vóñ…DK‡EEÓÜQøSpRVäù¸¶	¼uFÅÕ" ¥kþ:/pdˆ¢v0dF}ƒ´ˆÓêߊ{˜¢xKÊ@\`Fk.vuÝZöêÿ
+¥:t5%‹£È°Ç°ÂòD\iŽ¯Ç•§XÐøeQaOTrB’ŽâÊóIQ•ÌÚx^RU…Lq”Æf“çÖÇRª¦<DPy8!µ¥ç)Š¶%â’u‡Îä-A6bÿëfM–ÅÝdÔ9ð]êŸÛYžlÜL,´íoiYÙ]–,†„®••Q<d-‚`$¼iƒül4ÞB ŠPåHõ© ?U\Ø3{â¬m
+ý\}€W];š’NòâA‡°	9ýyWÍE-À!^$Â^4ý°§¹¥e9¸3#á'ð›µÇ’29	…[ø¤ü5®<çgã‰èX‚ŽËéM¤ëþv.>¶©ƒG±Á¬Üíˆñ/÷ØôOVv¾”,X‡èlLJ$²écxˆôÄ`„&{±Þãõù5Á¯îçȋÉÁdÈ1\"IŽð6:,J‚%CïóRj4®Œh†¿± >}ÔÓÜ|ÒÒ‘Å!h&
+LícÑÎ>_ .5©¼üߊ*!BN)‹8A´ Óáõ¸<ÊÓê2,¢	ÊÖ‡—c1'4ÛD‘Ž-q‡7MÊ?ÔòWŽlâ&?Cž«…kðû!œ‚¬	€óåå¿#ìW,½y—v'Ôõ­ŸA™µ¦|´-%`n*.}vjíô—fÌx©öiÌz<ÄÇE&ºØvø6…y¼ £ýÀ]Sean»+ÄoÃåû¼t8N؝gÛÚ–c™£ãÇŽ3fÌØñwgÏZv¯tåŽ-ºBÙÝnElÆ›SÔÊ‘½ËÏ&RÉ…`vTaï4ˆf0ÊÒ 7ÄÖ2†9Œ‹kœL¶Ä¿b‡~áB°ÁñiF{ÛÙ˜(Š1.𵵶¶ùh6.«Î¼t§±sKoAsUÛ6yCÊR#ëNàRYk—Ò);à_ç \ÜΐGOŸ2õœy¼qˆYt:æT“ãDnji¬øKÎÒœ¸›„ß~`€yK%x6¤é`ˆ “ž•ˆGáÔ°[1NÝïX{¬ˆD<N´rƒšKÝNlgFæ \èa˜û±
+ÙkTßÆ’1܇"®Œ*úñÁ½w›ME‚@t2à•hª,Æù0Çqᨐ4•¢Žƒ:Ñ_nÉéîêºh˜´ãI¢FJ°0ÞÝLC£ì üÛ\€O³vRk
+kõÚYÃûð|?h`KU9FÜ›ŠS"ÑîCÁô°¯&Þ]bÒtèlØb ãº~ó½@A‚½"m©bX}82NÀ¯_òôYOK‹×ëmiiö òú‚\;á÷?ZfXðc‡h>©"S(žÌžªÈdZ²¬Ðça8£ÓP¸Ì&ÒÛÿPSS3–ƒßš} ¼¸âÕY³f¡”ÞfØ¿¨‘YGòd{èÍØŠ*v·´ù=uêÔÉ“'Oö°|œ-±QæõrŒy?\Cõ¨©èÃY€¡ŠL+IË%¸×|rU=l¹â`‹
+À7I^¹Qãr€ÕtËÐõK9P#óOô…bH¿,²)-†¬Ê=û!`‡™Md÷†G16Æ>Ä|ÐΨõ³fHI'v;çTdmá+®Ýñù¶',Ïz`
+¹xƒËëz]_€_t[úùGh’¡š³«ÓË xߘ¯µÜ¾á3W­šYf=ð~TL&ÖÙ‡8`Ø9ŽM4%Ì
+ÚüYD« …Ö´´0£W%±ŒÀè­ÑJXåHxTØ}Ž. Ò(ÅëP#†—‚$0ß»%~„‰Š)Éo‹tÊÚBaþ„­Ë­¡˜¬á\™°Öþ8R‘04•Bô2C’ã_B‰x˜õ¸ŒJ{úr£
+—>PC!ÙÎV#ëá‰/gÇ£þ²^Þ¦…‰£j±æÂ8Á¾ãÁ˜
+Ná¨S’­"5¨¿ã§õìØ|dÀ ÜDòrÕîœß'á;—Š­G.¿F¾øؐ­FîñÒŒ9 ób‚÷?ÙÓÛ<å]JM‹ólMG@œ0×b¬k[™mÍæÏ"i,°‘–žÄhä1_ˆ—°YB>å$²Áõ†§è;³bãËÙjd‘ßLQjéEVx•Rb8´kDvh>j—×ÞFQÕ¤%&e`ÏR²d1Š›á)±Þ–?ÆN‡¬²žà‚›²åhðÚ_0­’x	|ëi ðÏèU Ñþo¹¹p‚¨‘hÃë‹êçª_ä	šê%£ 4í|#M/1ÂÏ{¸Ô|Ù;O\uÂë0Ðí:]h@½ç×/ܳœ@B׌ùõë–DëÈùØ‚ç[xD¦þVåD8äÿröˆ_™Ë9`äì}Í­þP8–Þ â¤’ M0FÜ8­ªâ±Ék¬Ý4:¹†-[ê¶}¢)`÷@4ÉäFˆÏ@®?Š  @j£,ðæ[[Žîß¿ÿÐÙæo›¿=ÄÅÄ4òÌÞ ?
+e\Sl&š´ÝÕ€-ÆM dŸnYäÙ ß×Ú|Lbbo+x!–e3Åèc$}¯DQ84‰ÜùW6YõÉUU•åX{5á%yŽAÄFfÊÌâ˜1£)ÉD”c‚t ùv:Är at A+(᪁õ0Æ`Ãñ$ì,bp1IÑ—¸	t¬µÈ¨`
+Þ6d8øÑ8‰è;ôâŸÂؾ®né˶p×íª´«èÏr“֐‰Ò’(ñ¸ ˆ’¬u*C® $Lè–…húóÐ¥çc	 ×ì“pЮÅˆFҁ×ÖDÆÆKZðáHT“iœ˜¶ì°u½ÒY‘õ•õð5ól›¾²ß|+iDŠ-ÕŸQ
+.g|£ [NJ"$IJÉ°%“=în1”ì+uØäììx“ž"™²¿x…ëiøqåü†–.À×m·P”«æz×9Y·9ˆëàºJHë¡·fcö<hŸM¶)4ûJ˜‘¿áL`™àiž¹|~'ÆÖ‰ÿ@´—˵üêÿwÙ•ù™¯O{šÂŒ–>£Ê!
+«¬^þ**QïšÞÇ9Ð20@µ6 /:.¿p©CãáYßbYƶÅäýüaV—Þ¯‰d<682‘è«ÑËˑŹê2ï?³[¡~XÿO•…·˃¼Ì·ðÇÒÆ’ÜÈÀºþÕ,ÒPM«…b)ùÖ¼¼Åã+—ü©ñ¢ŽSȱêü`º-|±¶ç`­¤²¾æ1.JóH¤³Ó°¦Þ¾Bb¸ÔR=_›_ä¹\ÕŸ^ºqæ3¹ãîÎ_Àæ×
+ÎÿÈëßÝ`çwÅYÿþ—€õ#N¸“ûÿãôÕa…Í9¨ëùX×›T•S•SÏéú/p~Ñ•Šhtg’]•    IEND®B`‚
\ No newline at end of file

Modified: branches/messer-51/src/www/themes/gforge/viewvc/styles.css
===================================================================
--- branches/messer-51/src/www/themes/gforge/viewvc/styles.css	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/themes/gforge/viewvc/styles.css	2012-04-07 14:10:47 UTC (rev 18260)
@@ -3,35 +3,35 @@
 /*******************************/
 
 /*** Standard Tags ***/
-html, body {
+#scm {
   color: #000000;
   background-color: #ffffff;
 }
 
-a:link    { color: #0000ff; }
-a:visited { color: #880088; }
-a:active  { color: #0000ff; }
+#scm a:link    { color: #0000ff; }
+#scm a:visited { color: #880088; }
+#scm a:active  { color: #0000ff; }
 
-img { border: none; }
-table {
+#scm img { border: none; }
+#scm table {
   width: 100%;
   margin: 0; 
   border: none;
 }
-table.auto {
+#scm table.auto {
   width: auto;
 }
-table.fixed {
+#scm table.fixed {
   width: 100%;
   table-layout: fixed;
 }
-table.fixed td {
+#scm table.fixed td {
   overflow: hidden;
   text-overflow: ellipsis;
   white-space: nowrap;
 }
-tr, td, th { vertical-align: top; }
-form { margin: 0; }
+#scm tr, #scm td, #scm th { vertical-align: top; }
+#scm form { margin: 0; }
 
 /*** Icons ***/
 .vc_icon {

Modified: branches/messer-51/src/www/top/toplist.php
===================================================================
--- branches/messer-51/src/www/top/toplist.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/top/toplist.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -61,7 +61,7 @@
 $display_rank = 0;
 $i=0;
 while ($row_top = db_fetch_array($res_top)) {
-	if (!forge_check_perm ('project_read', $row_top['group_id'])) {
+	if (!forge_check_perm ('project_read', $row_top['group_id']) && forge_check_perm('frs', $row_new['group_id'], 'read_public') ) {
 		continue ;
 	}
 	$i++;

Modified: branches/messer-51/src/www/tracker/admin/form-addextrafield.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-addextrafield.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-addextrafield.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -134,7 +134,7 @@
 		<!--<input type="radio" name="field_type" value="8" /> <?php echo _('Box type technician'); ?><br />-->
 		<input type="radio" name="field_type" value="9" /> <?php echo _('Relation between artifacts'); ?><br />
 		</p><p>
-		<?php echo _('Text Fields and Text Areas need to have Size/Maxlength and Rows/Cols defined, respectively.'); ?><br />
+		<?php echo _('Text Fields, Text Areas and Relations between artifacts need to have Size/Maxlength and Rows/Cols defined, respectively.'); ?><br />
 		<?php echo _('Text Field Size/Text Area Rows'); ?>
 			<input type="text" name="attribute1" value="20" size="2" maxlength="2" /><br />
 		<?php echo _('Text Field Maxlength/Text Area Columns'); ?>

Modified: branches/messer-51/src/www/tracker/admin/form-addextrafieldoption.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-addextrafieldoption.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-addextrafieldoption.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -48,7 +48,7 @@
 			$title_arr[]=_('Elements Defined');
 			$title_arr[]='';
 			
-			echo $GLOBALS['HTML']->listTableTop ($title_arr,false, ' ');
+			echo $GLOBALS['HTML']->listTableTop($title_arr);
 
 			for ($i=0; $i < $rows; $i++) {
 				echo '<tr '. $GLOBALS['HTML']->boxGetAltRowStyle($i) .'>'.

Modified: branches/messer-51/src/www/tracker/admin/form-clonetracker.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-clonetracker.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-clonetracker.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,9 +1,10 @@
 <?php
-/**
- * FusionForge Tracker Cloning Form
+/*-
+ * FusionForge form for applying a template tracker ("cloning")
  *
- * Copyright 2010, FusionForge Team
- * http://fusionforge.org
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * All rights reserved.
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -21,46 +22,71 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-$g = group_get_object(forge_get_config('template_group'));
-if (!$g || !is_object($g)) {
-	exit_no_group();
-} elseif ($g->isError()) {
-	exit_error($g->getErrorMessage(),'tracker');
-} else {
-	$atf = new ArtifactTypeFactory($g);
-	if (!$atf || !is_object($atf)) {
-		exit_error(_('Unable to Create Template Group Object'),'tracker');
-	} elseif ($atf->isError()) {
-		exit_error($atf->getErrorMessage(),'tracker');
-	} else {
-		$ata = $atf->getArtifactTypes();
-		$ids = array();
-		$titles = array();
-		for ($i=0; $i<count($ata); $i++) {
-			if (!$ata[$i] || $ata[$i]->isError()) {
-//skip it
-			} else {
-				$ids[]=$ata[$i]->getID();
-				$titles[]=$g->getPublicName().'::'.$ata[$i]->getName();
-			}
-		}
+$tlist = group_get_template_projects();
+sortProjectList($tlist, 'id', true);
 
-		$ath->adminHeader(array ('title'=>_('Clone Tracker')));
+$ids = array();
+$names = array();
+$has_error = false;
 
-		if (empty($ata)) {
-			echo '<div class="warning_msg">'._('The site administrator must first set up template trackers in the template projet with default values and set permissions propertly so you can access them.').'</div>';
-		} else {
-		?>
-		<p><?php echo _('Choose the template tracker to clone.') ?></p>
-		<form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&atid='.$ath->getID(); ?>" method="post">
-		<input type="hidden" name="clone_tracker" value="y" />
-		<div class="warning" ><?php echo _('WARNING!!! Cloning this tracker will duplicate all the fields and all the elements from those fields into this tracker. There is nothing to prevent you from cloning multiple times or making a huge mess. You have been warned!') ?></div>
-		<p><?php echo html_build_select_box_from_arrays($ids,$titles,'clone_id','',false); ?></p>
-		<input type="submit" name="post_changes" value="<?php echo _('Submit') ?>" />
-		</form>
-<?php
+foreach ($tlist as $tp) {
+	if (!$tp || !is_object($tp) || $tp->isError()) {
+		/* skip it */
+		$has_error = true;
+		continue;
+	}
+	$atf = new ArtifactTypeFactory($tp);
+	if (!$atf || !is_object($atf) || $atf->isError()) {
+		$has_error = true;
+		continue;
+	}
+	$ats = $atf->getArtifactTypes();
+	$ata = array();
+	foreach ($ats as $at) {
+		if (!$at || !is_object($at) || $at->isError()) {
+			$has_error = true;
+			continue;
 		}
-		$ath->footer(array());
+		$ata[$at->getID()] = $at;
 	}
+	uasort($ata, create_function('$a, $b', '
+		$av = $a->getName();
+		$bv = $b->getName();
+
+		return strcoll($av, $bv);
+	    '));
+	foreach ($ata as $aid => $at) {
+		$ids[] = $aid;
+		$names[] = sprintf('%s::%s (%d::%d)',
+		    $tp->getPublicName(), $at->getName(),
+		    $tp->getID(), $aid);
+	}
 }
-?>
+
+if (!$ids) {
+	exit_error($has_error ? _('Error looking up template projects') :
+	    _('No template project found'), 'tracker');
+}
+
+if ($has_error) {
+	$warning_msg = _('Some errors occured during template project lookup');
+}
+
+$ath->adminHeader(array('title' => _('Apply Template Tracker')));
+
+echo "<p>" . _('Choose the template tracker to clone.') . "</p>\n";
+
+echo '<form action="' . getStringFromServer('PHP_SELF') .
+    '?group_id=' . $group_id . '&atid=' . $ath->getID() .
+    '" method="post">
+	<input type="hidden" name="clone_tracker" value="y" />
+	<div class="warning">' .
+    _('WARNING!!! Cloning this tracker will duplicate all the fields and all the elements from those fields into this tracker. There is nothing to prevent you from cloning multiple times or making a huge mess. You have been warned!') .
+    '</div>
+	<p>' . html_build_select_box_from_arrays($ids, $names,
+    'clone_id', '', false) . '</p>
+	<input type="submit" name="post_changes" value="' .
+    _('Submit') . '" />
+</form>';
+
+$ath->footer(array());

Modified: branches/messer-51/src/www/tracker/admin/form-extrafieldcopy.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-extrafieldcopy.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-extrafieldcopy.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -43,7 +43,6 @@
 			artifact_extra_field_list aefl
 			WHERE g.group_id=ANY($1)
 			AND g.group_id=agl.group_id 
-			AND agl.group_artifact_id=ap.group_artifact_id
 			AND aefl.group_artifact_id=agl.group_artifact_id
 			AND aefl.extra_field_id != $2
 			AND aefl.field_type IN (1,2,3,5,7)',
@@ -89,6 +88,7 @@
 		echo '</strong></center></td>';
 		echo '<td valign="top">';
 
+		$selectid = getStringFromRequest('selectid'); //XXX why was this unset here?
 		echo html_build_select_box_from_arrays($id_arr,$name_arr,'selectid',$selectid,false);
 		echo '</td></tr>';
 		echo '<tr><td>';

Modified: branches/messer-51/src/www/tracker/admin/form-updateextrafield.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-updateextrafield.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-updateextrafield.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -45,7 +45,7 @@
 	<input type="hidden" name="update_box" value="y" />
 	<input type="hidden" name="id" value="<?php echo $ac->getID(); ?>" />
 	<p>
-		<strong><?php echo _('Custom Field Name') ?>:</strong><br />
+		<strong><?php echo _('Custom Field name (human-readable)') ?>:</strong><br />
 		<input type="text" name="name" value="<?php echo $ac->getName(); ?>" />
 	</p>
 	<p>
@@ -69,7 +69,7 @@
 		<?php } ?>
 	</p>
 	<p>
-		<strong><?php echo _('Field alias') ?>:</strong><br />
+		<strong><?php echo _('Field alias (internal name)') ?>:</strong><br />
 		<input type="text" name="alias" value="<?php echo $ac->getAlias(); ?>" />
 	</p>
 	<p><input type="checkbox" name="is_required" <?php if ($ac->isRequired()) echo "checked=\"checked\""; ?> /><?php echo _('Field is mandatory')?></p>

Modified: branches/messer-51/src/www/tracker/admin/form-updatetracker.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-updatetracker.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-updatetracker.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -23,6 +23,7 @@
 
 $name = getStringFromRequest('name', $ath->getName());
 $description = getStringFromRequest('description', $ath->getDescription());
+$allow_anon = getStringFromRequest('allow_anon', $ath->allowsAnon());
 $email_address = getStringFromRequest('email_address', $ath->getEmailAddress());
 $email_all = getStringFromRequest('email_all', $ath->emailAll());
 $due_period = getStringFromRequest('due_period', $ath->getDuePeriod() / 86400);
@@ -60,6 +61,8 @@
 		?>
 		</p>
 		<p>
+		<input type="checkbox" name="allow_anon" value="1" <?php echo (($allow_anon)?'checked="checked"':''); ?> /> <strong><?php echo _('Allow non-logged-in postings') ?></strong></p>
+		<p>
 		<strong><?php echo _('Send email on new submission to address') ?>:</strong><br />
 		<input type="text" name="email_address" value="<?php echo $email_address; ?>" /></p>
 		<p>
@@ -67,7 +70,7 @@
 		<p>
 		<strong><?php echo _('Days till considered overdue') ?>:</strong><br />
 		<input type="text" name="due_period" value="<?php echo $due_period; ?>" /></p>
-		<p> 
+		<p style="display:none;">
 		<strong><?php echo _('Days till pending tracker items time out') ?>:</strong><br />
 		<input type="text" name="status_timeout"  value="<?php echo $status_timeout; ?>" /></p>
 		<p>

Modified: branches/messer-51/src/www/tracker/admin/form-workflow.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/form-workflow.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/form-workflow.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -1,9 +1,11 @@
 <?php
-/**
- * Update Artifact Type Form
+/*-
+ * FusionForge tracker form to define a workflow
  *
  * Copyright 2010, FusionForge Team
- * http://fusionforge.org
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
+ * All rights reserved.
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -21,108 +23,139 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-require_once('common/tracker/ArtifactWorkflow.class.php');
+require_once $gfcommon.'include/EvolvisTable.class.php';
+require_once $gfcommon.'tracker/ArtifactWorkflow.class.php';
 
 $has_error = false;
 $efarr = $ath->getExtraFields(array(ARTIFACT_EXTRAFIELDTYPE_STATUS));
 if (count($efarr) === 0) {
 	$has_error = true;
-   	$error_msg .= _('To create a workflow, you need first to create a custom field of type \'Status\'.');
+	$error_msg .= _('To create a workflow, you need first to create a custom field of type \'Status\'.');
 } elseif (count($efarr) !== 1) {
-	// Internal error.
 	$has_error = true;
-	$error_msg .= _('Internal error: Illegal number of status fields (WKFL01).');
+	$error_msg .= _('Internal error: Illegal number of status fields (only one allowed).');
 }
 
-$ath->adminHeader(array ('title'=> _('Configure workflow'),'pagename'=>'tracker_admin_customize_liste','titlevals'=>array($ath->getName())));
+$ath->adminHeader(array(
+	'title' => _('Configure workflow'),
+	'pagename' => 'tracker_admin_customize_liste',
+	'titlevals' => array($ath->getName()),
+    ));
 
-/*
-	List of possible user built Selection Boxes for an ArtifactType
-*/
-if (!$has_error) {
-    		
-  	$keys=array_keys($efarr);
-   	$field_id = $keys[0];
-   	$field_name = $efarr[$field_id]['field_name'];
+if ($has_error) {
+	echo html_e('p', array(),
+	    util_html_encode(_('Cannot continue due to an error.')));
+	$ath->footer(array());
+	exit(0);
+}
 
-   	$atw = new ArtifactWorkflow($ath, $field_id);
+$keys = array_keys($efarr);
+$field_id = $keys[0];
+$field_name = $efarr[$field_id]['field_name'];
 
-	$elearray = $ath->getExtraFieldElements($field_id);
-	$states = $elearray;
+$atw = new ArtifactWorkflow($ath, $field_id);
 
-?>
-	    	
-   	<h2><?php printf(_('Allowed initial values for the %1$s field'), $field_name) ?></h2>
-	<form action="<?php echo getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&atid='.$ath->getID(); ?>" method="post">
-	<input type="hidden" name="field_id" value="<?php echo $field_id ?>" />
-	<input type="hidden" name="workflow" value="1" />
-   	
-<?php 
-	$from = _('From').' ';
-	$to = _('To').' ';
-	$init = _('Initial values').' ';
+$elearray = $ath->getExtraFieldElements($field_id);
+$states = $elearray;
 
-	$title_arr=array();
-	$title_arr[]=_('From Value');
-	foreach ($elearray as $status) {
-		$title_arr[]=$status['element_name'];		
-	}
-	echo $GLOBALS['HTML']->listTableTop($title_arr, false, ' ');
-	echo "\n";
+echo html_e('h2', array(),
+    util_html_encode(sprintf(_('Allowed initial values for the %1$s field'),
+    $field_name))) . html_eo('form', array(
+	'action' => util_gethref(false, array(
+		'group_id' => $group_id,
+		'atid' => $ath->getID(),
+	    ), false),
+	'method' => 'post',
+    )) . html_e('input', array(
+	'type' => 'hidden',
+	'name' => 'field_id',
+	'value' => $field_id,
+    )) . html_e('input', array(
+	'type' => 'hidden',
+	'name' => 'workflow',
+	'value' => 1,
+    ));
 
-	// Special treatement for the initial value (in the Submit form).
-	echo '<tr id="initval"><th style="text-align:left">'.$init.'</th>'."\n";
-	$next = $atw->getNextNodes('100');
+/* cache gettext lookups */
+$from = _('From').' ';
+$to = _('To').' ';
+
+$titles = array('');
+foreach ($elearray as $status) {
+	$titles[] = $status['element_name'];
+}
+$e = new EvolvisTable($titles);
+
+$r = $e->tr(array(
+	'id' => 'initval',
+	'style' => 'text-align:left;',
+    ));
+$r->th()->set(_('Initial values'));
+$next = $atw->getNextNodes('100');
+foreach ($states as $s) {
+	$r->td()->setraw(html_e('input', array(
+		'type' => 'checkbox',
+		'name' => 'wk[100][' . $s['element_id'] . ']',
+		'checked' => (in_array($s['element_id'], $next) ? 'checked' :
+		    false),
+	    )) . ' ' . html_image('spacer.gif', 20, 20));
+}
+
+echo $e->emit() . html_e('h2', array(),
+    util_html_encode(sprintf(_('Allowed transitions for the %1$s field'),
+    $field_name)));
+
+$count = count($titles);
+for ($i = 1; $i < $count; ++$i) {
+	$titles[$i] = $to . $titles[$i];
+}
+$e = new EvolvisTable($titles);
+
+$i = 1;
+foreach ($elearray as $status) {
+	$r = $e->tr(array(
+		'id' => ('configuring-' . $i++),
+		'style' => 'text-align:left;',
+	    ));
+	$r->th()->set($from . $status['element_name']);
+	$next = $atw->getNextNodes($status['element_id']);
 	foreach ($states as $s) {
-		$name = 'wk[100]['. $s['element_id'].']';
-		$value = in_array($s['element_id'], $next)? ' checked="checked"' : '';
-		$str = '<input type="checkbox" name="'.$name.'"'.$value.' />';
-				$str .= ' '.html_image('spacer.gif', 20, 20);
-		echo '<td align="center">'.$str.'</td>'."\n";
+		$r->td()->setraw($status['element_id'] === $s['element_id'] ?
+		    html_e('input', array(
+			'type' => 'checkbox',
+			'checked' => 'checked',
+			'disabled' => 'disabled',
+		    )) : (html_e('input', array(
+				'type' => 'checkbox',
+				'name' => 'wk[' . $status['element_id'] .
+				    '][' . $s['element_id'] . ']',
+				'checked' => (in_array($s['element_id'], $next) ?
+				    'checked' : false),
+			    )) . ' ' . (in_array($s['element_id'], $next) ?
+			    html_e('a', array(
+				'href' => util_gethref(false, array(
+					'group_id' => $group_id,
+					'atid' => $ath->getID(),
+					'workflow_roles' => 1,
+					'from' => $status['element_id'],
+					'next' => $s['element_id'],
+				    ), false),
+				'title' => _('Edit roles'),
+			    ), html_image('ic/acl_roles20.png', 20, 20, array(
+				'alt' => _('Edit roles'),
+			    ))) : html_image('spacer.gif', 20, 20))));
 	}
-	echo '</tr>'."\n";
-	echo $GLOBALS['HTML']->listTableBottom();
+}
 
-	$count=count($title_arr);
-	$totitle_arr = array();
-	for ($i=0; $i<$count; $i++) {
-		$totitle_arr[] = $title_arr[$i]? $to.$title_arr[$i] : '';
-	}
-	echo $GLOBALS['HTML']->listTableTop($totitle_arr, false, ' ');
-	
-	$i=1;
-	foreach ($elearray as $status) {
-		echo '<tr id="configuring-'.$i++.'"><th style="text-align:left">'.$from.$status['element_name'].'</th>'."\n";
-		$next = $atw->getNextNodes($status['element_id']);
-		foreach ($states as $s) {
-			if ($status['element_id'] !== $s['element_id']) {
-				$name = 'wk['.$status['element_id'].']['. $s['element_id'].']';
-				$value = in_array($s['element_id'], $next)? ' checked="checked"' : '';
-				$str = '<input type="checkbox" name="'.$name.'"'.$value.' />';
-				if ($value) {
-					$url = getStringFromServer('PHP_SELF').'?group_id='.$group_id.'&atid='.$ath->getID().'&workflow_roles=1&from='.$status['element_id'].'&next='.$s['element_id'];
-					$str .= ' <a href="'.$url.'" title="Edit roles">'.html_image('ic/acl_roles20.png', 20, 20, array('alt'=>'Edit Roles')).'</a>';
-				} else {
-							$str .= ' '.html_image('spacer.gif', 20, 20);
-				}
-			} else {
-				$str = '<input type="checkbox" checked="checked" disabled="disabled" />';
-						$str .= ' '.html_image('spacer.gif', 20, 20);
-			}
-			echo '<td align="center">'.$str.'</td>'."\n";
-		}
-		echo '</tr>'."\n";
-	}
-	echo $GLOBALS['HTML']->listTableBottom();
+echo $e->emit() . html_e('div', array(
+	'class' => 'tips',
+    ), sprintf(_('Tip: Click on %s to configure allowed roles for a transition (all by default).'),
+    html_image('ic/acl_roles20.png', 20, 20, array(
+	'alt' => _('Edit roles'),
+    )))) . html_e('p', array(), html_e('input', array(
+	'type' => 'submit',
+	'name' => 'post_changes',
+	'value' => _('Submit'),
+    ))) . '</form>';
 
-?>
-<div class="tips">Tip: Click on <?php echo html_image('ic/acl_roles20.png', 20, 20, array('alt'=> _('Edit Roles'))) ?> to configure allowed roles for a transition (all by default).</div>	
-<p>
-<input type="submit" name="post_changes" value="<?php echo _('Submit') ?>" /></p>
-</form>
-<?php
-}
-
 $ath->footer(array());
-
-?>

Modified: branches/messer-51/src/www/tracker/admin/ind.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/ind.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/ind.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -152,7 +152,7 @@
 	<p>
 	<strong><?php echo _('Days till considered overdue') ?>:</strong><br />
 	<input type="text" name="due_period" value="30" /></p>
-	<p>
+	<p style="display:none;">
 	<strong><?php echo _('Days till pending tracker items time out') ?>:</strong><br />
 	<input type="text" name="status_timeout" value="14" /></p>
 	<p>

Modified: branches/messer-51/src/www/tracker/admin/updates.php
===================================================================
--- branches/messer-51/src/www/tracker/admin/updates.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/admin/updates.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -274,7 +274,13 @@
 			if (!$clone_id) {
 				exit_missing_param('',array(_('Clone ID')),'tracker');
 			}
-			if (!$ath->cloneFieldsFrom($clone_id)) {
+			$clone_gid = artifacttype_get_groupid($clone_id);
+			$clone_group = $clone_gid ? group_get_object($clone_gid) : false;
+			if (!$clone_group || !is_object($clone_group) ||
+			    $clone_group->isError()) {
+				exit_error(_('Error looking up template project'), 'tracker');
+			}
+			if (!$ath->cloneFieldsFrom($clone_group, $clone_id)) {
 				exit_error(_('Error cloning fields: ').$ath->getErrorMessage(),'tracker');
 			} else {
 				$feedback .= _('Successfully Cloned Tracker Fields ');
@@ -287,6 +293,7 @@
 		} elseif (getStringFromRequest('update_type')) {
 			$name = getStringFromRequest('name');
 			$description = getStringFromRequest('description');
+			$allow_anon = getStringFromRequest('allow_anon');
 			$email_all = getStringFromRequest('email_all');
 			$email_address = getStringFromRequest('email_address');
 			$due_period = getStringFromRequest('due_period');
@@ -296,7 +303,7 @@
 			$browse_instructions = getStringFromRequest('browse_instructions');
 
 			if (!$ath->update($name,$description,$email_all,$email_address,
-				$due_period,$status_timeout,$use_resolution,$submit_instructions,$browse_instructions)) {
+				$due_period,$status_timeout,$use_resolution,$submit_instructions,$browse_instructions,$allow_anon)) {
 				$error_msg .= _('Error updating').' : '.$ath->getErrorMessage();
 				$ath->clearError();
 			} else {
@@ -352,7 +359,7 @@
 					echo ('Invalid filename :'.$input_file['tmp_name']);
 					exit;
 				}
-				$input_data = addslashes(fread(fopen($input_file['tmp_name'], 'r'), $size));
+				$input_data = fread(fopen($input_file['tmp_name'], 'r'), $size);
 
 				db_query_params ('UPDATE artifact_group_list SET custom_renderer=$1 WHERE group_artifact_id=$2',
 					 	array ($input_data,
@@ -418,7 +425,7 @@
 			} elseif ($ac->isError()) {
 				$error_msg .= $ac->getErrorMessage();
 			} else {
-				if (!$ac->alphaorderValues($id)) {
+				if (!$ac->alphaorderValues()) {
 					$error_msg .= _('Error updating a custom field').' : '.$ac->getErrorMessage();
 					$ac->clearError();
 				} else {

Modified: branches/messer-51/src/www/tracker/browse.php
===================================================================
--- branches/messer-51/src/www/tracker/browse.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/browse.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -5,6 +5,8 @@
  * Copyright 1999-2001 (c) VA Linux Systems
  * Copyright 2010 Roland Mas
  * Copyright (C) 2011 Alain Peyrat - Alcatel-Lucent
+ * Copyright © 2012
+ *	Thorsten Glaser <t.glaser at tarent.de>
  *
  * This file is part of FusionForge. FusionForge is free software;
  * you can redistribute it and/or modify it under the terms of the
@@ -22,6 +24,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
+require_once $gfcommon.'include/datepick.php';
 require_once $gfcommon.'tracker/ArtifactFactory.class.php';
 require_once $gfcommon.'tracker/ArtifactQuery.class.php';
 require_once $gfcommon.'advanced_search/FusionForgeDFIProvider.class.php';
@@ -37,6 +40,7 @@
 	/* we want them on the top, all of them */
 	'gravity' => 's',
     ));
+use_javascript('/js/sortable.js');
 
 //
 //  make sure this person has permission to view artifacts
@@ -105,6 +109,7 @@
 $_adv_sort_ord = getStringFromRequest('_sort_ord',$_sort_ord);
 $set = getStringFromRequest('set');
 $_assigned_to = getIntFromRequest('_assigned_to');
+$_submitted_by = getIntFromRequest('_submitted_by');
 $_status = getIntFromRequest('_status');
 $_extra_fields = array() ;
 $aux_extra_fields = array() ;
@@ -133,7 +138,7 @@
 	}
 }
 
-$af->setup(0,$_sort_col,$_sort_ord,0,$set,$_assigned_to,$_status,$aux_extra_fields);
+$af->setup(0,$_sort_col,$_sort_ord,0,$set,$_assigned_to,$_status,$aux_extra_fields, $_submitted_by);
 //
 //	These vals are sanitized and/or retrieved from ArtifactFactory stored settings
 //
@@ -142,6 +147,7 @@
 $_status=$af->status;
 $_assigned_to=$af->assigned_to;
 $_extra_fields=$af->extra_fields;
+$_submitted_by=$af->submitted_by;
 
 $art_arr = $af->getArtifacts();
 
@@ -471,6 +477,7 @@
 	}
 	echo html_ac($sptr);
 
+if (session_loggedin()) {
 	//Get all global queries. This includes System and Tracker queries. //global? --mirabilos
 	$sql = "SELECT aq.id, aq.name FROM AdvancedQuery as aq, user_has_query as uhq
 			WHERE (uhq.user_id = $1 AND aq.id = uhq.query_id AND uhq.group_artifact_id = $2)";
@@ -487,6 +494,7 @@
 		    ), util_html_secure($arr['name']));
 	}
 	echo html_ac($sptr);
+}
 ?>
 </select>
 <input type="hidden" name="load_request" id="load_request" value="1" />
@@ -650,6 +658,7 @@
 	$title_arr = array();
 	$links_arr = array();
 	foreach ($browse_fields as $f) {
+		$sortf = $f;
 		if (intval($f) > 0) {
 			$title = $ath->getExtraFieldName($f);
 			if (!$title) {
@@ -658,14 +667,18 @@
 		} else switch ($f) {
 		case 'id':
 			$title = _('ID');
+			$sortf = 'artifact_id';
 			break;
 		case 'summary':
 			$title = _('Summary');
 			break;
 		case 'details':
 			$title = _('Description');
+			$sortf = false;
 			break;
 		case 'open_date':
+			$links_arr[] = '';
+			$title_arr[] = '';
 			$title = _('Open Date');
 			break;
 		case 'close_date':
@@ -679,30 +692,34 @@
 			break;
 		case 'assigned_to':
 			$title = _('Assigned to');
+			$sortf = 'assigned_unixname';
 			break;
 		case 'submitted_by':
 			$title = _('Submitted by');
+			$sortf = 'submitted_unixname';
 			break;
 		case 'related_tasks':
 			$title = _('Related tasks');
+			$sortf = false;
 			break;
 		default:
 			$title = sprintf(_('unknown ("%s")'), $f);
 		}
-		$links_arr[] = util_gethref(false, array(
+		$links_arr[] = $sortf ? util_gethref(false, array(
 			'group_id' => $group_id,
 			'atid' => $ath->getID(),
-			'_sort_col' => $f,
-			'_sort_ord' => ($_sort_ord == 'DESC' ? 'ASC' : 'DESC'),
+			'_sort_col' => $sortf,
+			'_sort_ord' => ($_sort_col == $sortf &&
+			    $_sort_ord == 'ASC' ? 'DESC' : 'ASC'),
 			'set' => 'advanced',
 			'search' => 'true',
 			'advanced_search' => $curSearch,
-		    ), false);
+		    ), false) : false;
 		$title_arr[] = $title;
 	}
 
 	if ($art_cnt) {
-		echo $GLOBALS['HTML']->listTableTop($title_arr, $links_arr);
+		echo $GLOBALS['HTML']->listTableTopSortable($title_arr);
 	}
 
 	$then=(time()-$ath->getDuePeriod());
@@ -713,7 +730,10 @@
 		<tr '. $HTML->boxGetAltRowStyle($i) . '>';
  		foreach ($browse_fields as $f) {
 			if ($f == 'id') {
-				echo '<td style="white-space: nowrap;">'.
+				echo html_eo('td', array(
+					'style' => 'white-space:nowrap;',
+					'content' => $art_arr[$i]->getID(),
+				    )) .
 				($IS_ADMIN?'<input type="checkbox" name="artifact_id_list[]" value="'.
 				$art_arr[$i]->getID() .'" /> ':'').
 				'<a href="'.getStringFromServer('PHP_SELF').'?func=detail&aid='.
@@ -722,15 +742,25 @@
 				$ath->getID().'">'.$art_arr[$i]->getID() .
 				'</a></td>';
 			} else if ($f == 'summary') {
-		 		echo '<td><a href="'.getStringFromServer('PHP_SELF').'?func=detail&aid='.
+				echo html_eo('td', array(
+					'content' => $art_arr[$i]->getSummary(),
+				    )) . '
+				<a href="'.getStringFromServer('PHP_SELF').'?func=detail&aid='.
 				$art_arr[$i]->getID() .
 				'&group_id='. $group_id .'&atid='.
 				$ath->getID().'">'.
 				$art_arr[$i]->getSummary().
 				'</a></td>';
 			} else if ($f == 'open_date') {
-				echo '<td>'. (($set != 'closed' && $art_arr[$i]->getOpenDate() < $then)?'* ':'  ') .
-				date(_('Y-m-d H:i'),$art_arr[$i]->getOpenDate()) .'</td>';
+				$t = $art_arr[$i]->getOpenDate();
+				$as = html_ap();
+				echo html_ao('td');
+				if ($set != 'closed' && $t < $then) {
+					echo html_ao('strong') . '*';
+				}
+				echo html_ac($as) . html_e('td', array(
+					'content' => $t,
+				    ), datepick_format($t, true));
 			} else if ($f == 'status_id') {
 				echo '<td>'. $art_arr[$i]->getStatusName() .'</td>';
 			} else if ($f == 'priority') {
@@ -744,11 +774,14 @@
 					'title' => $art_arr[$i]->getSubmittedRealName(),
 				    ), $art_arr[$i]->getSubmittedUnixName());
 			} else if ($f == 'close_date') {
-				echo '<td>'. ($art_arr[$i]->getCloseDate() ? 
-				date(_('Y-m-d H:i'),$art_arr[$i]->getCloseDate()) :'  ') .'</td>';
+				$t = $art_arr[$i]->getCloseDate();
+				echo html_e('td', array(
+					'content' => $t,
+				    ), $t ? datepick_format($t, true) : "", false);
 			} else if ($f == 'details') {
 				echo '<td>'. $art_arr[$i]->getDetails() .'</td>';
 			} else if ($f == 'related_tasks') {
+				/*XXX how to sort? */
 				echo '<td>';
 				$tasks_res = $art_arr[$i]->getRelatedTasks();
 				$s ='';
@@ -766,7 +799,9 @@
 			} else if (intval($f) > 0) {
 				// Now display extra-fields (fields are numbers).
 				$value = $extra_data[$f]['value'];
+				$p = array();
 				if ($extra_data[$f]['type'] == 9) {
+					/*XXX how to sort? */
 					$r = "";
 					foreach (preg_split("/\D+/", $value) as $v) {
 						$v = (int)$v;
@@ -779,12 +814,13 @@
 					}
 					$value = $r;
 				} else if ($extra_data[$f]['type'] == 7) {
+					$p['content'] = $value;
 					if ($art_arr[$i]->getStatusID() == 2) {
 						$value = '<strike>'.$value.'</strike>';
 					}
 					
 				}
-				echo '<td>' . $value .'</td>';
+				echo html_e('td', $p, $value, false);
 			} else {
 				// Display ? for unknown values.
 				echo '<td>?</td>';

Modified: branches/messer-51/src/www/tracker/include/ArtifactTypeHtml.class.php
===================================================================
--- branches/messer-51/src/www/tracker/include/ArtifactTypeHtml.class.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/include/ArtifactTypeHtml.class.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -118,12 +118,14 @@
 			}
 		}
 		if ($found === false) {
-			return;
+			return false;
 		}
 
-		$efarr = array($found => $ofarr[$found]);
-		$template = $this->generateEfRender($ofarr[$found], $mode);
+		$ef_found = $ofarr[$found];
+		$efarr = array($found => $ef_found);
+		$template = $this->generateEfRender($ef_found, $mode);
 		$this->_substExtraFields($mode, $efarr, $selected, $show_100, $text_100, $show_any, $text_any, $status_show_100, $template);
+		return $ef_found;
 	}
 
 	function renderRelatedTasks($group, $ah) {
@@ -388,7 +390,7 @@
 
 	function geteftipname($v) {
 		return ($v['field_type'] == ARTIFACT_EXTRAFIELDTYPE_STATUS ?
-		    'status_id' : ('ef-' . $v['field_name']));
+		    'status_id' : ('ef-' . $v['alias']));
 	}
 
 	function generateEfRender($v, $mode) {
@@ -861,8 +863,10 @@
 				    $efarr[$i]['field_type'] == ARTIFACT_EXTRAFIELDTYPE_STATUS ||
 				    $efarr[$i]['field_type'] == ARTIFACT_EXTRAFIELDTYPE_MULTISELECT) {
 					$efarr[$i]['field_type'] = ARTIFACT_EXTRAFIELDTYPE_MULTISELECT;
-				} else {
+				} else if ($efarr[$i]['field_type'] != ARTIFACT_EXTRAFIELDTYPE_TEXT) {
 					$efarr[$i]['field_type'] = ARTIFACT_EXTRAFIELDTYPE_TEXT;
+					$efarr[$i]['attribute1'] = 60;
+					$efarr[$i]['attribute2'] = 999;
 				}
 			}
 		}

Modified: branches/messer-51/src/www/tracker/item.php
===================================================================
--- branches/messer-51/src/www/tracker/item.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/item.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -131,23 +131,26 @@
 <tr align="left" valign="top">
 <?php
 echo "<td " . $HTML->boxGetAltRowStyle(0) . " width=\"30%\">\n";
+$i = false;
 if (!$is_add) {
 	if ($ath->usesCustomStatuses()) {
-		$ath->renderExtraField($data_extrafields, true, 'none', false,
-		    'Any', array(), false, $mode_extrafields, 'Status');
+		$i = $ath->renderExtraField($data_extrafields, true, 'none',
+		    false, 'Any', array(), false, $mode_extrafields, 'Status');
 		$skip_extrafields[] = 'Status';
 	} else {
 		echo "\t<div><strong>" . _('Status') . ":</strong><br />\n";
 		if ($accesslevel >= TRK_FULL) {
 			echo $ath->statusBox('status_id', $ah->getStatusID());
 		} else {
-			echo gettipspan('status_id', $ah->getStatusID());
+			echo gettipspan('status_id', $ah->getStatusName());
 		}
 		echo "</div>\n";
 	}
 }
-$ath->renderExtraField($data_extrafields, true, 'none', false,
-    'Any', array(), false, $mode_extrafields, 'Resolution');
+if (!$i || $i['field_name'] != 'Resolution') {
+	$ath->renderExtraField($data_extrafields, true, 'none', false,
+	    'Any', array(), false, $mode_extrafields, 'Resolution');
+}
 $skip_extrafields[] = 'Resolution';
 ?>
 	<div><strong><?php echo _('Priority'); ?>:</strong><br /><?php
@@ -155,12 +158,14 @@
 	echo html_build_priority_select_box('priority',
 	    $is_add ? 3 : $ah->getPriority());
 } else {
-	echo gettipspan('priority', $ah->getPriority());
+	echo gettipspan('priority', $is_add ? 3 : $ah->getPriority());
 }
 ?></div>
 <?php
-$ath->renderExtraField($data_extrafields, true, 'none', false,
-    'Any', array(), false, $mode_extrafields, 'Severity');
+if (!$i || $i['field_name'] != 'Severity') {
+	$ath->renderExtraField($data_extrafields, true, 'none', false,
+	    'Any', array(), false, $mode_extrafields, 'Severity');
+}
 $skip_extrafields[] = 'Severity';
 if (!$is_add || $accesslevel >= TRK_FULL) {
 ?>
@@ -267,6 +272,24 @@
 </table>
 
 <?php
+if (!session_loggedin()) {
+	echo $HTML->boxMiddle(_('Please login'));
+?>
+<div style="width:80%; position:relative; left:10%; margin-top:12px;">
+	<div class="warning_msg"><?php
+	echo html_e('a', array(
+		'href' => util_make_url('/account/login.php?return_to=' .
+		    urlencode(getStringFromServer('REQUEST_URI'))),
+	    ), _('Please log in.')) . ' • ' .
+	    _('If you <strong>cannot</strong> login, then enter your email address here to submit a new item, post a comment or make any other permitted changes.');
+	?></div>
+	<p><strong><?php echo _('Anonymous User eMail') .
+	    utils_requiredField(); ?>:</strong><br />
+	<input type="text" name="user_email" size="50" maxlength="255" />
+	</p>
+</div>
+<?php
+}
 if (!$is_add && $accesslevel >= TRK_FULL && $sysdebug_enable) {
 	/* debugging function: look at this page the way a user would */
 	echo $HTML->boxMiddle(_('Debugging Functions'), 'Debugging_Functions',

Modified: branches/messer-51/src/www/tracker/query.php
===================================================================
--- branches/messer-51/src/www/tracker/query.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/query.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -59,8 +59,9 @@
 		$_description = getStringFromRequest('_description');
 		$_followups = getStringFromRequest('_followups');
 		$query_options = array_keys(getArrayFromRequest('query_options'));
+		$_submitted_by = getStringFromRequest('_submitted_by');
 		if (!$aq->create($query_name,$_status,$_assigned_to,$_moddaterange,$_sort_col,$_sort_ord,$extra_fields,$_opendaterange,$_closedaterange,
-			$_summary,$_description,$_followups,$query_type, $query_options)) {
+			$_summary,$_description,$_followups,$query_type, $query_options, $_submitted_by)) {
 			form_release_key(getStringFromRequest('form_key'));
 			exit_error($aq->getErrorMessage(),'tracker');
 		} else {
@@ -108,8 +109,9 @@
 		$_followups = getStringFromRequest('_followups');
 		$extra_fields = getStringFromRequest('extra_fields');
 		$query_options = array_keys(getArrayFromRequest('query_options'));
+		$_submitted_by = getStringFromRequest('_submitted_by');
 		if (!$aq->update($query_name,$_status,$_assigned_to,$_moddaterange,$_sort_col,$_sort_ord,$extra_fields,$_opendaterange,$_closedaterange,
-			$_summary,$_description,$_followups,$query_type, $query_options)) {
+			$_summary,$_description,$_followups,$query_type, $query_options, $_submitted_by)) {
 			exit_error($aq->getErrorMessage(),'tracker');
 		} else {
 			$feedback .= _('Query Updated');
@@ -290,7 +292,7 @@
 		if ($allow_update) {
 			echo '
 		<input type="radio" name="query_action" value="3"'.$checked[3].' />'._('Update Query').'<br />
-		<input type="radio" name="query_action" value="5" />'._('Delete Query');
+		<input type="radio" name="query_action" value="5" />'._('Delete Query').'<br />';
 		}
 		echo '
 		<input type="radio" name="query_action" value="6" />'._('Run Query').'<br />';

Modified: branches/messer-51/src/www/tracker/taskmgr.php
===================================================================
--- branches/messer-51/src/www/tracker/taskmgr.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/taskmgr.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -87,12 +87,13 @@
 	foreach($pt_arr as $p) {
 		$id = $p->getID();
 		if (!isset($skip[$id])) {
-			$tasks[] = $p;
+			$tasks[$id] = $p;
 		}
 	}
 	if (empty($tasks)) {
 		exit_error(_('No Available Tasks Found'));
 	}
+	ksort($tasks);
 
 	$ath->header(array('titlevals'=>array($ath->getName()),
 		'atid'=>$ath->getID(),
@@ -105,13 +106,19 @@
 	echo $pg->getName().'
 		<input type="hidden" name="group_project_id" value="'.$pg->getID().'" /></p>
 		<p>
-		<strong>'._('Task').':</strong></p>
+		<strong>'._('Task').':</strong><br />
 		<select name="project_task_id">';
-	foreach($tasks as $task) {
-		echo '<option value="'.$task->getID().'">'.$task->getSummary().'</option>';
+	foreach ($tasks as $task) {
+		$tid = $task->getID();
+		echo html_e('option', array(
+			'value' => $tid,
+		    ), sprintf('[#%d] %s', $tid,
+		    util_html_secure($task->getSummary())));
 	}
-	echo '</select><br />
+	echo '</select>
+		</p><p>
 		<input type="submit" name="done_adding" value="'._('Add Relationship to Selected Task') . '" />
+		</p>
 		</form>';
 
 //
@@ -126,7 +133,13 @@
 //
 } elseif (getStringFromRequest('new_task')) {
 
-	session_redirect ('/pm/task.php?group_id='.$group_id.'&group_project_id='.$group_project_id.'&func=addtask&related_artifact_summary='. urlencode($a->getSummary()) .'&related_artifact_id='. $a->getID());
+	session_redirect(util_gethref('/pm/task.php', array(
+		'group_id' => $group_id,
+		'group_project_id' => $group_project_id,
+		'func' => 'addtask',
+		'related_artifact_summary' => util_unconvert_htmlspecialchars($a->getSummary()),
+		'related_artifact_id' => $a->getID(),
+	    ), false));
 
 //
 //	Show the list of ProjectGroups available
@@ -155,13 +168,13 @@
 
 	echo '<form name="foo" action="'. getStringFromServer('PHP_SELF') .'?func=taskmgr&group_id='.$group_id.'&atid='.$atid.'&aid='.$aid.'" method="post">
 		<p><strong>'._('Tracker Item').':</strong> [#'.$a->getID().'] '.$a->getSummary().'</p>
-		<p><strong>'._('Tasks Project').':</strong></p>
+		<p><strong>'._('Tasks Project').':</strong><br />
 		<select name="group_project_id">';
 	for ($i=0; $i<count($pg_arr); $i++) {
 		echo '<option value="'.$pg_arr[$i]->getID().'">'.$pg_arr[$i]->getName().'</option>';
 	}
 	echo '</select>
-		<p>
+		</p><p>
 		<input type="submit" name="add_to_task" value="'._('Add Relation to Existing Task').'" />
 		<input type="submit" name="new_task" value="'._('Create New Task').'" />
 		</p>
@@ -170,5 +183,3 @@
 }
 
 $ath->footer(array());
-
-?>

Modified: branches/messer-51/src/www/tracker/tracker.php
===================================================================
--- branches/messer-51/src/www/tracker/tracker.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/tracker/tracker.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -95,13 +95,13 @@
 		} else if (!$ath->allowsAnon() && !session_loggedin()) {
 			exit_error(_('Artifact: This ArtifactType Does Not Allow Anonymous Submissions. Please Login.'),'tracker');
 		} else {
-			if (empty($user_email)) {
-				$user_email=false;
-			} else {
-				if (!validate_email($user_email)) {
-					form_release_key(getStringFromRequest('form_key'));
-					exit_error(_('Invalid Email Address') . htmlspecialchars($user_email),'tracker');
-				}
+			if (!session_loggedin() &&
+			    (!$user_email || !validate_email($user_email))) {
+				form_release_key(getStringFromRequest('form_key'));
+				exit_error($user_email ?
+				    sprintf(_('Invalid eMail Address "%s"'),
+				    htmlspecialchars($user_email)) :
+				    _('No eMail address given'), 'tracker');
 			}
 			if ($user_email) {
 				$details = "Anonymous message posted by $user_email\n\n".
@@ -234,8 +234,6 @@
 							} else {
 								$ef[$efid] = $f;
 							}
-						} else {
-							$ef[$efid] = addslashes($ef[$efid]);
 						}
 					}
 				}
@@ -425,7 +423,7 @@
 								$error_msg .= $afh->getErrorMessage().'::'.$delete_file[$i];
 							} else {
 								if (!$afh->delete()) {
-									$error_msg .= ' <br />'._('File Delete:').': '.$afh->getErrorMessage();
+									$error_msg .= ' <br />'._('File Delete').': '.$afh->getErrorMessage();
 									$was_error=true;
 								} else {
 									$feedback .= ' <br />'._('File Delete: Successful');
@@ -435,32 +433,33 @@
 					}
 				}
 
-				//
-				//	Show just one feedback entry if no errors
-				//
-				$aid = $ah->getID();
-				if (!$was_error) {
-					$feedback = sprintf(_('Item [#%d] successfully updated'), $aid);
-				}
+			}
+			//
+			//	Show just one feedback entry if no errors
+			//
+			$aid = $ah->getID();
+			if (!$was_error) {
+				$feedback = sprintf(_('Item [#%d] successfully updated'), $aid);
+			}
+			if (isset($ext_feedback)) {
 				$feedback .= '<br />' . $ext_feedback;
-				//include $gfwww.'tracker/browse.php';
+			}
 
-				$is_add = false;
-				/* in case the Data Type was changed */
-				$new_atid = $ah->getArtifactType()->getID();
-				if ($new_atid != $atid) {
-					$new_ath = new ArtifactTypeHtml($group,
-					    $new_atid);
-					if ($new_ath && is_object($new_ath) &&
-					    !$new_ath->isError()) {
-						$ath = $new_ath;
-					}
-					/* used by the form field */
-					$atid = $new_atid;
-				}		
-				include $gfwww.'tracker/item.php';
-				break;
-			}
+			$is_add = false;
+			/* in case the Data Type was changed */
+			$new_atid = $ah->getArtifactType()->getID();
+			if ($new_atid != $atid) {
+				$new_ath = new ArtifactTypeHtml($group,
+				    $new_atid);
+				if ($new_ath && is_object($new_ath) &&
+				    !$new_ath->isError()) {
+					$ath = $new_ath;
+				}
+				/* used by the form field */
+				$atid = $new_atid;
+			}		
+			include $gfwww.'tracker/item.php';
+			break;
 		}
 	}
 		case 'monitor' : {
@@ -489,7 +488,17 @@
 						$ah->setMonitor();
 						$error_msg = $ah->getErrorMessage();
 					}
+					//include $gfwww.'tracker/browse.php';
+				}
+				$is_add = false;
+				$ath = new ArtifactTypeHtml($group,
+				    $ah->getArtifactType()->getID());
+				if (!$ath || !is_object($ath) || $ath->isError()) {
 					include $gfwww.'tracker/browse.php';
+				} else {
+					$atid = $ath->getID();
+					$aid = $ah->getID();
+					include $gfwww.'tracker/item.php';
 				}
 			} else {
 				$at=new ArtifactType($group,$atid);

Modified: branches/messer-51/src/www/widgets/updatelayout.php
===================================================================
--- branches/messer-51/src/www/widgets/updatelayout.php	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/src/www/widgets/updatelayout.php	2012-04-07 14:10:47 UTC (rev 18260)
@@ -76,9 +76,9 @@
                                 switch($action) {
                                     case 'remove':
                                         $instance_id = (int)$param[$name][$action];
-                                        if(forge_check_perm ('project_admin', $owner_id, NULL)) {
-                                               $lm->removeWidget($owner_id, $owner_type, $layout_id, $name, $instance_id, $widget);
-                                        }
+					if ($owner_type != WidgetLayoutManager::OWNER_TYPE_GROUP || forge_check_perm('project_admin', $owner_id, NULL)) {
+						$lm->removeWidget($owner_id, $owner_type, $layout_id, $name, $instance_id, $widget);
+					}
                                         break;
                                     case 'add':
                                     default:

Modified: branches/messer-51/tools/savannah_convert.sh
===================================================================
--- branches/messer-51/tools/savannah_convert.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/tools/savannah_convert.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -7,7 +7,7 @@
 	echo "Converting $theme_name"	
 	if [ ! -d $DEBIANSF_CVS_PATH/www/themes/savannah_$theme_name/ ]
 	then
-		cd $savannah_theme_dir ; find . | grep -v CVS | cpio -pdumvB $DEBIANSF_CVS_PATH/www/themes/savannah_$theme_name/images/ >/dev/null 2>&1
+		cd $savannah_theme_dir ; find . | grep -v CVS | paxcpio -pdumvB $DEBIANSF_CVS_PATH/www/themes/savannah_$theme_name/images/ >/dev/null 2>&1
 	fi 
 	cd $SAVANNAH_CVS_PATH ;
 	if [ -f www/css/$theme_name.css ]

Modified: branches/messer-51/tools/tab2gettext.sh
===================================================================
--- branches/messer-51/tools/tab2gettext.sh	2012-04-07 13:41:55 UTC (rev 18259)
+++ branches/messer-51/tools/tab2gettext.sh	2012-04-07 14:10:47 UTC (rev 18260)
@@ -94,7 +94,7 @@
 if [ ! -d "$target" ]
 then
 	echo "Copying tree in $target"
-	find . | grep -v '/.svn' | cpio -pdumvB $target
+	find . | grep -v '/.svn' | paxcpio -pdumvB $target
 fi
 
 find $target -name "*.php" | grep -v '/.svn' | while read file



More information about the evolvis-commits mailing list