MapTools.org

[Chameleon] LegendTemplate Widget

Rene Teniere TENIERER@gov.ns.ca
Wed, 14 Jan 2004 09:03:46 -0400
It didn't seem to like that all that much, gave me this error:

PHP Parse error: parse error, unexpected '{' in
c:\chameleon11a\htdocs\widgets\LegendTemplate.widget.php on line 94 PHP
Fatal error: Cannot instantiate non-existent class: legendtemplate in
c:\chameleon11a\htdocs\WidgetManager.php(134) : eval()'d code on line 1

Got rid of that block of code and got this:

PHP Parse error: parse error, unexpected T_IF in
c:\chameleon11a\htdocs\widgets\LegendTemplate.widget.php on line 95 PHP
Fatal error: Cannot instantiate non-existent class: legendtemplate in
c:\chameleon11a\htdocs\WidgetManager.php(134) : eval()'d code on line 1


Rene

>>> pagameba@magma.ca 2004-01-13 10:36:56 PM >>>
There definitely seems to be something odd here.  These lines of code:

if (strcmp(substr($this->mszTemplate, 0, 1), "/") ||
     strcmp(substr($this->mszTemplate, 1, 1), ":") ||
     strcmp(substr($this->mszTemplate, 0, 1), "\\") )

seem to be wrong.  I think that the intention of the block following it

is to calculate the location of the template if a relative path is 
given.  The if doesn't seem to do that.

I think it should say:

if (strcmp(substr($this->mszTemplate, 0, 1), "/") != 0 &&
     strcmp(substr($this->mszTemplate, 1, 1), ":") != 0 &&
     strcmp(substr($this->mszTemplate, 0, 1), "\\") != 0 &&
     strcasecmp(substr($this->mszTemplate, 0, 7, "http://" != 0)
{
}

and the second if which reads:

if (strtoupper(substr($this->mszTemplate, 0, 7)) == "http://")

should read

if (strtolowever(substr($this->mszTemplate, 0, 7)) == "http://")

Can you try this and let me know if it works?

Cheers,

Paul

Rene Teniere wrote:

> Paul,
> 
> Well... Here goes, did a little digging and this is what I came up
> with. You can be the judge of the results:
> 
>     function InitDefaults()
>     {
>         if (isset($this->maParams["EMBEDDED"]) &&
>             strcasecmp(trim($this->maParams["EMBEDDED"]), "FALSE")
==
> 0)
>         {
>             $this->moTextButton = new CWCTextButton($this);
>             $this->moPopup = new CWCPopup($this);
>             $this->moPopup->mszLink =
> "widgets/LegendTemplatePopup.phtml";
>             $this->moTextButton->InitDefaults();
>             echo 'step1 ';
>         }
>         
>         if (isset($this->maParams["TEMPLATE"]))
>         {
>             echo 'step2 ';
>             $this->mszTemplate = trim($this->maParams["TEMPLATE"]);
>             print($this->maParams["TEMPLATE"]);
>             //TEMPLATE is relative to the application template, not
the
> map file :)
>             print($this->mszTemplate);
>             if (strcmp(substr($this->mszTemplate, 0, 1), "/") ||
>                 strcmp(substr($this->mszTemplate, 1, 1), ":") ||
>                 strcmp(substr($this->mszTemplate, 0, 1), "\\") )
>             {
>                 $oChameleon = GetChameleonApplication();
>             	$szTemplatePath =
> dirname($oChameleon->mszTemplateName);
>                 $this->mszTemplate =
> realpath($szTemplatePath."/".$this->mszTemplate);
>                 echo ' not HTTP:// ';
>                 print($this->mszTemplate);
>             }
>             if (strtoupper(substr($this->mszTemplate, 0, 7)) ==
> "http://")
>             {
>                 echo 'step3 ';
>                 $aszFile = file($this->mszTemplate);
>                 $szTmpName = tempnam($_SESSION['gszTmpPath'],
> "legendtemplate").".html";
>                 $fh = fopen($szTmpName, "w");
>                 $nbLine = count($aszFile);
> 
>                 for($i=0; $i<$nbLine; $i++)
>                 {
>                     fwrite($fh, $aszFile[$i]);
>                 }
>                 fclose($fh);
> 
>                 $this->mszTemplate = $szTmpName;
>                 print($this->mszTemplate);
>             }
>         }
>     }
> 
> Here is the output:
> 
> step1
> step2
> c:/chameleon11a/websites/template/legend_template.html
> c:/chameleon11a/websites/template/legend_template.html
> not HTTP://
> 
> Also, here is another error message:
> PHP Notice: Use of undefined constant ERR_ERROR - assumed
'ERR_ERROR'
> in c:\chameleon11a\htdocs\widgets\LegendTemplate.widget.php on line
372
> 
> P.S. I know the template is pointed into the right direction because
> when I put 'c:/chameleon11a/websites/template/legend_template.html'
into
> my web browser, it will show up.
> 
> Rene
> 
> 
>>>>pagameba@magma.ca 2004-01-12 10:05:53 AM >>>
> 
> Rene,
> 
> for some reason, it is not finding your template but I can't figure
out
> 
> why not.  You can try setting the template as an HTTP:// reference,
the
> 
> code also handles that.  You can also try adding 'embedded="false"'
to
> 
> the widget, which will make the legend appear in a popup when you
click
> 
> the text button.  That does mean that you will need to provide some 
> additional parameters for the popup and textbutton though.
> 
> Unfortunately, it seems to work fine here.  Are you willing to dig
into
> 
> the code a little bit?  If yes, the you can edit the 
> LegendTemplate.widget.php file in the InitDefaults function and place

> some echo statements at various places to see which code is
executing,
> 
> ie echo 'step 1'; echo 'step 2'; and so on.
> 
> The basic purpose of this is to find out where the code ends up
setting
> 
> the variable  $this->mszTemplate to an empty string (or fails to set
it
> 
> to the correct value).
> 
> Cheers,
> 
> Paul
> 
> Rene Teniere wrote:
> 
> 
>>Hi All,
>>
>>Can't seem to be able to get the LegendTemplate Widget to work.
>>ErrorReport says that no legend template is specified, even though
> 
> it
> 
>>is. The template is a standard MapServer legend template format, and
> 
> I
> 
>>have used several different ones, as well as
>>legend_template_widget.html. I have also tried removing the template
>>reference in the mapfile with no results. Anyone know what's up with
>>this? I've been working on this for two days and am starting to pull
> 
> my
> 
>>hair out.
>>
>>Rene
>>
>><cwc2 type="legendtemplate" visible="true" enabled="true"
>>
> 
>
template="C:/chameleon11a/websites/template/legend_template_chameleon.html"/>
> 
>>
>>Rene J.R. Teniere - BSc., D.GIS
>>GIS Technician
>>Nova Scotia Department of Natural Resources
>>Forestry Division (GIS) - Truro
>>
>>Phone: (902) 893-5655
>>Mobile: (902) 209-8956
>>_______________________________________________
>>Chameleon mailing list
>>Chameleon@lists.maptools.org 
>>http://lists.maptools.org/mailman/listinfo/chameleon 
>>
> 
> 

-- 
  -----------------------------------------------------------------
|Paul Spencer                           spencer@dmsolutions.ca    |
|-----------------------------------------------------------------|
|Applications & Software Development                              |
|DM Solutions Group Inc                 http://www.dmsolutions.ca/| 
  -----------------------------------------------------------------



This archive was generated by Pipermail.