Revize 582
Přidáno uživatelem Michal Kliment před více než 14 roky(ů)
freenetis/trunk/kohana/media/css/address_map.css | ||
---|---|---|
body
|
||
{
|
||
margin: 0px;
|
||
padding: 0px;
|
||
font-family: Arial;
|
||
font-size: 12px;
|
||
text-align: center;
|
||
}
|
||
|
||
h2
|
||
{
|
||
font-size: 40px;
|
||
margin: 25px;
|
||
}
|
||
|
||
a
|
||
{
|
||
border: 0px solid black;
|
||
text-decoration: none;
|
||
}
|
||
.subnet
|
||
{
|
||
border: 1px solid black;
|
||
float:left;
|
||
}
|
||
|
||
#c-box-all
|
||
{
|
||
width: 1960px;
|
||
float: left;
|
||
}
|
||
|
||
#d-box-all
|
||
{
|
||
width: 1960px;
|
||
height: 30px;
|
||
}
|
||
|
||
.c-box
|
||
{
|
||
border-left: 0px;
|
||
border-top: 0px;
|
||
border-right: 0px;
|
||
border-bottom: 0px;
|
||
border-color: black;
|
||
border-style: solid;
|
||
float:left;
|
||
height: 30px;
|
||
width: 30px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
}
|
||
|
||
.d-box
|
||
{
|
||
border-left: 0px;
|
||
border-top: 0px;
|
||
border-right: 0px;
|
||
border-bottom: 0px;
|
||
border-color: black;
|
||
border-style: solid;
|
||
float:left;
|
||
height: 30px;
|
||
width: 30px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
}
|
||
.unused-box
|
||
{
|
||
border-left: 0px;
|
||
border-top: 0px;
|
||
border-right: 0px;
|
||
border-bottom: 0px;
|
||
border-color: #c0c0c0;
|
||
border-style: solid;
|
||
float:left;
|
||
height: 30px;
|
||
width: 30px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
}
|
||
|
||
.used-box
|
||
{
|
||
border-left: 0px;
|
||
border-top: 0px;
|
||
border-right: 0px;
|
||
border-bottom: 0px;
|
||
border-color: black;
|
||
border-style: solid;
|
||
float:left;
|
||
height: 30px;
|
||
width: 30px;
|
||
font-weight: bold;
|
||
text-align: center;
|
||
overflow: hidden;
|
||
color: white;
|
||
}
|
||
|
||
.subnet-name
|
||
{
|
||
vertical-align: middle;
|
||
margin-top: 5px;
|
||
}
|
||
|
||
#footer
|
||
{
|
||
height: 20px;
|
||
width: 100%;
|
||
border: px solid black;
|
||
float: left;
|
||
}
|
freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'additional information' => 'Doplňkové informace',
|
||
'address' => 'Adresa',
|
||
'address of connecting place' => 'Adresa přípojného místa',
|
||
'address map' => 'Adresní mapa',
|
||
'address point detail' => 'Detail adresního bodu',
|
||
'address point has been successfully deleted' => 'Adresní bod byl úspěšně smazán.',
|
||
'address point has been successfully updated' => 'Adresní bod byl úspěšně aktualizován.',
|
freenetis/trunk/kohana/application/helpers/special.php | ||
---|---|---|
}
|
||
return url_lang::base().$pre_url.$new_order_by.'/'.$order_by_direction.'/'.$url_array[6+$url_array_ofset].'/'.$url_array[7+$url_array_ofset];
|
||
}
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Helper to generate rgb code from numbers
|
||
* @param int $r
|
||
* @param int> $g
|
||
* @param int $b
|
||
* @return string
|
||
*/
|
||
public static function RGB($r, $g, $b)
|
||
{
|
||
$r = dechex($r);
|
||
$g = dechex($g);
|
||
$b = dechex($b);
|
||
|
||
if (strlen($r)<2)
|
||
$r = '0'.$r;
|
||
elseif (strlen($r)>2)
|
||
$r = 'ff';
|
||
if (strlen($g)<2)
|
||
$g = '0'.$g;
|
||
elseif (strlen($g)>2)
|
||
$g = 'ff';
|
||
if (strlen($b)<2)
|
||
$b = '0'.$b;
|
||
elseif (strlen($b)>2)
|
||
$b = 'ff';
|
||
|
||
return $r.$g.$b;
|
||
}
|
||
}
|
freenetis/trunk/kohana/application/controllers/subnets.php | ||
---|---|---|
|
||
url::redirect(url_lang::base().'subnets/show_all');
|
||
}
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to draw address map
|
||
*/
|
||
function address_map()
|
||
{
|
||
// access control
|
||
if (!$this->acl_check_view('Devices_Controller', 'subnet'))
|
||
Controller::error(ACCESS);
|
||
|
||
$subnet_model = new Subnet_Model();
|
||
$total_subnets = $subnet_model->count_all_subnets();
|
||
$subnets = $subnet_model->get_all_subnets(0, $total_subnets, 'inet_aton(network_address)');
|
||
|
||
$arr_subnets = array();
|
||
$arr_subnet_lengths = array();
|
||
$background_colors = array();
|
||
|
||
foreach ($subnets as $subnet)
|
||
{
|
||
$network_address_segments = explode('.',$subnet->network_address);
|
||
$netmask_segments = explode('.',$subnet->netmask);
|
||
|
||
$arr_subnets[$network_address_segments[0]][$network_address_segments[1]][$network_address_segments[2]][$network_address_segments[3]] = $subnet;
|
||
$arr_subnet_lengths[$network_address_segments[0]][$network_address_segments[1]][$network_address_segments[2]][$network_address_segments[3]] = (256-$netmask_segments[0])*(256-$netmask_segments[1])*(256-$netmask_segments[2])*(256-$netmask_segments[3]);
|
||
$background_colors[$network_address_segments[0]][$network_address_segments[1]][$network_address_segments[2]][$network_address_segments[3]] = special::RGB(rand(50,150), $network_address_segments[2], $network_address_segments[3]);
|
||
}
|
||
|
||
$view = new View('address_map');
|
||
$view->subnets = $arr_subnets;
|
||
$view->lengths = $arr_subnet_lengths;
|
||
$view->background_colors = $background_colors;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
|
||
/**
|
freenetis/trunk/kohana/application/views/address_map.php | ||
---|---|---|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
<title><?php echo url_lang::lang('texts.Address map') ?> | <?php echo $this->setting->title ?></title>
|
||
<?php echo html::link('media/images/favicon.ico', 'shorcut icon', 'image/x-icon', FALSE); ?>
|
||
<?php echo html::stylesheet('media/css/address_map.css', 'screen') ?>
|
||
<?php echo html::stylesheet('media/css/jquery.autocomplete.css') ?>
|
||
<?php echo isset($other_styles) ? $other_styles : '' ?>
|
||
</head>
|
||
<body <?php echo isset($onload) ? 'onload="'.$onload.'"' : '' ?> >
|
||
<?php
|
||
|
||
foreach ($subnets as $a => $arr_a)
|
||
{
|
||
foreach ($arr_a as $b => $arr_b)
|
||
{
|
||
?>
|
||
<h2><?php echo $a ?>.<?php echo $b ?>.0.0/16</h2>
|
||
|
||
<div id="d-box-all">
|
||
<div class="d-box"></div>
|
||
<?php for ($i=0;$i<256;$i=$i+4): ?>
|
||
<div class="d-box"><?php echo $i ?></div>
|
||
<?php endfor;
|
||
|
||
for ($i=0;$i<256;$i++)
|
||
{?>
|
||
</div>
|
||
|
||
<div id="c-box-all">
|
||
<div class="c-box"><?php echo $i ?></div>
|
||
<?php
|
||
$j = 0;
|
||
while ($j < 256)
|
||
{
|
||
if (isset($arr_b[$i][$j]))
|
||
{?> <a href="<?php echo url_lang::base() ?>subnets/show/<?php echo $arr_b[$i][$j]->id ?>" title="<?php echo $arr_b[$i][$j]->name ?>">
|
||
<div class="used-box" style="border-color: #color; background-color: #<?php echo $background_colors[$a][$b][$i][$j] ?>; width: <?php echo $lengths[$a][$b][$i][$j]*7.5 ?>px">
|
||
<div class="subnet-name"><?php echo $arr_b[$i][$j]->name ?></div>
|
||
</div>
|
||
</a><?php
|
||
$j += $lengths[$a][$b][$i][$j];
|
||
}
|
||
else
|
||
{
|
||
?>
|
||
<div class="unused-box"></div>
|
||
<?php
|
||
$j += 4;
|
||
}
|
||
}
|
||
?>
|
||
|
||
|
||
</div>
|
||
<?php
|
||
}
|
||
?>
|
||
<br clear="all">
|
||
<?php
|
||
}
|
||
}
|
||
?>
|
||
|
||
<div id="footer"></div>
|
||
</body>
|
||
</html>
|
Také k dispozici: Unified diff
Pridana adresni mapa - graficky prehled vsech subnetu.