[LON-CAPA-users] Variables in libraries

Felicia Berryman lon-capa-users@mail.lon-capa.org
Fri, 25 Jul 2008 16:59:29 -0400


Hi Brew,

I used <import id="IMPORT-ID">

Then, in the spreadsheet, the submissions shows as 
stores_PART-ID_IMPORT-ID_SUBMISSION-ID_submission

I tried using the import id in the $Key definition but couldn't get it 
to work.  Try playing with this though.  It appears you need to use the 
import id to access the submission.

Felicia

Felicia Berryman wrote:
> Hi Brew,
> 
> Just making your example simpler.  You can use my text below to create a 
> bug report if no one has any ideas on how to make this work.
> 
> $Key displays after submission using problem code below:
> ---------------------------------------------
> <problem>
> <script type="loncapa/perl">
> $Key =&EXT('user.resource.resource.PART-ID.SUBMISSION-ID.submission');
> </script>
> 
> <part id="PART-ID">
> <startouttext />Enter something<endouttext />
> <stringresponse answerdisplay="Got it" answer="/.*/" id="SUBMISSION-ID" 
> type="re">
> <textline readonly="no"></textline>
> </stringresponse>
> </part>
> 
> <startouttext /><p>You entered $Key</p><endouttext />
> </problem>
> ---------------------------------------------
> 
> $Key doesn't display after submission using problem code below:
> ---------------------------------------------
> <problem>
> <script type="loncapa/perl">
> $Key =&EXT('user.resource.resource.PART-ID.SUBMISSION-ID.submission');
> </script>
> 
> <part id="PART-ID">
> <import>brew.library</import>
> </part>
> 
> <startouttext /><p>You entered $Key</p><endouttext />
> </problem>
> ---------------------------------------------
> Where brew.library is:
> ---------------------------------------------
> <library>
> <startouttext />Enter something<endouttext />
> <stringresponse answerdisplay="Got it" answer="/.*/" id="SUBMISSION-ID" 
> type="re">
> <textline readonly="no"></textline>
> </stringresponse>
> </library>
> ---------------------------------------------
> 
> Felicia
> 
> Robert_Brewington@er.monroe.edu wrote:
>> I have been beating this for a couple of days, and am having trouble 
>> understanding a) what is going on, and b) what I should do about it:)
>>
>> The basic idea is that I want to put various pieces of code in 
>> libraries, which are then called from the main problems. Otherwise I 
>> end up with the same code copied into many problems; when I want to 
>> make a change, I have to somehow find all those problems and change 
>> them. Of course, LonCapa doesn't have any search tools, so it is 
>> awkward to do this over my 7000 problems.
>>
>> The problem I am having is understanding when my script variables will 
>> work and when they won't. I know this has to do with the order that 
>> the main problem html versus the libraries are 
>> parsed/evaluated/something.
>>
>> In the example below, the status of the problem part SetupKey within 
>> the FunctionCode library is retrieved fine. However, I do not seem to 
>> be able to retrieve the SetupKey submission at any time, either from 
>> within the FunctionCode library (the ideal case) or from the 
>> MainProblem code.
>>
>> So, 1) why doesn't this work? and
>> 2) how would I obtain the submission?
>>
>> Thanks for any clues,
>> brew
>>
>> MainProblem.problem: =========================================
>> <problem>
>> <script type="loncapa/perl">
>> $KeyCodeBeforeMain = 
>> &EXT('user.resource.resource.SetupKey.KeyCode.submission');
>> $whichScript="BeforeMain";
>> </script>
>>
>> <import id="SetKey">FunctionCode.library</import>
>>
>> <script type="loncapa/perl">
>> $KeyCodeAfterMain = 
>> &EXT('user.resource.resource.SetupKey.KeyCode.submission');
>> $whichScript="AfterMain";
>> </script>
>>
>> <part id=junk>
>> <startouttext />
>> whichScript is {$whichScript} <p/>
>> statusKey is {$statusKey} <p/>
>> KeyCodeBeforeMain is {$KeyCodeBeforeMain}  <p/>
>> KeyCodeBefore is {$KeyCodeBefore}  <p/>
>> KeyCodeAfter is {$KeyCodeAfter}  <p/>
>> KeyCodeAfterMain is {$KeyCodeAfterMain}  <p/>
>>
>> <endouttext />
>> <stringresponse answer="yes" id="stuff" type="ci">
>> <textline readonly="no">
>> </textline>
>> </stringresponse>
>> </part>
>> </problem>
>>
>>
>> FunctionCode.library: ===========================================
>> <library>
>>
>> <script type="loncapa/perl">
>> $KeyCodeBefore = 
>> &EXT('user.resource.resource.SetupKey.KeyCode.submission');
>> $statusKey = &EXT('user.resource.resource.SetupKey.solved');
>> $whichScript="BeforeSetupKey";
>> </script>
>>
>>
>> <part id="SetupKey">
>> <startouttext />
>> Enter the key
>> <endouttext />
>> <stringresponse id="KeyCode" answer="/.*/" type="re">
>> <textline readonly="no">
>> </textline>
>> </stringresponse>
>> </part>
>>
>> <script type="loncapa/perl">
>> $KeyCodeAfter = 
>> &EXT('user.resource.resource.SetupKey.KeyCode.submission');
>> $whichScript="AfterSetupKey";
>> </script>
>>
>> </library>
>>
>> ==========================================================
>>
>> _______________________________________________ LON-CAPA-users mailing 
>> list LON-CAPA-users@mail.lon-capa.org 
>> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
> 

-- 
Felicia Berryman
Instructional Systems
Michigan State University
(517)432-7326
LON-CAPA Technical Support Available at:
    http://www.loncapa.msu.edu - MSU Users
    http://www.help.lon-capa.org - General