case using in=array not working as expected

Author Message

Hilary C.

Monday 19 July 2004 10:05:55 am

Hiya,

As far as I can tell, the two blocks of code below should do exactly the same thing. But they don't.

For context - the /user/login page doesn't seem to have a section of its own automatically applied, nor can I see anywhere to assign it to a section. That means $iamhere is blank on the login page.

Well, using the first block of code, it does pull login_page_rightnav.tpl as it should. Using the second block of code, though, it pulls main_rightnav.tpl instead, which makes no sense to me. It works fine on all other pages (since they have sections assigned). Any ideas?

{let iamhere=$DesignKeys:used.section}
{switch name=whereami match=$iamhere}
{case match=10}{include uri="design:main_rightnav.tpl"}{/case}
{case match=8}{include uri="design:main_rightnav.tpl"}{/case}
{case match=4}{include uri="design:main_rightnav.tpl"}{/case}
{case match=16}{include uri="design:main_rightnav.tpl"}{/case}
{case match=7}{include uri="design:main_rightnav.tpl"}{/case}
{case match=27}{include uri="design:main_rightnav.tpl"}{/case}
{case match=25}{include uri="design:main_rightnav.tpl"}{/case}
{case match=2}{include uri="design:main_rightnav.tpl"}{/case}
{case match=19}{include uri="design:company_rightnav.tpl"}{/case}
{case match=26}{include uri="design:company_rightnav.tpl"}{/case}
{case match=23}{include uri="design:company_rightnav.tpl"}{/case}
{case match=24}{include uri="design:company_rightnav.tpl"}{/case}
{case}{include uri="design:login_page_rightnav.tpl"}{/case}
{/switch}
{/let}

{let iamhere=$DesignKeys:used.section}
{switch name=whereami match=$iamhere}
{case in=array(10,8,4,16,7,27,25,2) } {include uri="design:main_rightnav.tpl"} {/case}
{case in=array(19,26,23,24) } {include uri="design:company_rightnav.tpl"} {/case}
{case} {include uri="design:login_page_rightnav.tpl"} {/case}
{/switch}
{/let}

Paul Forsyth

Monday 19 July 2004 11:05:10 am

If you are using 3.4 try switching the template compiler off in site.ini. It sometimes causes effects like this.

If this is the problem can you file a bug?

Thanks,

Paul

--
http://www.visionwt.com

Hilary C.

Monday 19 July 2004 1:03:34 pm

Turning off template compiling didn't make any difference :( Any other suggestions?

Paul Forsyth

Monday 19 July 2004 1:30:51 pm

Actually, this might be relevant:

http://pubsvn.ez.no/viewcvs/trunk/lib/eztemplate/classes/eztemplateswitchfunction.php

A bug was fixed last week with switches and 'in'. Could you update this file to test?

paul

--
http://www.visionwt.com

Hilary C.

Monday 19 July 2004 2:24:46 pm

Aha - it works now :) Thank you very much :)

I do get an error, though.

-- No such attribute for array(0): section

Obviously, this is because there's no section set for the login page. (At this point, yes, I think this question and my other question merge together.) Is there any way to avoid creating this error? Is it safe to ignore?

Paul Forsyth

Monday 19 July 2004 2:43:26 pm

Great!

Its sort of safe to ignore. You'll find other examples of it during register, search, anywhere which doesnt have a node in fact.

So maybe a test like

{section show=is_set($DesignKeys:used.section)}
Your code...
{/section}

may do the trick.

paul

--
http://www.visionwt.com

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.