Index: openacs-4/packages/learning-content/tcl/learning-content-xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/learning-content/tcl/learning-content-xowiki-procs.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/learning-content/tcl/learning-content-xowiki-procs.tcl 25 Aug 2009 17:28:16 -0000 1.3 +++ openacs-4/packages/learning-content/tcl/learning-content-xowiki-procs.tcl 9 Nov 2009 18:28:40 -0000 1.4 @@ -21,14 +21,21 @@ } Package instproc destroy {} { - ::xowiki::WikiForm instmixin delete ::learning_content::ContentForm - ::xowiki::PageInstanceEditForm instmixin delete \ - ::learning_content::ContentWikiForm - ::xowiki::PageTemplateForm instmixin delete \ + # + # In general, it is possible, that multiple learning_content packages are + # concurrently active in one thread. We want to remove the mixin only, + # when the last instance is deleted. + # + if {[llength [[self class] allinstances]] == 1} { + ::xowiki::WikiForm instmixin delete ::learning_content::ContentForm + ::xowiki::PageInstanceEditForm instmixin delete \ + ::learning_content::ContentWikiForm + ::xowiki::PageTemplateForm instmixin delete \ ::learning_content::ContentTemplateForm - ::xowiki::FormPage instmixin delete ::learning_content::ContentFormPage - ::xowiki::Page instmixin delete ::learning_content::ContentPage - next + ::xowiki::FormPage instmixin delete ::learning_content::ContentFormPage + ::xowiki::Page instmixin delete ::learning_content::ContentPage + } + next } Package instproc return_page {