Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 200

Přidáno uživatelem Jiří Sviták před více než 15 roky(ů)

Snaha pridat mazani rozhrani a kontrolu duplicitnich mac adres. Snaha opravit vadnou editaci ip adres, tez bez uspechu. Opraveny nektere preklady.

Zobrazit rozdíly:

freenetis/trunk/kohana/application/controllers/xls_export.php
<?php
class Xls_Export_Controller extends Controller
{
function index()
{
// requires xls module from library PEAR
require_once(APPPATH.'vendors/Spreadsheet/Excel/Writer.php');
// workbook represents xls file
$workbook = new Spreadsheet_Excel_Writer();
$workbook->send('database.xls');
$workbook->setVersion(8);
// sets xls cells format
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
// worksheet represents sheet in xls file
$worksheet =& $workbook->addWorksheet('Clenove');
//$worksheet->setInputEncoding("UTF-8");
/*
// creates database member model
$member_model = new Member_Model();
$members = $member_model->find_all();
$first = true;
$row = 0;
$line = $member_model->find(0, FALSE);
// goes through columns of header
foreach ($line as $key => $value)
{
$valLen = strlen($value);
// max array stores lenghts of columns in xls sheet
$max[$key] = $valLen;
// writes header
$worksheet->write(0, $col, url_lang::lang('texts.'.$key), $format_bold);
if ($col >= $colCnt-1)
$first = false;
if ($row>=$resultCnt-1)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
// goes through rows of data
foreach ($members as $key => $line)
{
$colCnt = count($line);
$col = 0;
// goes through columns of data and writes them into the sheet
foreach ($line as $key => $value)
{
$valLen = strlen($value);
if ($max[$key] < $valLen)
$max[$key] = $valLen;
// writes data
$worksheet->write($row, $col, $value);
if ($row >= $resultCnt)
$worksheet->setColumn($col, $col, $max[$key]);
$col++;
}
$row++;
}
*/
$workbook->close();
//url::redirect(url_lang::base().'members/show_all');
}
}
?>
freenetis/trunk/kohana/application/controllers/ifaces.php
$grid->order_field('segment_name')->label(url_lang::lang('texts.Segment name'));
$grid->order_field('comment')->label(url_lang::lang('texts.comment'));
if ($this->acl_check_view('Devices_Controller','iface'))
$grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'ifaces/show') ->action(url_lang::lang('texts.Show'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Show'))->url(url_lang::base().'ifaces/show')->action(url_lang::lang('texts.Show'))->class('center');
if ($this->acl_check_edit('Devices_Controller','iface'))
$grid->action_field('id')->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'ifaces/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
//$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url('delete') ->action(url_lang::lang('texts.Delete'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Edit'))->url(url_lang::base().'ifaces/edit')->action(url_lang::lang('texts.Edit'))->class('center');
// to do - access control to delete
$grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'ifaces/delete') ->action(url_lang::lang('texts.Delete'))->class('center');
$grid->datasource( $query );
$this->template->content = $grid;
......
//----- end EDIT --------------------------------------------------------------
//=============================================================================
/**
* Deletes interface. Interface cannot be deleted if there are ip addresses and
* vlan interfaces assigned to this interface.
* still not functional...
* @param $iface_id id of interface to delete
* @return unknown_type
*/
function delete($iface_id)
{
/*
if (isset($iface_id))
{
// gets information from session to know where to return
$ssDevice_id = $this->session->get('ssDevice_id');
$iface = new Iface_Model($iface_id);
$ip_model = new Ip_address_Model();
$vlan_iface_model = new Vlan_iface_Model();
if ($ip_model->get_count($iface->ip_address) > 0)
{
$this->session->set_flash('message', url_lang::lang('texts.Interface still has assigned ip address.'));
}
else
{
$this->session->set_flash('message', url_lang::lang('texts.Interface has been successfully deleted.'));
}
if ($ssDevice_id)
$link_back = url_lang::base().'devices/show/'.$ssDevice_id;
else
$link_back = url_lang::base().'ifaces/show_all';
url::redirect($link_back);
}
else
{
Controller::warning(1);
}
*/
}
/**
* Checks validity of mac address, if already exists in database;
* @param $mac
* @return unknown_type
*/
function valid_mac($input)
{
$iface_model = new IfaceModel();
if ($iface_model->get_count_of_mac($this->input->$method('mac')) > 0)
{
$input->add_error('required', url_lang::lang('texts.MAC address already exists.'));
}
}
}
?>
freenetis/trunk/kohana/application/controllers/members.php
/**
* Export list of members to xls file. Requires library PEAR.
* not functional - it says workbook->close() is not defined (creating empty workbook only)
* looks like it tries to use pear library installed in system instead of our version added to application
* It looks like there is somewhere before <?php tag a space (or spaces).
* When the browser tries to post xls file, this spaces are included in the file.
* The file is corrupted and cannot be opened.
* Original version of script used for going through rows mysql_fetch_array function.
* Better solution than foreach is welcome.
* @return unknown_type
*/
function xls_export()
{
url::redirect(url_lang::base().'xls_export');
exit;
// checks access control
if (!$this->acl_check_view(get_class($this),'members'))
Controller::Error(1);
freenetis/trunk/kohana/application/controllers/ip_addresses.php
$filter=new Table_Form(url_lang::base()."ip_addresses/show_all", "get", array(
new Table_Form_Item('text','IP_address','IP address'),
new Table_Form_Item('text','MAC','MAC'),
new Table_Form_Item('text','MAC','MAC'),
"tr",
new Table_Form_Item('text','segment_name','Segment name'),
new Table_Form_Item('text','device_name','Device name'),
new Table_Form_Item('text','segment_name','Segment name'),
new Table_Form_Item('text','device_name','Device name'),
"tr",
new Table_Form_Item('text','user','User'),
new Table_Form_Item('text','user','User'),
"tr",
"td",
new Table_Form_Item('submit','submit','Filter')
new Table_Form_Item('submit','submit','Filter')
)
);
......
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'selector_min' => 500, // minimum where selector start
'selector_max_multiplier' => 20,
'base_url' => Config::item('locale.lang').'/ip_addresses/show_all/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_ip, // use db count query here of course
'base_url' => Config::item('locale.lang').'/ip_addresses/show_all/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_ip, // use db count query here of course
'items_per_page' => $limit_results, // it may be handy to set defaults for stuff like this in config/pagination.php
'style' => 'classic',
'style' => 'classic',
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
......
$grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'ip_addresses/delete')->action(url_lang::lang('texts.Delete'))->class('center');
$grid->datasource( $query );
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP addresses list');
......
if (!$this->acl_check_view('Devices_Controller','ip_address',$member_id)) Controller::error(1);
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP address detail').' - '.$ip_address->IP_address;
$view->header->menu = Controller::render_menu();
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.IP address detail').' - '.$ip_address->IP_address;
$view->header->menu = Controller::render_menu();
$view->content = new View('show_ip_addresses');
$view->content->ip_address = $ip_address;
$view->content->headline = url_lang::lang('texts.IP address detail').' - '.$ip_address->IP_address;
//$view->content->table_ip_addresses = $grid_ip_addresses;
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->render(TRUE);
} // end of show function
/**
......
$this->form=$form = new Forge(url_lang::base()."ip_addresses/add/", '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$iface_model = new Iface_Model();
......
}
array_multisort($arr_subnets_nets, SORT_NUMERIC, SORT_ASC,
$arr_subnets_masks, SORT_NUMERIC, SORT_ASC,
$arr_subnets_ids, SORT_NUMERIC, SORT_ASC,
$arr_subnets_netnames, SORT_STRING, SORT_ASC);
$arr_subnets_masks, SORT_NUMERIC, SORT_ASC,
$arr_subnets_ids, SORT_NUMERIC, SORT_ASC,
$arr_subnets_netnames, SORT_STRING, SORT_ASC);
$arr_subnets_ips=array_combine($arr_subnets_ids, $arr_subnets_netnames);
//$form->group('')->label(url_lang::lang('texts.IP addresses'));
//$form->radio('iface_type')->label(url_lang::lang('texts.IP address').':')->rules('required|length[3,250]');
if (!$ssIface_id && !$ssVlan_iface_id) {
$form->radio('iface_type')->label(url_lang::lang('texts.Interface type').':')->options(array('iface'=>url_lang::lang('texts.Basic').' &nbsp; ','VLAN'=>url_lang::lang('texts.VLAN')))->default('iface')->onchange('ajax_get_ifaces(this.value)');
}
else {
$form->hidden('iface_type')->value($default);
}
$form->dropdown('iface_id')->label(url_lang::lang('texts.Interface name').':')
->options($arr_ifaces)
->rules('required');
//->class('ajax')->callback(array($this, 'callback_iface_selected'));
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')
->callback(array($this, 'valid_ip'));
//$form->group('')->label(url_lang::lang('texts.IP addresses'));
//$form->radio('iface_type')->label(url_lang::lang('texts.IP address').':')->rules('required|length[3,250]');
if (!$ssIface_id && !$ssVlan_iface_id) {
$form->radio('iface_type')->label(url_lang::lang('texts.Interface type').':')->options(array('iface'=>url_lang::lang('texts.Basic').' &nbsp; ','VLAN'=>url_lang::lang('texts.VLAN')))->default('iface')->onchange('ajax_get_ifaces(this.value)');
}
else {
$form->hidden('iface_type')->value($default);
}
$form->dropdown('iface_id')->label(url_lang::lang('texts.Interface name').':')
->options($arr_ifaces)
->rules('required');
//->class('ajax')->callback(array($this, 'callback_iface_selected'));
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')
->callback(array($this, 'valid_ip'));
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name').':')
->options($arr_subnets_names);
//->class('ajax')->onchange('ajax_get_subnet(this.value)');
$form->group('')->label(url_lang::lang('texts.or'));
$form->dropdown('subnet_id2')->label(url_lang::lang('texts.Select subnet IP').':')
->options($arr_subnets_ips);
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
* @todo Proper Ajax should be implemented - see http://learn.kohanaphp.com/2008/06/17/jquery-and-kohana-unobtrusive-ajax/
*
$form->group('')->label(url_lang::lang('texts.Subnet data'));
$form->input('subnet_name')->label(url_lang::lang('texts.Subnet name').':')->rules('required|length[3,250]')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_network_address')->label(url_lang::lang('texts.Subnet network address').':')->rules('required|valid_ip')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_netmask')->label(url_lang::lang('texts.Subnet netmask').':')->rules('required')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_ospf_area_id')->label(url_lang::lang('texts.OSPF area ID').':')->rules('valid_digit')->callback(array($this, 'callback_subnet_selected'));
*/
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name').':')
->options($arr_subnets_names);
//->class('ajax')->onchange('ajax_get_subnet(this.value)');
$form->group('')->label(url_lang::lang('texts.or'));
$form->dropdown('subnet_id2')->label(url_lang::lang('texts.Select subnet IP').':')
->options($arr_subnets_ips);
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
* @todo Proper Ajax should be implemented - see http://learn.kohanaphp.com/2008/06/17/jquery-and-kohana-unobtrusive-ajax/
*
$form->group('')->label(url_lang::lang('texts.Subnet data'));
$form->input('subnet_name')->label(url_lang::lang('texts.Subnet name').':')->rules('required|length[3,250]')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_network_address')->label(url_lang::lang('texts.Subnet network address').':')->rules('required|valid_ip')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_netmask')->label(url_lang::lang('texts.Subnet netmask').':')->rules('required')->callback(array($this, 'callback_subnet_selected'));
$form->input('subnet_ospf_area_id')->label(url_lang::lang('texts.OSPF area ID').':')->rules('valid_digit')->callback(array($this, 'callback_subnet_selected'));
*/
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
......
$ip->subnet_id = $subnet_id;
}
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
else {
$subnet = new Subnet_Model();
......
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Create new IP address');
$view->header->menu = Controller::render_menu();
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Create new IP address');
$view->header->menu = Controller::render_menu();
$view->content = new View('form');
$view->content->form = $form->html();
$view->content->link_back = $link_back;
$view->content->headline = url_lang::lang('texts.Create new IP address');
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->render(TRUE);
} // end of add function
/**
......
if (!$this->acl_check_edit('Devices_Controller', 'ip_address', $member_id)) Controller::error(1);
$form = new Forge(url_lang::base()."ip_addresses/edit/".$ip_address_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$iface_model = new Iface_Model();
......
}
$form->group('')->label(url_lang::lang('texts.IP addresses'));
if (!$ssIface_id && !$ssVlan_iface_id) {
$form->radio('iface_type')->label(url_lang::lang('texts.Interface type').':')->options(array('iface'=>url_lang::lang('texts.Basic').' &nbsp; ','VLAN'=>url_lang::lang('texts.VLAN')))->default($default)->onchange('ajax_get_ifaces(this.value)');
}
else {
$form->hidden('iface_type')->value($default);
}
$form->dropdown('iface_id')->label(url_lang::lang('texts.Interface name'))->options($arr_ifaces)->rules('required')->selected($selected)->class('ajax')->callback(array($this, 'callback_iface_selected'));
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->rules('required|valid_ip')->value($ip_address->IP_address);
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name'))->options($arr_subnets)->rules('required')->selected($ip_address->subnet_id);
/*$form->input('subnet_name')->label(url_lang::lang('texts.Subnet name').':')->rules('length[3,250]');
$form->input('subnet_network_address')->label(url_lang::lang('texts.Subnet network address').':')->rules('length[3,250]');
$form->input('subnet_netmask')->label(url_lang::lang('texts.Subnet netmask').':')->rules('length[3,250]');
*/
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
if (!$ssIface_id && !$ssVlan_iface_id)
{
$form->radio('iface_type')->label(url_lang::lang('texts.Interface type').':')->options(array('iface'=>url_lang::lang('texts.Basic').' &nbsp; ','VLAN'=>url_lang::lang('texts.VLAN')))->default($default)->onchange('ajax_get_ifaces(this.value)');
}
else
{
$form->hidden('iface_type')->value($default);
}
$form->dropdown('iface_id')->label(url_lang::lang('texts.Interface name'))->options($arr_ifaces)->rules('required');
// old version not functional - callback function callback_iface_selected not defined
//$form->dropdown('iface_id')->label(url_lang::lang('texts.Interface name'))->options($arr_ifaces)->rules('required')->selected($selected)->class('ajax')->callback(array($this, 'callback_iface_selected'));
// new version, not functional, problems with somewhere in callback, cannot debug
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->rules('required|valid_ip')->value($ip_address->IP_address)->callback(array($this, 'valid_ip'));
// old version, functional
//$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->value($ip_address->IP_address)->rules('required|valid_ip');
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name'))->options($arr_subnets)->rules('required')->selected($ip_address->subnet_id);
/*$form->input('subnet_name')->label(url_lang::lang('texts.Subnet name').':')->rules('length[3,250]');
$form->input('subnet_network_address')->label(url_lang::lang('texts.Subnet network address').':')->rules('length[3,250]');
$form->input('subnet_netmask')->label(url_lang::lang('texts.Subnet netmask').':')->rules('length[3,250]');
*/
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
//----- validate form and save data -----------------------------------
if($form->validate())
{
......
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Edit IP address').' - '.$ip_address->IP_address;
$view->header->menu = Controller::render_menu();
$view->header->title = url_lang::lang('texts.Edit IP address').' - '.$ip_address->IP_address;
$view->header->menu = Controller::render_menu();
$view->content = new View('form');
$view->content->form = $form->html();
......
$view->content->headline = url_lang::lang('texts.Edit IP address').' - '.$ip_address->IP_address;
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->render(TRUE);
} // end of edit function
/**
......
if (isset($acc_id))
{
$ssIface_id = $this->session->get('ssIface_id');
$ssVlan_iface_id = $this->session->get('ssVlan_iface_id');
$model_ip = new Ip_address_Model($acc_id);
$iface = $model_ip->iface_id;
$model_ip->delete();
$this->session->set_flash('message', url_lang::lang('texts.IP address has been deleted.'));
//url::redirect(url_lang::base().'ifaces/show/'.(int)$iface);
if ($ssVlan_iface_id)
$link_back = url_lang::base().'vlan_ifaces/show/'.$ssVlan_iface_id;
elseif ($ssIface_id)
$link_back = url_lang::base().'ifaces/show/'.$ssIface_id;
else
$link_back = url_lang::base().'ip_addresses/show_all';
url::redirect($link_back);
$ssIface_id = $this->session->get('ssIface_id');
$ssVlan_iface_id = $this->session->get('ssVlan_iface_id');
$model_ip = new Ip_address_Model($acc_id);
$iface = $model_ip->iface_id;
$model_ip->delete();
$this->session->set_flash('message', url_lang::lang('texts.IP address has been deleted.'));
//url::redirect(url_lang::base().'ifaces/show/'.(int)$iface);
if ($ssVlan_iface_id)
$link_back = url_lang::base().'vlan_ifaces/show/'.$ssVlan_iface_id;
elseif ($ssIface_id)
$link_back = url_lang::base().'ifaces/show/'.$ssIface_id;
else
$link_back = url_lang::base().'ip_addresses/show_all';
url::redirect($link_back);
}
else
{
......
$input->add_error('required', url_lang::lang('texts.Invalid IP address'));
}
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
/**
* Removed by dulik for SVN rev. 98 - does not work with JavaScript disabled
//=============================================================================
//----- AJAX ------------------------------------------------------------------
......
else {
$iface_model = new Iface_Model();
}
$ifaces = $iface_model->select('id','name')->orderby('name')->find_all();
$xml = '<ifaces>';
foreach ($ifaces as $iface)
{
$xml .= '<iface><name>'.$iface->id.'</name><value>'.$iface->name.'</value></iface>';
}
$xml .= '</ifaces>';
header("Content-Type: text/xml");
echo $xml;
$xml = '<ifaces>';
foreach ($ifaces as $iface)
{
$xml .= '<iface><name>'.$iface->id.'</name><value>'.$iface->name.'</value></iface>';
}
$xml .= '</ifaces>';
header("Content-Type: text/xml");
echo $xml;
}
function ajax_check_subnet()
......
if (!(bool)$subnet->OSPF_area_id) $subnet->OSPF_area_id = ' ';
$xml = '<subnet>';
$xml .= '<subnet_id>'.$subnet_id.'</subnet_id>
<name>'.$subnet->name.'</name>
<network_address>'.$subnet->network_address.'</network_address>
<netmask>'.$subnet->netmask.'</netmask>
<OSPF_area_id>'.$subnet->OSPF_area_id.'</OSPF_area_id>';
$xml .= '</subnet>';
header("Content-Type: text/xml");
echo $xml;
$xml = '<subnet>';
$xml .= '<subnet_id>'.$subnet_id.'</subnet_id>
<name>'.$subnet->name.'</name>
<network_address>'.$subnet->network_address.'</network_address>
<netmask>'.$subnet->netmask.'</netmask>
<OSPF_area_id>'.$subnet->OSPF_area_id.'</OSPF_area_id>';
$xml .= '</subnet>';
header("Content-Type: text/xml");
echo $xml;
}
//----- end AJAX --------------------------------------------------------------
//=============================================================================
......
//----- CALLBACKs ------------------------------------------------------------------
//=============================================================================
function callback_iface_selected($input)
{
if ($input->value < 1)
{
$input->add_error('required', url_lang::lang('texts.Select destination account.'));
}
if ($this->iface_type == 'VLAN')
{
$model_iface = new Vlan_iface_Model();
$ifaces = $model_iface->select('id','name')->orderby('name')->find_all();
$arr_ifaces = array();
$arr_ifaces[0] = '----- '.url_lang::lang('texts.select interface').' -----';
foreach ($ifaces as $iface) {
$arr_ifaces[$iface->id] = $iface->name;
}
$input->options($arr_ifaces);
$input->selected($input->value);
}
}
function callback_subnet_selected($input)
{
if ($input->value != '' && $this->subnet_id) $input->readonly(true);
}
{
if ($input->value < 1)
{
$input->add_error('required', url_lang::lang('texts.Select destination account.'));
}
if ($this->iface_type == 'VLAN')
{
$model_iface = new Vlan_iface_Model();
$ifaces = $model_iface->select('id','name')->orderby('name')->find_all();
$arr_ifaces = array();
$arr_ifaces[0] = '----- '.url_lang::lang('texts.select interface').' -----';
foreach ($ifaces as $iface) {
$arr_ifaces[$iface->id] = $iface->name;
}
$input->options($arr_ifaces);
$input->selected($input->value);
}
}
function callback_subnet_selected($input)
{
if ($input->value != '' && $this->subnet_id) $input->readonly(true);
}
*/
//----- end CALLBACKs --------------------------------------------------------------
//----- end CALLBACKs --------------------------------------------------------------
//=============================================================================
}
?>
freenetis/trunk/kohana/application/controllers/devices.php
$filter=new Table_Form(url_lang::base()."devices/show_all", "get", array(
new Table_Form_Item('text','name','Name'),
new Table_Form_Item('text','user','User'),
new Table_Form_Item('text','name','Name'),
new Table_Form_Item('text','user','User'),
"tr",
new Table_Form_Item('select','device_type','Type',$arr_types),
new Table_Form_Item('hidden','member_id','',array($member_id)),
"td",
new Table_Form_Item('submit','submit','Filter')
new Table_Form_Item('select','device_type','Type',$arr_types),
new Table_Form_Item('hidden','member_id','',array($member_id)),
"td",
new Table_Form_Item('submit','submit','Filter')
)
);
......
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'selector_min' => 500, // minimum where selector start
'selector_max_multiplier' => 20,
'base_url' => Config::item('locale.lang').'/devices/show_all/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'base_url' => Config::item('locale.lang').'/devices/show_all/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'items_per_page' => $limit_results, // it may be handy to set defaults for stuff like this in config/pagination.php
'style' => 'classic',
'style' => 'classic',
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
......
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = $filter->view . $grid;
/*
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = $filter->view . $grid;
/*
$view->content->table = $this->template->content;
$view->content->headline = url_lang::lang('texts.Devices list');*/
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->render(TRUE);
} // end of show_all function
/**
......
//'separator' => '<br />-----------',
//'use_paginator' => false,
//'use_selector' => false,
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'selector_min' => 500, // minimum where selector start
'selector_max_multiplier' => 10,
'base_url' => Config::item('locale.lang').'/devices/show_my/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'base_url' => Config::item('locale.lang').'/devices/show_my/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'items_per_page' => $limit_results, // it may be handy to set defaults for stuff like this in config/pagination.php
'style' => 'classic',
'style' => 'classic',
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results
......
$grid->order_field('u_name')->label(url_lang::lang('texts.user'));
$grid->order_field('iface_count')->label(url_lang::lang('texts.ifaces'))->class('center');
$grid->order_field('port_count')->label(url_lang::lang('texts.ports'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'devices/show') ->action(url_lang::lang('texts.Show'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'devices/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url('delete') ->action(url_lang::lang('texts.Delete'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Show'))->url(url_lang::base().'devices/show')->action(url_lang::lang('texts.Show'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Edit'))->url(url_lang::base().'devices/edit')->action(url_lang::lang('texts.Edit'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'devices/delete')->action(url_lang::lang('texts.Delete'))->class('center');
$grid->datasource( $query );
$this->template->content = $grid;
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->content->table = $this->template->content;
$view->content->headline = url_lang::lang('texts.Devices list');
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->render(TRUE);
} // end of show_my function
......
//'separator' => '&nbsp;&nbsp;-&nbsp;&nbsp;',
//'use_paginator' => false,
//'use_selector' => false,
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'current' => $limit_results, // current selected 'records_per_page' value
'selector_increace' => 500, // increace
'selector_min' => 500, // minimum where selector start
'selector_max_multiplier' => 10,
'base_url' => Config::item('locale.lang').'/devices/show_by_member/'.$member_id.'/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'base_url' => Config::item('locale.lang').'/devices/show_by_member/'.$member_id.'/'.$limit_results.'/'.$order_by.'/'.$order_by_direction ,
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
'total_items' => $total_devices, // use db count query here of course
'items_per_page' => $limit_results, // it may be handy to set defaults for stuff like this in config/pagination.php
'style' => 'classic',
'style' => 'classic',
'order_by' => $order_by,
'order_by_direction' => $order_by_direction,
'limit_results' => $limit_results,
......
//$grid->order_field('port_count')->label(url_lang::lang('texts.ports'))->class('center');
if ($this->acl_check_view(get_class($this),'devices',$member_id))
$grid->action_field('id')->label(url_lang::lang('texts.Device')) ->url(url_lang::base().'devices/show') ->action(url_lang::lang('texts.Show'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Device'))->url(url_lang::base().'devices/show')->action(url_lang::lang('texts.Show'))->class('center');
if ($this->acl_check_edit(get_class($this),'devices',$member_id))
$grid->action_field('id')->label(url_lang::lang('texts.Device')) ->url(url_lang::base().'devices/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
//$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url('delete') ->action(url_lang::lang('texts.Delete'))->class('center');
$grid->action_field('id')->label(url_lang::lang('texts.Device'))->url(url_lang::base().'devices/edit')->action(url_lang::lang('texts.Edit'))->class('center');
// to do - access control to delete
// $grid->action_field('id')->label(url_lang::lang('texts.Delete'))->url(url_lang::base().'devices/delete')->action(url_lang::lang('texts.Delete'))->class('center');
$grid->datasource( $query );
$this->template->content = $grid;
$view = new View('template');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->header = new View('base/header');
$view->header->title = url_lang::lang('texts.Devices list');
$view->header->menu = Controller::render_menu();
$view->content = new View('show_all');
$view->content->table = $this->template->content;
$view->content->headline = url_lang::lang('texts.Devices list of member').' '.$member->name;
$view->footer = new View('base/footer');
$view->render(TRUE);
$view->render(TRUE);
}
......
$grid->action_field('id')->label(url_lang::lang('texts.Show')) ->url(url_lang::base().'ifaces/show') ->action(url_lang::lang('texts.Show'))->class('center');
if ($this->acl_check_edit(get_class($this),'iface',$member_id))
$grid->action_field('id')->label(url_lang::lang('texts.Edit')) ->url(url_lang::base().'ifaces/edit') ->action(url_lang::lang('texts.Edit'))->class('center');
//$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url('delete') ->action(url_lang::lang('texts.Delete'))->class('center');;
$grid->datasource( $query );
// to do - access control
$grid->action_field('id')->label(url_lang::lang('texts.Delete')) ->url(url_lang::base().'ifaces/delete') ->action(url_lang::lang('texts.Delete'))->class('center');;
$grid->datasource($query);
$grid_ifaces = $grid;
unset($grid);
......
$submenu .= html::anchor(url_lang::base().'devices/add/', url_lang::lang('texts.add new VLAN iface')).' | ';
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = new View('show_device');
//$view->content->submenu = $submenu;
......
}
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Device detail').' - '.$device->name;
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Device detail').' - '.$device->name;
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
}
//----- end SHOW --------------------------------------------------------------
//=============================================================================
......
if (!$this->acl_check_new(get_class($this),'devices',$ssMember_id)) Controller::error(1);
$form = new Forge(url_lang::base()."devices/add", '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic data'));
$form->group('')->label(url_lang::lang('texts.Basic data'));
$model_user = new User_Model;
......
asort($types);
$form->dropdown('user_id')->label(url_lang::lang('texts.user'))->options($arr_users)->rules('required');
$form->input('name')->label(url_lang::lang('texts.Device name').':')->rules('required|length[3,250]');
$form->dropdown('type')->label(url_lang::lang('texts.Type'))->options($types)->rules('required');
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1');
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]');
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]');
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]');
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]');
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]');
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]');
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1');
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]');
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]');
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]');
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]');
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]');
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]');
$form->dropdown('first_engineer_id')->label(url_lang::lang('texts.engineer').' 1:')->options($arr_engineers)->rules('required')->selected($this->session->get('user_id'));
$form->dropdown('second_engineer_id')->label(url_lang::lang('texts.engineer').' 2:')->options($arr_engineers);
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
//----- validate form and save data -----------------------------------
......
}
//----- end validate --------------------------------------------------
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = new View('form');
$view->content->form = $form->html();
if($ssMember_id)
{
$view->content->link_back = html::anchor(url_lang::base().'devices/show_by_member/'.$ssMember_id, url_lang::lang('texts.Back to devices list of this member'));
......
$view->content->link_back = html::anchor(url_lang::base().'devices/show_all/', url_lang::lang('texts.Back to devices list'));
$view->content->headline = url_lang::lang('texts.Create new devices');
}
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Add new device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Add new device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
}
//----- end ADD ---------------------------------------------------------------
//=============================================================================
......
if (!$this->acl_check_edit(get_class($this),'devices',$device->user->member_id)) Controller::error(1);
$form = new Forge(url_lang::base()."devices/edit/".$device_id, '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Basic data'));
$form->group('')->label(url_lang::lang('texts.Basic data'));
$model_user = new User_Model;
$users = $model_user->select('id','name','surname','login')->orderby('id')->find_all();
......
$enum_type_model = new Enum_type_Model();
$types = $enum_type_model->get_values(Enum_type_Model::id_type_of_device);
$form->dropdown('user_id')->label(url_lang::lang('texts.user'))->options($arr_users)->rules('required')->selected($device->user_id);
$form->input('name')->label(url_lang::lang('texts.Device name').':')->rules('required|length[3,250]')->value($device->name);
$form->dropdown('type')->label(url_lang::lang('texts.type'))->options($types)->rules('required')->selected($device->type);
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1')->checked($device->PPPoE_logging_in);
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]')->value($device->login);
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]')->value($device->password);
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]')->value($device->GPS);
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]')->value($device->location_address);
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]')->value($device->location_details);
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]')->value($device->comment);
// creates dropdowns for editing engineers; to do - will be solved by new table of device engineers
/*
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1')->checked($device->PPPoE_logging_in);
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]')->value($device->login);
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]')->value($device->password);
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]')->value($device->GPS);
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]')->value($device->location_address);
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]')->value($device->location_details);
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]')->value($device->comment);
// creates dropdowns for editing engineers; to do - will be solved by new table of device engineers
/*
$form->dropdown('first_engineer_id')->label(url_lang::lang('texts.engineer').' 1:')->options($arr_engineers)->rules('required')->selected($this->session->get('user_id'));
$form->dropdown('second_engineer_id')->label(url_lang::lang('texts.engineer').' 2:')->options($arr_engineers);
*/
$form->submit('submit')->value(url_lang::lang('texts.update'));
special::required_forge_style($form, ' *', 'required');
*/
$form->submit('submit')->value(url_lang::lang('texts.update'));
special::required_forge_style($form, ' *', 'required');
//----- validate form and save data -----------------------------------
if($form->validate())
{
......
url::redirect(url_lang::base().'devices/show/'.$device_model->id);
exit;
}
}
//----- end validate --------------------------------------------------
} // end of validation
$view = new View('template');
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->header = new View('base/header');
// $view->content = new View('content', $data);
$view->content = new View('form');
$view->content->form = $form->html();
$view->content->link_back = html::anchor(url_lang::base().'devices/show_all/', url_lang::lang('texts.Back to devices list'));
$view->content->headline = url_lang::lang('texts.Edit device').': '.$device->name;
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Edit device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
$view->footer = new View('base/footer');
$view->header->title = url_lang::lang('texts.Edit device');
$view->header->menu = Controller::render_menu();
$view->render(TRUE);
} // end of function edit
/**
......
if (!$this->acl_check_new(get_class($this),'devices',$ssMember_id)) Controller::error(1);
$form = new Forge(url_lang::base()."devices/add_whole", '', 'POST', array('id' => 'article_form'));
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
$form->group('')->label(url_lang::lang('texts.Device'));
$form->group('')->label(url_lang::lang('texts.Device'));
$model_user = new User_Model;
......
$types[0] = '----- '.url_lang::lang('texts.select type').' -----';
asort($types);
// models for adding interface
//$segment_model = new Segment_Model();
//$iface_model = new Iface_Model();
$subnet_model = new Subnet_Model();
$subnets = $subnet_model
->select("id","name","network_address as net_str",
......
$arr_subnets_ids[]=$subnet->id;
}
array_multisort($arr_subnets_nets, SORT_NUMERIC, SORT_ASC,
$arr_subnets_masks, SORT_NUMERIC, SORT_ASC,
$arr_subnets_ids, SORT_NUMERIC, SORT_ASC,
$arr_subnets_netnames, SORT_STRING, SORT_ASC);
$segment_model = new Segment_Model();
$segments = $segment_model->select(array('id','name'))->orderby('name')->find_all();
$arr_segments[0] = '----- '.url_lang::lang('texts.select segment').' -----';
foreach ($segments as $segment)
{
$arr_segments[$segment->id] = $segment->name;
}
// form
$arr_subnets_masks, SORT_NUMERIC, SORT_ASC,
$arr_subnets_ids, SORT_NUMERIC, SORT_ASC,
$arr_subnets_netnames, SORT_STRING, SORT_ASC);
$segment_model = new Segment_Model();
$segments = $segment_model->select(array('id','name'))->orderby('name')->find_all();
$arr_segments[0] = '----- '.url_lang::lang('texts.select segment').' -----';
foreach ($segments as $segment)
{
$arr_segments[$segment->id] = $segment->name;
}
// form
// adding device
$form->dropdown('user_id')->label(url_lang::lang('texts.user'))->options($arr_users)->rules('required');
$form->dropdown('user_id')->label(url_lang::lang('texts.user'))->options($arr_users)->rules('required');
$form->input('name')->label(url_lang::lang('texts.Device name').':')->rules('required|length[2,250]');
$form->dropdown('type')->label(url_lang::lang('texts.Type'))->options($types)->rules('required');
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1');
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]');
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]');
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]');
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]');
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]');
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]');
$form->checkbox('PPPoE_logging_in')->label(url_lang::lang('texts.PPPoE'))->value('1');
$form->input('login')->label(url_lang::lang('texts.username').':')->rules('length[0,250]');
$form->input('password')->label(url_lang::lang('texts.password').':')->rules('length[0,250]');
$form->input('GPS')->label(url_lang::lang('texts.GPS').':')->rules('length[3,100]');
$form->input('location_address')->label(url_lang::lang('texts.location address').':')->rules('length[3,254]');
$form->input('location_details')->label(url_lang::lang('texts.location details').':')->rules('length[3,254]');
$form->textarea('comment')->label(url_lang::lang('texts.comment').':')->rules('length[0,254]');
$form->dropdown('first_engineer_id')->label(url_lang::lang('texts.engineer').' 1:')->options($arr_engineers)->rules('required')->selected($this->session->get('user_id'));
$form->dropdown('second_engineer_id')->label(url_lang::lang('texts.engineer').' 2:')->options($arr_engineers);
// adding interface
$form->group('')->label(url_lang::lang('texts.Iface'));
$form->input('MAC')->label(url_lang::lang('texts.MAC').':')->rules('required|length[3,250]');
$form->dropdown('segment_id')->label(url_lang::lang('texts.Segment name'))->options($arr_segments)->rules('required');
$form->input('MAC')->label(url_lang::lang('texts.MAC').':')->rules('required|length[3,250]');
$form->dropdown('segment_id')->label(url_lang::lang('texts.Segment name'))->options($arr_segments)->rules('required');
// adding ip address
$form->group('')->label(url_lang::lang('texts.IP address'));
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->rules('required|length[7,15]')
->callback(array($this, 'valid_ip'));
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name').':')->rules('required')
->options($arr_subnets_names);
$form->group('')->label(url_lang::lang('texts.IP address'));
$form->input('IP_address')->label(url_lang::lang('texts.IP address').':')->rules('required|length[7,15]')
->callback(array($this, 'valid_ip'));
$form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet name').':')->rules('required')
->options($arr_subnets_names);
// submit button
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
$form->submit('submit')->value(url_lang::lang('texts.Save'));
special::required_forge_style($form, ' *', 'required');
// validates form and saves data
if($form->validate())
......
unset($form_data);
// was everything saved successfully?
// has been everything saved successfully?
if ($device_saved && $device_engineer_saved && $iface_model_saved && $ip_address_saved)
{
$this->session->set_flash('message', url_lang::lang('texts.Device is successfully saved.'));
freenetis/trunk/kohana/application/views/show_device.php
<td><?php echo $device->GPS ?> <?php echo html::anchor('http://www.mapy.cz/#z=14@st=s@sss=1@mm=FP@ssq=loc:'.$device->GPS, url_lang::lang('texts.Map'), 'target="_blank" title="mapy.cz"') ?></td>
</tr>
<tr>
<th><?php echo url_lang::lang('texts.Location adrress') ?></th>
<th><?php echo url_lang::lang('texts.Location address') ?></th>
<td><?php echo $device->location_address ?></td>
</tr>
<tr>

Také k dispozici: Unified diff