[Cartoweb-users] Generate dinamically template file

Oliver Christen oliver.christen at camptocamp.com
Thu Mar 27 07:32:29 EDT 2008


the "correct" way to do that is to extend the location plugin and replace 
the function generating/returning the recenter.tpl

<?php

/**
 * Overrides the plugin Location
 */
class ClientLocationExtended extends ClientLocation {

    public function replacePlugin() {
        return 'location';
    }


    protected function drawRecenter() {
        $this->smarty = new Smarty_Plugin($this->getCartoclient(), $this);
        $tplFile = 'recenter.tpl';

        $sm = SecurityManager::getInstance();
        $hasRoleMyrole = $sm->hasRole('testblablabla');
        if ($hasRoleMyrole) {
            $tplFile = 'some_other_recenter.tpl';
        }

        return $this->smarty->fetch($tplFile);
    }

}

?>

make a new locationExtended/client/ folders and create a new file name 
ClientLocationExtended.php
activate that plugin in your client.ini

regards
Oliver


>
> Yes, I want to generate myplugin.tpl file dinamically respect to the role 
> of the user. I did this simply modifying ClientAuth.php and fwrite 
> function (with "w" access).
>
> Thanks a lot!
>
> Fabio
>
>>
>>
>>> Hi!
>>> From my own plugin I want to generate dinamically .tpl file after 
>>> querying a table in the database linked to auth plugin trought
>>> dbSecurityDsn = pgsql://......
>>> dbSecurityQueryUser = "SELECT * FROM operatori WHERE op_login='%s' AND 
>>> op_password='%s'"
>>> dbSecurityQueryRoles = "SELECT cast(id_operatore AS text) FROM operatori 
>>> WHERE op_login='%s'"
>>>
>>> and fill combo values in the template. How can i do it?
>>> I've tried as following:
>>>
>>> My_plugin.tpl file:
>>> <center>
>>> <fieldset><legend>{t}Scegli il Comune{/t}</legend>
>>> <div><b>
>>>
>>>
>>> <select name="exampleRecenterField">
>>> <option value=''>Seleziona...
>>> <option value = "{$value}">{$value}
>>> </select>
>>>
>>> &nbsp;&nbsp;&nbsp;
>>> <!-- <input  value="Vai" type="submit"/> -->
>>> <a href="javascript:doSubmit();"><img src="{r 
>>> type=gfx/layout}xy.gif{/r}" id="refresh_recenter" alt="{t}Recenter{/t}" 
>>> title="{t}Recenter{/t}"></img></a>
>>>
>>>
>>>
>>> </b></div>
>>>
>>>
>>> </center>
>>>
>>>
>>> ClientAuth.php
>>> protected function drawAuth() {
>>>
>>>        $smarty = new Smarty_Plugin($this->getCartoclient(), $this);
>>>        $anonymous = SecurityManager::getInstance()->hasRole(
>>>
>>> SecurityManager::ANONYMOUS_ROLE);
>>>        $smarty->assign('show_login', $anonymous);
>>>        $smarty->assign('show_logout', !$anonymous);
>>>       // My code STARTS
>>>
>>>         $sm = SecurityManager::getInstance();
>>>    $Role = $sm->getRoles();
>>>    $hasRoleMyrole = $sm->hasRole($Role[2]);
>>>       $filename = "$Role[2].tpl";
>>>      $dsn = $this->getConfig()->dbSecurityDsn;
>>>        $db = Utils::getDb($db, $dsn);
>>>        $sql = "select operatori.id_affiliato, affiliati.id_affiliato, 
>>> affiliati.comune_az from operatori, affiliati where 
>>> affiliati.id_affiliato = operatori.id_affiliato and 
>>> operatori.id_operatore=$Role[2]";
>>>        $res = $db->query($sql);
>>>        Utils::checkDbError($res);
>>>        $row =& $res->fetchRow(DB_FETCHMODE_OBJECT);
>>>        $value = $row->comune_az;
>>>        //print_r($Role[2]." ");
>>>        //print_r($value);
>>>
>>> $smarty->fetch('C:/ms4w/apps/cartoweb3/projects/k21/plugins/exampleRecentering/templates/recenter.tpl');
>>>        $smarty->get_template_vars('value');
>>>        //echo $smarty->get_template_vars('value');
>>>        $smarty->assign('value', $value);
>>>        //echo $smarty->get_template_vars('value');
>>>
>>> // END
>>>  return $smarty->fetch('auth.tpl');
>>>    }
>>>
>>>
>>> -- 
>>> Ing. Fabio D'Ovidio
>>>
>>> iQuadro - Informatica e Innovazione s.r.l.
>>> Via C. Pisacane 23, Aversa (CE) - 81031
>>> Web : www.ii2.it
>>> Tel.: 081 197 57 600
>>> mail: fabiodovidio at gmail.com
>>>
>>> _______________________________________________
>>> Cartoweb-users mailing list
>>> Cartoweb-users at lists.maptools.org
>>> http://lists.maptools.org/mailman/listinfo/cartoweb-users
>>>
>>
>>
>
> 



More information about the Cartoweb-users mailing list