[Cartoweb-users] MyFirst Plugin]

Milo van der Linden mlinden at zeelandnet.nl
Tue Aug 14 11:15:03 EDT 2007


I corrected that, but still no tekst shows up in my resultpage.

<?php
 class ClientProjectSelect extends ClientPlugin {
     public function renderForm(Smarty $template) {
             $foo='My foo text comes here';
             $template->assign('projectSelect',$foo);
         }
     }




Jacolin Yves schreef:
> Milo,
>
> It seems that you did not defined your foo variable and you use it in your 
> function :
>  <?php
>  class ClientProjectSelect extends ClientPlugin {
>      public function renderForm(Smarty $template) {
>          $some_variable = 'foo';
>          $foo='I forget to define my variable';<-----------------------------
>              $template->assign('projectSelect',$foo);
>          }
>      }
>  ?>
>
> Regard,
>
> Y.
> Le Tuesday 14 August 2007 16:35:43 Milo van der Linden, vous avez écrit :
>   
>> Hello list!
>>
>> Thanks again for the many helping hands. I managed to get one step further.
>> Right now I have implemented the renderForm function as described below.
>> It doesn't generate errors anymore, but foo doesn't show..
>>
>> when you visit http://82.176.214.209/cartoweb/webGIS.php; foo should be
>> displayed just beneath the Cartoclient Title. In the source of the page
>> it says
>> "<!--this is where foo should be -->"
>> and
>> "<!-- end of foo -->"
>>
>> Between these two lines of comment, my cartoclient.tpl contains
>> {$projectSelect}
>>
>>
>> My plugin code is now:
>>
>> <?php
>> class ClientProjectSelect extends ClientPlugin {
>>     public function renderForm(Smarty $template) {
>>         $some_variable = 'foo';
>>             $template->assign('projectSelect',$foo);
>>         }
>>     }
>> ?>
>>
>> In my client.ini, cases are as described: projectSelect
>> Where else can I look to get "foo" displayed?
>>
>> Oliver Christen schreef:
>>     
>>> an error occured in your plugin, line 19, and something was outputed
>>> very early in the operation flow, with the result nothing is displayed.
>>>
>>> be sure you dont have a blank space at the beginning of your plugin code
>>>
>>> first of all, you should user proper naming for plugin filename and
>>> classname, respectively, "ClientProjectSelect.php" and "class
>>> ClientProjectSelect .." (notice the uppercase P), it stay
>>> "projectSelect" in the client.ini
>>>
>>> to simply output something in the main template, you can do:
>>>
>>> public function renderForm(Smarty $template) {
>>>     $some_variable = 'foo';
>>>     $template->assign('target_name_in_cartoclient_tpl', $some_variable);
>>> }
>>> and it should display 'foo' where you have
>>> {$target_name_in_cartoclient_tpl} in the cartoclient.tpl
>>>
>>> to load a template from your plugin templates folder, you need to do
>>> as Yves said:
>>>
>>> public function renderForm(Smarty $template) {
>>>     $smarty = new Smarty_Plugin($this->getCartoclient(), $this);
>>>     $foo = 'foo';
>>>     $bar = 'bar';
>>>     $smarty->assign(array('var1' => $foo, 'var2' => $bar)); // if you
>>> have {$foo} and {$bar} in your plugin template
>>>     $plugin_template = $smarty->fetch('your_plugin_template.tpl');
>>>     $template->assign('target_name_in_cartoclient_tpl',
>>> $plugin_template); // finally pass the whole plugin template to the
>>> main cartoclient.tpl
>>> }
>>>
>>> try the simply example above
>>>
>>> regards
>>> Oliver
>>>
>>>     ----- Original Message -----
>>>     *From:* Milo van der Linden <mailto:mlinden at zeelandnet.nl>
>>>     *To:* cartoweb-users at lists.maptools.org
>>>     <mailto:cartoweb-users at lists.maptools.org>
>>>     *Sent:* Monday, August 13, 2007 12:43 AM
>>>     *Subject:* Re: [Cartoweb-users] MyFirst Plugin]
>>>
>>>     Wow,
>>>
>>>     Thank you for the fast response on a sunday evening! Seems I am
>>>     not the only addict here ;-)
>>>
>>>     I indeed meant the cartoclient.tpl, correct.
>>>     I do not need an ini just yet, I just want to let cartoweb display
>>>     this plugin template content for me. I took over a project from a
>>>     guy doing an internship. He messed things up a bit by hacking into
>>>     the highest directories for cartoweb. I am trying to do it right
>>>     this time.
>>>
>>>     I have now changed my ClientprojectSelect.php (name of my plugin) to
>>>     <?php
>>>     class ClientprojectSelect extends ClientPlugin
>>>     {
>>>     protected function drawprojectSelect() {
>>>         $smarty = new Smarty_Plugin($this->getCartoclient(), $this);
>>>         return $smarty->fetch('projectSelect.tpl');
>>>     }
>>>
>>>     public function renderForm(Smarty $template) {
>>>          $projectSelect_active = $this->getConfig()->projectSelectActive;
>>>          $template->assign(array('prjectSelect_active' =>
>>>     $projectSelect_active));
>>>          if ($projectSelect_active)
>>>              $template->assign('projectSelect',
>>>     $this->drawprojectSelect());
>>>         }
>>>     }
>>>
>>>     ?>
>>>
>>>
>>>     All I want it to do is display the content of the tpl, but now I
>>>     am getting headers not sent info..
>>>
>>>     Please see the error messages I am getting now:
>>>     http://82.176.214.209/cartoweb/webGIS.php
>>>
>>>     What am I doing wrong?
>>>
>>>     Yves Jacolin schreef:
>>>       
>>>>     Le dimanche 12 août 2007 18:45, Milo van der Linden a écrit :
>>>>         
>>>>>     Hello list,
>>>>>
>>>>>     I am trying to write a simple, static plugin that displays a
>>>>> dropdownbox on the cartoweb GUI, for now it doesn't have to do
>>>>> anything. I just want to check if I am capable of taking the first
>>>>> steps in writing plugins.
>>>>>
>>>>>     I did the following:
>>>>>
>>>>>     I created the required directories:
>>>>>
>>>>>     <myProject>/plugins/myplugin
>>>>>     <myProject>/plugins/myplugin/client
>>>>>     <myProject>/plugins/myplugin/templates
>>>>>
>>>>>     in client I created a file Clientmyplugin.php
>>>>>     in templates I created a file myplugin.tpl
>>>>>
>>>>>     In the myplugin.tpl I have the following code:
>>>>>
>>>>>     <div id="mypluginSelect">
>>>>>     <SELECT NAME="myplugin_select">
>>>>>     <OPTION VALUE="">
>>>>>     <OPTION VALUE="1"> Project 1
>>>>>     <OPTION VALUE="2"> Project 2
>>>>>     <OPTION VALUE="3"> Project 3
>>>>>     </SELECT>
>>>>>     </div>
>>>>>
>>>>>     As you can see, it is very static.
>>>>>
>>>>>     In Clientmyplugin.php I have the following code:
>>>>>
>>>>>     class Clientmyplugin extends ClientPlugin
>>>>>     implements Sessionable, GuiProvider
>>>>>     {
>>>>>
>>>>>         /* here comes your plugin client class definition */
>>>>>
>>>>>     }
>>>>>
>>>>>
>>>>>     In the client.ini.in; I added myplugin to the loadplugins= line
>>>>>
>>>>>     In my customized cartoclient.php I added
>>>>>
>>>>>     {if $myplugin_active|default:''}
>>>>>        {$myplugin}
>>>>>        {/if}
>>>>>
>>>>>     As you can see, I just want cartoclient to load the dropdown when
>>>>> it starts up.
>>>>>
>>>>>     Problems I run in to:
>>>>>
>>>>>     - Setting the activation parameter for a plugin in cartoclient.php
>>>>> is not documented
>>>>>     - A simple method in the client to parse the template to
>>>>> cartoclient.php is not documented
>>>>>
>>>>>     Is there anybody that can help me with these simple steps?
>>>>>           
>>>>     Hi,
>>>>
>>>>     First of all, I think you mean cartoclient.tpl instead of
>>>> cartoclient.php ;)
>>>>
>>>>     A simple methode to parse the template could be something like :
>>>>        /**
>>>>         * @see GuiProvider::renderForm()
>>>>         */
>>>>         public function renderForm(Smarty $template) {
>>>>             // authentification
>>>>             $editRoles = $this->getArrayFromIni('general.allowedRoles',
>>>> true); $allowed = SecurityManager::getInstance()->hasRole($editRoles);
>>>> $smarty = new Smarty_Plugin($this->getCartoclient(), $this);
>>>> $smarty->assign(array('manager_allowed' => $allowed,
>>>> 'layersManagerMessage' => $this->Message));
>>>> $template->assign('layersManager',
>>>>     $smarty->fetch('layersManager.tpl'));
>>>>         }
>>>>     /************************************
>>>>     'layersManager' was the name of the plugin where I took this
>>>> function. 'manager_allowed' and 'layersManagerMessage' are two variable
>>>> you can send to the template file via smarty function  (assign function
>>>> first define some variable you can use into the template file then it
>>>> assign variable to the template file)
>>>>
>>>>     You will need this function :
>>>>         /**
>>>>          * Returns an array from a comma-separated list of a ini
>>>> parameter. * @param string name of ini parameter
>>>>          * @param boolean (default: false) true: returns a simplified
>>>> array * @return array
>>>>          */
>>>>         protected function getArrayFromIni($name, $simple = false) {
>>>>             $data = $this->getConfig()->$name;
>>>>             if (!$data) return array();
>>>>
>>>>             return $this->getArrayFromList($data, $simple);
>>>>         }
>>>>
>>>>     Which allow you to get parameter from your myPlugin.ini file (don't
>>>> seem you need it yet ;)
>>>>
>>>>     Hope this will help you. You can drop an eye to the cw3 plugins to
>>>> get some information. If you read the french, you can drop an eye as
>>>> well to the cartoweb-community?net, documentation chapter, I begin to
>>>> write something about developing a plugin ionto cw3.
>>>>
>>>>     Finally, I don't understand this :
>>>>         
>>>>>     - Setting the activation parameter for a plugin in cartoclient.php
>>>>> is not documented
>>>>>           
>>>>     Regards,
>>>>
>>>>     Y.
>>>>         
>>>     --
>>>
>>>
>>>
>>>
>>>     Milo van der Linden
>>>     skype: milovanderlinden <skype:milovanderlinden?add>
>>>     mlinden at zeelandnet.nl <mailto:mlinden at zeelandnet.nl>
>>>     milovanderlinden at gmail.com <mailto:milovanderlinden at gmail.com>
>>>     milo at 3dsite.nl <mailto:milo at 3dsite.nl>
>>>     http://www.3dsite.nl
>>>
>>>
>>>
>>>     De informatie in dit bericht reflecteert mijn persoonlijke mening
>>>     en niet die van een bedrijf of instantie. Aan de informatie kunnen
>>>     geen rechten worden ontleend. Indien dit bericht onderdeel is van
>>>     een forum, mailing-list of community dan gelden automatisch de bij
>>>     het betreffende medium behorende voorwaarden. The information in
>>>     this message reflects my personal opinion and not that of a
>>>     company or public body. All rights reserved.If this message is
>>>     contained in a mailing-list or community, the rights on the medium
>>>     are automatically adapted.
>>>
>>>    
>>> ------------------------------------------------------------------------
>>> _______________________________________________
>>>     Cartoweb-users mailing list
>>>     Cartoweb-users at lists.maptools.org
>>>     http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>>       
>
>
>
>   


-- 


	

Milo van der Linden
skype: milovanderlinden <skype:milovanderlinden?add>
mlinden at zeelandnet.nl <mailto:mlinden at zeelandnet.nl>
milovanderlinden at gmail.com <mailto:milovanderlinden at gmail.com>
milo at 3dsite.nl <mailto:milo at 3dsite.nl>
http://www.3dsite.nl

	  	

De informatie in dit bericht reflecteert mijn persoonlijke mening en
niet die van een bedrijf of instantie. Aan de informatie kunnen geen
rechten worden ontleend. Indien dit bericht onderdeel is van een forum,
mailing-list of community dan gelden automatisch de bij het betreffende
medium behorende voorwaarden. The information in this message reflects
my personal opinion and not that of a company or public body. All rights
reserved.If this message is contained in a mailing-list or community,
the rights on the medium are automatically adapted.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/cartoweb-users/attachments/20070814/c0f5be70/attachment.html


More information about the Cartoweb-users mailing list