![]() |
||||
|
|
||||
[Chameleon] LegendTemplate WidgetPaul Spencer spencer@dmsolutions.caTue, 13 Jan 2004 21:36:56 -0500
|
||||
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. |
MapTools.org -- Hosted by DM Solutions Group |