EduploneExam/answers BlindGapAnswer.py,1.27,1.27.2.1 BooleanAnswer.py,1.24,1.24.2.1 ChoiceGapAnswer.py,1.26,1.26.2.1 FreeTextAnswer.py,1.25,1.25.2.1 MatchingAnswer.py,1.26,1.26.2.1 MathAnswer.py,1.27,1.27.2.1 MultipleChoiceAnswer.py,1.23,1.23.2.1 SingleChoiceAnswer.py,1.23,1.23.2.1 TextLineAnswer.py,1.20,1.20.2.1 TextTaskAnswer.py,1.24,1.24.2.1 TrueFalseAnswer.py,1.23,1.23.2.1 __init__.py,1.6,1.6.2.1
Nils Haagen <[email protected]> Sun, 02 Oct 2005 21:21:14 +0000
| Newsgroups | gmane.comp.web.zope.eduplone.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/eduplone/EduploneExam/answers
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3645/answers
Modified Files:
Tag: exam-1_1
BlindGapAnswer.py BooleanAnswer.py ChoiceGapAnswer.py
FreeTextAnswer.py MatchingAnswer.py MathAnswer.py
MultipleChoiceAnswer.py SingleChoiceAnswer.py
TextLineAnswer.py TextTaskAnswer.py TrueFalseAnswer.py
__init__.py
Log Message:
exam-1_1 init. moving to the next version...
Index: TrueFalseAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/TrueFalseAnswer.py,v
retrieving revision 1.23
retrieving revision 1.23.2.1
diff -C2 -d -r1.23 -r1.23.2.1
*** TrueFalseAnswer.py 8 Apr 2005 09:18:10 -0000 1.23
--- TrueFalseAnswer.py 2 Oct 2005 21:21:12 -0000 1.23.2.1
***************
*** 1,11 ****
# File: TrueFalseAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: TrueFalseAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from BooleanAnswer import BooleanAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from BooleanAnswer import BooleanAnswer
***************
*** 37,62 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TrueFalseAnswer(BaseContent,BooleanAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'TrueFalseAnswer'
- portal_type = meta_type = 'TrueFalseAnswer'
! allowed_content_types = [] + getattr(BooleanAnswer,'allowed_content_types',[])
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 33,66 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ TrueFalseAnswer_schema = BaseSchema + \
+ getattr(BooleanAnswer,'schema',Schema(())) + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TrueFalseAnswer(BooleanAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'TrueFalseAnswer'
! meta_type = 'TrueFalseAnswer'
! portal_type = 'TrueFalseAnswer'
! allowed_content_types = [] + list(getattr(BooleanAnswer, 'allowed_content_types', []))
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 64,73 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "TrueFalseAnswer"
typeDescMsgId = 'description_edit_truefalseanswer'
! schema = BaseSchema + \
! getattr(BooleanAnswer,'schema',Schema(())) + \
! schema
##code-section class-header #fill in your manual code here
--- 68,76 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "TrueFalseAnswer"
typeDescMsgId = 'description_edit_truefalseanswer'
! schema = TrueFalseAnswer_schema
##code-section class-header #fill in your manual code here
Index: TextLineAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/TextLineAnswer.py,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -C2 -d -r1.20 -r1.20.2.1
*** TextLineAnswer.py 8 Apr 2005 09:18:10 -0000 1.20
--- TextLineAnswer.py 2 Oct 2005 21:21:12 -0000 1.20.2.1
***************
*** 1,11 ****
# File: TextLineAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: TextLineAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,78 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
LinesField('correct',
widget=LinesWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
BooleanField('caseSensitive',
widget=BooleanWidget(
label='Casesensitive',
label_msgid='EduploneExam_label_caseSensitive',
- description='Enter a value for caseSensitive.',
description_msgid='EduploneExam_help_caseSensitive',
i18n_domain='EduploneExam',
! ),
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TextLineAnswer:
security = ClassSecurityInfo()
! __implements__ = () + (IExamAnswer,)
! allowed_content_types = []
! schema = schema
##code-section class-header #fill in your manual code here
--- 33,77 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
LinesField('correct',
widget=LinesWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
BooleanField('caseSensitive',
widget=BooleanWidget(
label='Casesensitive',
label_msgid='EduploneExam_label_caseSensitive',
description_msgid='EduploneExam_help_caseSensitive',
i18n_domain='EduploneExam',
! )
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ TextLineAnswer_schema = schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TextLineAnswer(BaseContent):
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (IExamAnswer,)
! allowed_content_types = []
! schema = TextLineAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 107,110 ****
--- 106,110 ----
return False
+
# end of class TextLineAnswer
Index: MultipleChoiceAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/MultipleChoiceAnswer.py,v
retrieving revision 1.23
retrieving revision 1.23.2.1
diff -C2 -d -r1.23 -r1.23.2.1
*** MultipleChoiceAnswer.py 8 Apr 2005 09:18:10 -0000 1.23
--- MultipleChoiceAnswer.py 2 Oct 2005 21:21:12 -0000 1.23.2.1
***************
*** 1,11 ****
# File: MultipleChoiceAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: MultipleChoiceAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from BooleanAnswer import BooleanAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from BooleanAnswer import BooleanAnswer
***************
*** 37,62 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class MultipleChoiceAnswer(BaseContent,BooleanAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'MultipleChoiceAnswer'
- portal_type = meta_type = 'MultipleChoiceAnswer'
! allowed_content_types = [] + getattr(BooleanAnswer,'allowed_content_types',[])
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 33,66 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ MultipleChoiceAnswer_schema = BaseSchema + \
+ getattr(BooleanAnswer,'schema',Schema(())) + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class MultipleChoiceAnswer(BooleanAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'MultipleChoiceAnswer'
! meta_type = 'MultipleChoiceAnswer'
! portal_type = 'MultipleChoiceAnswer'
! allowed_content_types = [] + list(getattr(BooleanAnswer, 'allowed_content_types', []))
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 64,73 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "MultipleChoiceAnswer"
typeDescMsgId = 'description_edit_multiplechoiceanswer'
! schema = BaseSchema + \
! getattr(BooleanAnswer,'schema',Schema(())) + \
! schema
##code-section class-header #fill in your manual code here
--- 68,76 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "MultipleChoiceAnswer"
typeDescMsgId = 'description_edit_multiplechoiceanswer'
! schema = MultipleChoiceAnswer_schema
##code-section class-header #fill in your manual code here
Index: FreeTextAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/FreeTextAnswer.py,v
retrieving revision 1.25
retrieving revision 1.25.2.1
diff -C2 -d -r1.25 -r1.25.2.1
*** FreeTextAnswer.py 8 Apr 2005 09:18:10 -0000 1.25
--- FreeTextAnswer.py 2 Oct 2005 21:21:12 -0000 1.25.2.1
***************
*** 1,11 ****
# File: FreeTextAnswer.py
! """\
! <p>Represents ...</p>
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: FreeTextAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,58 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
LinesField('correct',
widget=LinesWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
--- 33,59 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
LinesField('correct',
widget=LinesWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ FreeTextAnswer_schema = BaseSchema + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
***************
*** 68,75 ****
# This name appears in the 'add' box
archetype_name = 'FreeTextAnswer'
- portal_type = meta_type = 'FreeTextAnswer'
! allowed_content_types = []
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 69,77 ----
# This name appears in the 'add' box
archetype_name = 'FreeTextAnswer'
! meta_type = 'FreeTextAnswer'
! portal_type = 'FreeTextAnswer'
! allowed_content_types = []
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 77,85 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "FreeTextAnswer"
typeDescMsgId = 'description_edit_freetextanswer'
! schema = BaseSchema + \
! schema
##code-section class-header #fill in your manual code here
--- 79,87 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "FreeTextAnswer"
typeDescMsgId = 'description_edit_freetextanswer'
! schema = FreeTextAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 103,106 ****
--- 105,109 ----
+
registerType(FreeTextAnswer,PROJECTNAME)
# end of class FreeTextAnswer
Index: ChoiceGapAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/ChoiceGapAnswer.py,v
retrieving revision 1.26
retrieving revision 1.26.2.1
diff -C2 -d -r1.26 -r1.26.2.1
*** ChoiceGapAnswer.py 8 Apr 2005 14:17:04 -0000 1.26
--- ChoiceGapAnswer.py 2 Oct 2005 21:21:12 -0000 1.26.2.1
***************
*** 1,11 ****
# File: ChoiceGapAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: ChoiceGapAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,68 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
StringField('correct',
widget=StringWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
LinesField('options',
widget=LinesWidget(
label='Options',
label_msgid='EduploneExam_label_options',
- description='Enter a value for options.',
description_msgid='EduploneExam_help_options',
i18n_domain='EduploneExam',
! ),
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
--- 33,68 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
StringField('correct',
widget=StringWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
LinesField('options',
widget=LinesWidget(
label='Options',
label_msgid='EduploneExam_label_options',
description_msgid='EduploneExam_help_options',
i18n_domain='EduploneExam',
! )
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ ChoiceGapAnswer_schema = BaseSchema + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
***************
*** 75,82 ****
# This name appears in the 'add' box
archetype_name = 'ChoiceGapAnswer'
- portal_type = meta_type = 'ChoiceGapAnswer'
! allowed_content_types = []
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 75,83 ----
# This name appears in the 'add' box
archetype_name = 'ChoiceGapAnswer'
! meta_type = 'ChoiceGapAnswer'
! portal_type = 'ChoiceGapAnswer'
! allowed_content_types = []
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 84,92 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "ChoiceGapAnswer"
typeDescMsgId = 'description_edit_choicegapanswer'
! schema = BaseSchema + \
! schema
##code-section class-header #fill in your manual code here
--- 85,93 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "ChoiceGapAnswer"
typeDescMsgId = 'description_edit_choicegapanswer'
! schema = ChoiceGapAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 118,121 ****
--- 119,123 ----
return False
+
#manually created methods
***************
*** 135,138 ****
--- 137,141 ----
+
registerType(ChoiceGapAnswer,PROJECTNAME)
# end of class ChoiceGapAnswer
Index: TextTaskAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/TextTaskAnswer.py,v
retrieving revision 1.24
retrieving revision 1.24.2.1
diff -C2 -d -r1.24 -r1.24.2.1
*** TextTaskAnswer.py 8 Apr 2005 09:18:10 -0000 1.24
--- TextTaskAnswer.py 2 Oct 2005 21:21:12 -0000 1.24.2.1
***************
*** 1,11 ****
# File: TextTaskAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: TextTaskAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from TextLineAnswer import TextLineAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from TextLineAnswer import TextLineAnswer
***************
*** 37,62 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TextTaskAnswer(BaseContent,TextLineAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (getattr(TextLineAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'TextTaskAnswer'
- portal_type = meta_type = 'TextTaskAnswer'
! allowed_content_types = [] + getattr(TextLineAnswer,'allowed_content_types',[])
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 33,66 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ TextTaskAnswer_schema = BaseSchema + \
+ getattr(TextLineAnswer,'schema',Schema(())) + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class TextTaskAnswer(TextLineAnswer,BaseContent):
security = ClassSecurityInfo()
! __implements__ = (getattr(TextLineAnswer,'__implements__',()),) + (getattr(BaseContent,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'TextTaskAnswer'
! meta_type = 'TextTaskAnswer'
! portal_type = 'TextTaskAnswer'
! allowed_content_types = [] + list(getattr(TextLineAnswer, 'allowed_content_types', []))
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 64,73 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "TextTaskAnswer"
typeDescMsgId = 'description_edit_texttaskanswer'
! schema = BaseSchema + \
! getattr(TextLineAnswer,'schema',Schema(())) + \
! schema
##code-section class-header #fill in your manual code here
--- 68,76 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "TextTaskAnswer"
typeDescMsgId = 'description_edit_texttaskanswer'
! schema = TextTaskAnswer_schema
##code-section class-header #fill in your manual code here
Index: MathAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/MathAnswer.py,v
retrieving revision 1.27
retrieving revision 1.27.2.1
diff -C2 -d -r1.27 -r1.27.2.1
*** MathAnswer.py 8 Apr 2005 09:18:10 -0000 1.27
--- MathAnswer.py 2 Oct 2005 21:21:12 -0000 1.27.2.1
***************
*** 1,11 ****
# File: MathAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: MathAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,56 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
FloatField('correct',
widget=DecimalWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
FloatField('tolerance',
widget=DecimalWidget(
description="Enter the allowed absolute difference (+/-) to the correct value.",
--- 33,51 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
FloatField('correct',
widget=DecimalWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
FloatField('tolerance',
+ default="0",
widget=DecimalWidget(
description="Enter the allowed absolute difference (+/-) to the correct value.",
***************
*** 59,68 ****
description_msgid='EduploneExam_help_tolerance',
i18n_domain='EduploneExam',
! ),
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
--- 54,70 ----
description_msgid='EduploneExam_help_tolerance',
i18n_domain='EduploneExam',
! )
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ MathAnswer_schema = BaseSchema + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
***************
*** 75,82 ****
# This name appears in the 'add' box
archetype_name = 'MathAnswer'
- portal_type = meta_type = 'MathAnswer'
! allowed_content_types = []
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 77,85 ----
# This name appears in the 'add' box
archetype_name = 'MathAnswer'
! meta_type = 'MathAnswer'
! portal_type = 'MathAnswer'
! allowed_content_types = []
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 84,92 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "MathAnswer"
typeDescMsgId = 'description_edit_mathanswer'
! schema = BaseSchema + \
! schema
##code-section class-header #fill in your manual code here
--- 87,95 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "MathAnswer"
typeDescMsgId = 'description_edit_mathanswer'
! schema = MathAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 114,117 ****
--- 117,121 ----
+
registerType(MathAnswer,PROJECTNAME)
# end of class MathAnswer
Index: __init__.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/__init__.py,v
retrieving revision 1.6
retrieving revision 1.6.2.1
diff -C2 -d -r1.6 -r1.6.2.1
*** __init__.py 8 Apr 2005 09:18:10 -0000 1.6
--- __init__.py 2 Oct 2005 21:21:12 -0000 1.6.2.1
***************
*** 4,8 ****
##code-section init-module-header #fill in your manual code here
##/code-section init-module-header
!
#subpackages
--- 4,8 ----
##code-section init-module-header #fill in your manual code here
##/code-section init-module-header
!
#subpackages
***************
*** 23,24 ****
--- 23,25 ----
##code-section init-module-footer #fill in your manual code here
##/code-section init-module-footer
+
Index: MatchingAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/MatchingAnswer.py,v
retrieving revision 1.26
retrieving revision 1.26.2.1
diff -C2 -d -r1.26 -r1.26.2.1
*** MatchingAnswer.py 8 Apr 2005 09:18:10 -0000 1.26
--- MatchingAnswer.py 2 Oct 2005 21:21:12 -0000 1.26.2.1
***************
*** 1,11 ****
# File: MatchingAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: MatchingAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,79 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
StringField('challenge',
widget=StringWidget(
label='Challenge',
label_msgid='EduploneExam_label_challenge',
- description='Enter a value for challenge.',
description_msgid='EduploneExam_help_challenge',
i18n_domain='EduploneExam',
! ),
),
!
StringField('correct',
widget=StringWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
ImageField('picture',
widget=ImageWidget(
label='Picture',
label_msgid='EduploneExam_label_picture',
- description='Enter a value for picture.',
description_msgid='EduploneExam_help_picture',
i18n_domain='EduploneExam',
),
! storage=AttributeStorage(),
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
--- 33,78 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
StringField('challenge',
widget=StringWidget(
label='Challenge',
label_msgid='EduploneExam_label_challenge',
description_msgid='EduploneExam_help_challenge',
i18n_domain='EduploneExam',
! )
),
!
StringField('correct',
widget=StringWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
ImageField('picture',
widget=ImageWidget(
label='Picture',
label_msgid='EduploneExam_label_picture',
description_msgid='EduploneExam_help_picture',
i18n_domain='EduploneExam',
),
! storage=AttributeStorage()
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ MatchingAnswer_schema = BaseSchema + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
***************
*** 86,93 ****
# This name appears in the 'add' box
archetype_name = 'MatchingAnswer'
- portal_type = meta_type = 'MatchingAnswer'
! allowed_content_types = []
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 85,93 ----
# This name appears in the 'add' box
archetype_name = 'MatchingAnswer'
! meta_type = 'MatchingAnswer'
! portal_type = 'MatchingAnswer'
! allowed_content_types = []
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 95,103 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "MatchingAnswer"
typeDescMsgId = 'description_edit_matchinganswer'
! schema = BaseSchema + \
! schema
##code-section class-header #fill in your manual code here
--- 95,103 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "MatchingAnswer"
typeDescMsgId = 'description_edit_matchinganswer'
! schema = MatchingAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 119,122 ****
--- 119,123 ----
+
registerType(MatchingAnswer,PROJECTNAME)
# end of class MatchingAnswer
Index: BooleanAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/BooleanAnswer.py,v
retrieving revision 1.24
retrieving revision 1.24.2.1
diff -C2 -d -r1.24 -r1.24.2.1
*** BooleanAnswer.py 8 Apr 2005 09:18:10 -0000 1.24
--- BooleanAnswer.py 2 Oct 2005 21:21:12 -0000 1.24.2.1
***************
*** 1,11 ****
# File: BooleanAnswer.py
! """\
! an abstract class representing a template for all boolean answer types
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: BooleanAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from Products.EduploneExam.interfaces.IExamAnswer import IExamAnswer
***************
*** 37,41 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
from types import StringTypes
--- 33,36 ----
***************
*** 43,78 ****
##/code-section module-header
! schema= Schema((
TextField('challenge',
widget=TextAreaWidget(
label='Challenge',
label_msgid='EduploneExam_label_challenge',
- description='Enter a value for challenge.',
description_msgid='EduploneExam_help_challenge',
i18n_domain='EduploneExam',
! ),
),
!
ImageField('picture',
widget=ImageWidget(
label='Picture',
label_msgid='EduploneExam_label_picture',
- description='Enter a value for picture.',
description_msgid='EduploneExam_help_picture',
i18n_domain='EduploneExam',
),
! storage=AttributeStorage(),
),
!
BooleanField('correct',
widget=BooleanWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
- description='Enter a value for correct.',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! ),
),
!
#returns id as title, hide title in base_edit
StringField('title',
--- 38,70 ----
##/code-section module-header
! schema=Schema((
TextField('challenge',
widget=TextAreaWidget(
label='Challenge',
label_msgid='EduploneExam_label_challenge',
description_msgid='EduploneExam_help_challenge',
i18n_domain='EduploneExam',
! )
),
!
ImageField('picture',
widget=ImageWidget(
label='Picture',
label_msgid='EduploneExam_label_picture',
description_msgid='EduploneExam_help_picture',
i18n_domain='EduploneExam',
),
! storage=AttributeStorage()
),
!
BooleanField('correct',
widget=BooleanWidget(
label='Correct',
label_msgid='EduploneExam_label_correct',
description_msgid='EduploneExam_help_correct',
i18n_domain='EduploneExam',
! )
),
!
#returns id as title, hide title in base_edit
StringField('title',
***************
*** 81,98 ****
label='Title',
label_msgid='EduploneExam_label_title',
- description='Enter a value for title.',
description_msgid='EduploneExam_help_title',
i18n_domain='EduploneExam',
),
! accessor="Title",
),
!
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class BooleanAnswer:
"""
an abstract class representing a template for all boolean answer
--- 73,95 ----
label='Title',
label_msgid='EduploneExam_label_title',
description_msgid='EduploneExam_help_title',
i18n_domain='EduploneExam',
),
! accessor="Title"
),
!
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ BooleanAnswer_schema = schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class BooleanAnswer(BaseContent):
"""
an abstract class representing a template for all boolean answer
***************
*** 100,108 ****
"""
security = ClassSecurityInfo()
! __implements__ = () + (IExamAnswer,)
! allowed_content_types = []
! schema = schema
##code-section class-header #fill in your manual code here
--- 97,105 ----
"""
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (IExamAnswer,)
! allowed_content_types = []
! schema = BooleanAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 120,123 ****
--- 117,121 ----
return self.getId()
+
#methods from Interface IExamAnswer
***************
*** 139,142 ****
--- 137,141 ----
return self.getCorrect()==value
+
# end of class BooleanAnswer
Index: SingleChoiceAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/SingleChoiceAnswer.py,v
retrieving revision 1.23
retrieving revision 1.23.2.1
diff -C2 -d -r1.23 -r1.23.2.1
*** SingleChoiceAnswer.py 8 Apr 2005 09:18:10 -0000 1.23
--- SingleChoiceAnswer.py 2 Oct 2005 21:21:12 -0000 1.23.2.1
***************
*** 1,11 ****
# File: SingleChoiceAnswer.py
! """\
! answer type with special single-choice validator
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: SingleChoiceAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from BooleanAnswer import BooleanAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from BooleanAnswer import BooleanAnswer
***************
*** 37,65 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class SingleChoiceAnswer(BaseContent,BooleanAnswer):
"""
answer type with special single-choice validator
"""
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'SingleChoiceAnswer'
- portal_type = meta_type = 'SingleChoiceAnswer'
! allowed_content_types = [] + getattr(BooleanAnswer,'allowed_content_types',[])
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 33,69 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ SingleChoiceAnswer_schema = BaseSchema + \
+ getattr(BooleanAnswer,'schema',Schema(())) + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class SingleChoiceAnswer(BooleanAnswer):
"""
answer type with special single-choice validator
"""
security = ClassSecurityInfo()
! __implements__ = (getattr(BooleanAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'SingleChoiceAnswer'
! meta_type = 'SingleChoiceAnswer'
! portal_type = 'SingleChoiceAnswer'
! allowed_content_types = [] + list(getattr(BooleanAnswer, 'allowed_content_types', []))
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 67,76 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "SingleChoiceAnswer"
typeDescMsgId = 'description_edit_singlechoiceanswer'
! schema = BaseSchema + \
! getattr(BooleanAnswer,'schema',Schema(())) + \
! schema
##code-section class-header #fill in your manual code here
--- 71,79 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "SingleChoiceAnswer"
typeDescMsgId = 'description_edit_singlechoiceanswer'
! schema = SingleChoiceAnswer_schema
##code-section class-header #fill in your manual code here
Index: BlindGapAnswer.py
===================================================================
RCS file: /cvsroot/eduplone/EduploneExam/answers/BlindGapAnswer.py,v
retrieving revision 1.27
retrieving revision 1.27.2.1
diff -C2 -d -r1.27 -r1.27.2.1
*** BlindGapAnswer.py 8 Apr 2005 14:17:04 -0000 1.27
--- BlindGapAnswer.py 2 Oct 2005 21:21:12 -0000 1.27.2.1
***************
*** 1,11 ****
# File: BlindGapAnswer.py
! """\
! unknown
!
! """
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! #
! # Generator: ArchGenXML Version 1.4 devel 1 http://sf.net/projects/archetypes/
#
# GNU General Public Licence (GPL)
--- 1,8 ----
# File: BlindGapAnswer.py
! #
# Copyright (c) 2005 by eduplone Open Source Business Network EEIG, contributed
# by FH-Aargau, Switzerland
! # Generator: ArchGenXML Version 1.4.0-beta2 devel
! # http://plone.org/products/archgenxml
#
# GNU General Public Licence (GPL)
***************
*** 26,33 ****
__docformat__ = 'plaintext'
- from AccessControl import ClassSecurityInfo
- from Products.Archetypes.public import *
-
from TextLineAnswer import TextLineAnswer
--- 23,29 ----
__docformat__ = 'plaintext'
+ from AccessControl import ClassSecurityInfo
+ from Products.Archetypes.atapi import *
from TextLineAnswer import TextLineAnswer
***************
*** 37,62 ****
from Products.EduploneExam.config import *
-
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema= Schema((
),
)
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class BlindGapAnswer(BaseContent,TextLineAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(BaseContent,'__implements__',()),) + (getattr(TextLineAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'BlindGapAnswer'
- portal_type = meta_type = 'BlindGapAnswer'
! allowed_content_types = [] + getattr(TextLineAnswer,'allowed_content_types',[])
! filter_content_types = 1
global_allow = 0
allow_discussion = 0
--- 33,66 ----
from Products.EduploneExam.config import *
##code-section module-header #fill in your manual code here
##/code-section module-header
! schema=Schema((
),
)
+
+ ##code-section after-local-schema #fill in your manual code here
+ ##/code-section after-local-schema
+
+ BlindGapAnswer_schema = BaseSchema + \
+ getattr(TextLineAnswer,'schema',Schema(())) + \
+ schema
+
##code-section after-schema #fill in your manual code here
##/code-section after-schema
! class BlindGapAnswer(TextLineAnswer):
security = ClassSecurityInfo()
! __implements__ = (getattr(TextLineAnswer,'__implements__',()),)
# This name appears in the 'add' box
archetype_name = 'BlindGapAnswer'
! meta_type = 'BlindGapAnswer'
! portal_type = 'BlindGapAnswer'
! allowed_content_types = [] + list(getattr(TextLineAnswer, 'allowed_content_types', []))
! filter_content_types = 0
global_allow = 0
allow_discussion = 0
***************
*** 64,73 ****
immediate_view = 'base_view'
default_view = 'base_view'
typeDescription = "BlindGapAnswer"
typeDescMsgId = 'description_edit_blindgapanswer'
! schema = BaseSchema + \
! getattr(TextLineAnswer,'schema',Schema(())) + \
! schema
##code-section class-header #fill in your manual code here
--- 68,76 ----
immediate_view = 'base_view'
default_view = 'base_view'
+ suppl_views = ()
typeDescription = "BlindGapAnswer"
typeDescMsgId = 'description_edit_blindgapanswer'
! schema = BlindGapAnswer_schema
##code-section class-header #fill in your manual code here
***************
*** 105,108 ****
--- 108,112 ----
+
registerType(BlindGapAnswer,PROJECTNAME)
# end of class BlindGapAnswer
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads, discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl