[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