[Cartoweb-users] MyFirst Plugin]

Jacolin Yves yjacolin at free.fr
Tue Aug 14 10:48:15 EDT 2007


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



-- 
Yves Jacolin
---
http://softlibre.gloobe.org



More information about the Cartoweb-users mailing list