This question about Using an extension: Answered
Summary
ERROR in Foswiki error.log:
error compiling class Foswiki::Form::Topic: Can't locate Foswiki/Form/Topic.pm in @INC (you may need to install the Foswiki::Form::Topic module)
I am using Foswiki 2.0.3, perl v5.18.2, Ubuntu 14.04.2 LTS. I have installed
WikiworkbenchContrib and prerequisites. The Foswiki error log reports an error when I create a new Application.
The error message suggests that I need to install Topic.pm. However, I am unclear where this module is to be found. Have I missed a prerequisite? Can you assist?
Details
The following sequence works in version 1.1.9, but fails in 2.0.3 as follows.
- WIKIDEBUG >>> 1. login 2.0.3 - Mon Dec 21 12:20:36 AEDT 2015
- WIKIDEBUG >>> 2. Create TestApp in 2.0.3 - Mon Dec 21 12:22:22 AEDT 2015
- Appears successful. three pages of topics reported in TestApp (WebHome). Directory contains 26 files plus history.
- HOWEVER, the Foswiki log reports an error in this step. See below.
- WIKIDEBUG >>> 3. Create a topic function in 2.0.3 - Mon Dec 21 12:27:18 AEDT 2015
- WIKIDEBUG >>> 4. Back to the TopicFunctions page in 2.0.3 - Mon Dec 21 12:35:48 AEDT 2015
The contents of the foswiki log are: ( the markers >>>> WIKIDEBUG correspond to the steps above )
>>>>>>>>>>>>>>>>>>>>>>>> WIKIDEBUG >>> 1. login 2.0.3 - Mon Dec 21 12:20:36 AEDT 2015
>>>>>>>>>>>>>>>>>>>>>>>> WIKIDEBUG >>> 2. Create Test.App in 2.0.3 - Mon Dec 21 12:22:22 AEDT 2015
| 2015-12-21T12:23:33+11:00 error | error compiling class Foswiki::Form::Topic: Can't locate Foswiki/Form/Topic.pm in @INC (you may need to install the Foswiki::Form::Topic module) (@INC contains: /var/www/Foswiki-2.0.3/lib /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl . /var/www/Foswiki-2.0.3/lib/CPAN/lib) at (eval 274) line 2.
at (eval 274) line 2.
eval 'require Foswiki::Form::Topic' called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 404
Foswiki::Form::createField('Foswiki::Form=HASH(0x9789cf0)', 'topic', 'web', 'Applications', 'topic', 'WikiApplication', 'definingTopic', '', 'title', ...) called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 361
Foswiki::Form::__ANON__('close_tr') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Tables/Parser.pm line 268
Foswiki::Tables::Parser::parse('---++ Documentation\x{a}%STARTSECTION{"documentation"}%\x{a}Normally ...', 'CODE(0x9769c48)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 376
Foswiki::Form::__ANON__() called at /usr/share/perl5/Error.pm line 416
eval {...} called at /usr/share/perl5/Error.pm line 408
Error::subs::try('CODE(0x976a198)', 'HASH(0x976a238)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 381
Foswiki::Form::_parseFormDefinition('Foswiki::Form=HASH(0x9789cf0)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 136
Foswiki::Form::new('Foswiki::Form', 'Foswiki=HASH(0x8d5f7e8)', 'Applications/TestApp', 'Applications.WikiApplication') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Plugins/JQGridPlugin/DBCacheConnector.pm line 172
Foswiki::Plugins::JQGridPlugin::DBCacheConnector::__ANON__() called at /usr/share/perl5/Error.pm line 416
eval {...} called at /usr/share/perl5/Error.pm line 408
Error::subs::try('CODE(0x976ca80)', 'HASH(0x976c9e0)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Plugins/JQGridPlugin/DBCacheConnector.pm line 177
Foswiki::Plugins::JQGridPlugin::DBCacheConnector::search('Foswiki::Plugins::JQGridPlugin::DBCacheConnector=HASH(0x979dc48)', 'web', 'Applications/TestApp', 'query', 'topic=\'.*\'', 'sort', 'Changed', 'reverse', 'on', ...) called at /var/www/Foswiki-2.0.3/lib/Foswiki/Plugins/JQGridPlugin/DBCacheConnector.pm line 111
Foswiki::Plugins::JQGridPlugin::DBCacheConnector::restHandleSearch('Foswiki::Plugins::JQGridPlugin::DBCacheConnector=HASH(0x979dc48)', 'Foswiki::Request=HASH(0x8d42fa0)', 'Foswiki::Response=HASH(0x8d5f8c4)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Plugins/JQGridPlugin.pm line 100
Foswiki::Plugins::JQGridPlugin::__ANON__() called at /usr/share/perl5/Error.pm line 416
eval {...} called at /usr/share/perl5/Error.pm line 408
Error::subs::try('CODE(0x97af70c)', 'HASH(0x97af8b0)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Plugins/JQGridPlugin.pm line 108
Foswiki::Plugins::JQGridPlugin::restGridConnector('Foswiki=HASH(0x8d5f7e8)', 'JQGridPlugin', 'gridconnector', 'Foswiki::Response=HASH(0x8d5f8c4)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Func.pm line 768
Foswiki::Func::__ANON__('Foswiki=HASH(0x8d5f7e8)', 'JQGridPlugin', 'gridconnector', 'Foswiki::Response=HASH(0x8d5f8c4)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/UI/Rest.pm line 275
Foswiki::UI::Rest::__ANON__() called at /usr/share/perl5/Error.pm line 416
eval {...} called at /usr/share/perl5/Error.pm line 408
Error::subs::try('CODE(0x97aca88)', 'HASH(0x97600bc)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/UI/Rest.pm line 290
Foswiki::UI::Rest::rest('Foswiki=HASH(0x8d5f7e8)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/UI.pm line 374
Foswiki::UI::__ANON__() called at /usr/share/perl5/Error.pm line 416
eval {...} called at /usr/share/perl5/Error.pm line 408
Error::subs::try('CODE(0x83c9430)', 'HASH(0x8da409c)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/UI.pm line 500
Foswiki::UI::_execute('Foswiki::Request=HASH(0x8d42fa0)', 'CODE(0x8d92fb4)', 'rest', 1) called at /var/www/Foswiki-2.0.3/lib/Foswiki/UI.pm line 326
Foswiki::UI::handleRequest('Foswiki::Request=HASH(0x8d42fa0)') called at /var/www/Foswiki-2.0.3/lib/Foswiki/Engine/CGI.pm line 99
Foswiki::Engine::CGI::run('Foswiki::Engine::CGI=HASH(0x887b4e0)') called at /var/www/Foswiki-2.0.3/bin/rest line 29
|
>>>>>>>>>>>>>>>>>>>>>>>> WIKIDEBUG >>> 3. Create a topic function in 2.0.3 - Mon Dec 21 12:27:18 AEDT 2015
>>>>>>>>>>>>>>>>>>>>>>>> WIKIDEBUG >>> 4. Back to the TopicFunctions page in 2.0.3 - Mon Dec 21 12:35:48 AEDT 2015
>>>>>>>>>>>>>>>>>>>>>>>> WIKIDEBUG >>> 5. END OFF EXPERIMENTS - Mon Dec 21 12:38:26 AEDT 2015
The problem appears to occur here:
require Foswiki::Form::Topic' called at /var/www/Foswiki-2.0.3/lib/Foswiki/Form.pm line 404
Topic.pm is not found anywhere in my Foswiki 2.0.3 installation tree.
The code in Form.pm at line 404 does not refer explicitly to Topic.pm.
386 # PROTECTED
387 # Create a field object. Done like this so that this method can be
388 # overridden by subclasses to extend the range of field types.
389 sub createField {
390 my $this = shift;
391 my $type = shift;
392
393 # The untaint is required for the validation *and* the ucfirst, which
394 # retaints when use locale is in force (hence we do the validation *after*
395 # the ucfirst)
396 my $class = Foswiki::Sandbox::untaint(
397 $type,
398 sub {
399 my $class = ucfirst(shift);
400 $class =~ m/^([a-zA-Z0-9_]*)/; # cut off +buttons etc
401 return "Foswiki::Form::$1";
402 }
403 );
404 eval 'require ' . $class;
405 if ($@) {
406 $this->session->logger->log( 'error',
407 "error compiling class $class: $@" );
408
409 # Type not available; use base type
410 require Foswiki::Form::FieldDefinition;
411 $class = 'Foswiki::Form::FieldDefinition';
412 }
413 return $class->new( session => $this->session(), type => $type, @_ );
414 }
All this suggests that I need to install Topic.pm. However, I am unclear where this module is to be found. Have I missed a prerequisite? Can you assist?
Thanks in advance.
--
BramVanOosterhout - 21 Dec 2015
Yes, I have found the answer. Topic.pm is in
MoreFormFieldsPlugin. Installed that with all prerequisites and the compile error went away. I still don't get the same behaviour as under 1.1.9. That is the created
TopicFunction onle has a
WikiTopic type. But that is clearly a different problem. I will close this error report.. Thanks for letting me formulate the question.
--
BramVanOosterhout - 21 Dec 2015