Foren / Cotonti / Development / help with cotemplate

logical blocks

ez
#1 28. Dezember 2011, 22:10

Hi there,

I have problems with blocks... if MINIDIR_USERNAME is empty (i checked), then this div is shown anyway..
Am I doing something wrong here ???  cot version 0.6.20

 

            <!-- IF {MINIDIR_SHOWUSERNAME}=="1" AND {MINIDIR_USERNAME}!="" -->
                <div id="mb_admin_user">
                    {PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
                </div>
            <!-- ENDIF -->
 

 

==- I say: Keep it EZ -==
Alex300
#2 29. Dezember 2011, 06:58

Use spaces In logical operations.

Try this:

           <!-- IF {MINIDIR_SHOWUSERNAME} == "1" AND {MINIDIR_USERNAME} != "" -->
                <div id="mb_admin_user">
                    {PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
                </div>
            <!-- ENDIF -->
Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
ez
#3 29. Dezember 2011, 16:20

Sorry, it didn't work... :(

			<!-- IF {MINIDIR_SHOWUSERNAME} == "1" AND {MINIDIR_USERNAME} != "" -->
				<div id="mb_admin_user">
					{PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
				</div>
			<!-- ENDIF -->

With or without spaces... CoTemplate does not work the way i expect... and the vars i checked 200 times...

I am depending on this to work bigtime... but for now i find the cotemplate buggy in logical blocks... no

 

==- I say: Keep it EZ -==

Dieser Beitrag wurde von ez (am 29. Dezember 2011, 16:35, vor 12 Jahre) bearbeitet
pieter
#4 29. Dezember 2011, 18:01

If you try only one variable and lateron  the other one. At that moment you are sure the vars are OK.

Is AND not &&?

... can we help you ...
ez
#5 29. Dezember 2011, 19:09

@Pieter: I looked inside Cotemplate code... and NO its "AND"

To prove my point !!!


 myfiles5_494.png

With the existing template:

			<div id="mb_foldererror" style="display:none; padding:10px; margin:10px 0; color:red; border:red solid 1px"></div>
			--{MINIDIR_SHOWUSERNAME}-- ||{MINIDIR_USERNAME}||
			<!-- IF ({MINIDIR_SHOWUSERNAME} == "1" AND {MINIDIR_USERNAME} != "") -->
				<div id="mb_admin_user">
					{PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
				</div>
			<!-- ENDIF -->

I hate buggy crap shit... you see in example above that the labels produce a 1 and a name.. still my div does not get printed.. (The check labels go fine).

ALSO spaces between the elements do make a difference... thats shit to :(  (NOT happy)

 

==- I say: Keep it EZ -==
GHengeveld
#6 29. Dezember 2011, 19:43

Try this: 

<!-- IF {MINIDIR_SHOWUSERNAME} AND {MINIDIR_USERNAME} -->
ez
#7 29. Dezember 2011, 20:10

And the winner of today is Gert

			<!-- IF {MINIDIR_SHOWUSERNAME} == "1" AND {MINIDIR_USERNAME} -->
				<div id="mb_admin_user">
					{PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
				</div>
			<!-- ENDIF -->

STILL i find it very strange to not be able to do != ""

Thanks for the many responses... it was for Myfiles by the way smiley


ALSO this situation should be documented !!!!!

==- I say: Keep it EZ -==
GHengeveld
#8 29. Dezember 2011, 20:33

Maybe the username was never an empty string, but NULL ?

I try to use PHP Type Juggling when it makes things more simple. This is one such scenario, in this case it's converting to boolean.


Dieser Beitrag wurde von GHengeveld (am 29. Dezember 2011, 20:39, vor 12 Jahre) bearbeitet
ez
#9 30. Dezember 2011, 08:33

Sorry Gert, in this case NULL had nothing to do with it.

Look at example (post: 2011-12-29 19:09) there is clearly a string.

I still think that this is weird logic, and should be looked at... we should be able to test empty strings with a  [ != "" ] statement

==- I say: Keep it EZ -==
Trustmaster
#10 30. Dezember 2011, 10:08

I confirm this is a CoTemplate bug. If you try

<!-- IF {MINIDIR_USERNAME} != "" -->
    <div id="mb_admin_user">
        {PHP.L.Username} : <b>{MINIDIR_USERNAME}</b>
    </div>
<!-- ENDIF -->

this works but if you put there AND condition, then != stops working.

May the Source be with you!
ez
#11 31. Dezember 2011, 14:41

Is it in the Buglist allready... so that it get fixed ?

==- I say: Keep it EZ -==
Twiebie
#12 31. Dezember 2011, 15:34
ez
#13 2. Januar 2012, 15:39

Hmmm.. I looked in the Genoa list..   (thats why i didnt see it)

Could this bug also be fixed in Genoa please...

==- I say: Keep it EZ -==
pieter
#14 2. Januar 2012, 16:39