H&D tasklist and some visual changes
Former-commit-id: d9130ec520b0c23a9cf42ce62aae6c3d2432649b
This commit is contained in:
parent
0f375d6a76
commit
5093094d7d
|
@ -30,6 +30,9 @@ function get_wiz_class($str)
|
|||
case 'hd':
|
||||
return 'HostDevices';
|
||||
|
||||
case 'tasklist':
|
||||
return 'DiscoveryTaskList';
|
||||
|
||||
default:
|
||||
// Ignore.
|
||||
return null;
|
||||
|
@ -37,6 +40,10 @@ function get_wiz_class($str)
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* CLASS LOADER.
|
||||
*/
|
||||
|
||||
// Dynamic class loader.
|
||||
$classes = glob($config['homedir'].'/godmode/wizards/*.class.php');
|
||||
foreach ($classes as $classpath) {
|
||||
|
@ -76,10 +83,12 @@ if ($classname_selected === null) {
|
|||
$wiz_data = $obj->load();
|
||||
?>
|
||||
|
||||
<li>
|
||||
<li class="discovery">
|
||||
<a href="<?php echo $wiz_data['url']; ?>">
|
||||
<img src="<?php echo 'images/wizard/csv_image.svg'; ?>" alt="<?php echo $classname; ?>" id="imagen">
|
||||
<br><label id="text_wizard"><?php echo $wiz_data['label']; ?></label>
|
||||
<div class="data_container">
|
||||
<?php html_print_image($wiz_data['icon']); ?>
|
||||
<br><label id="text_wizard"><?php echo io_safe_output($wiz_data['label']); ?></label>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
|
|
@ -0,0 +1,297 @@
|
|||
<?php
|
||||
/**
|
||||
* Extension to schedule tasks on Pandora FMS Console
|
||||
*
|
||||
* @category Wizard
|
||||
* @package Pandora FMS
|
||||
* @subpackage Host&Devices
|
||||
* @version 1.0.0
|
||||
* @license See below
|
||||
*
|
||||
* ______ ___ _______ _______ ________
|
||||
* | __ \.-----.--.--.--| |.-----.----.-----. | ___| | | __|
|
||||
* | __/| _ | | _ || _ | _| _ | | ___| |__ |
|
||||
* |___| |___._|__|__|_____||_____|__| |___._| |___| |__|_|__|_______|
|
||||
*
|
||||
* ============================================================================
|
||||
* Copyright (c) 2005-2019 Artica Soluciones Tecnologicas
|
||||
* Please see http://pandorafms.org for full contribution list
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation for version 2.
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
require_once __DIR__.'/Wizard.main.php';
|
||||
require_once $config['homedir'].'/include/functions_users.php';
|
||||
|
||||
/**
|
||||
* Defined as wizard to guide user to explore running tasks.
|
||||
*/
|
||||
class DiscoveryTaskList extends Wizard
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param integer $page Start page, by default 0.
|
||||
* @param string $msg Custom default mesage.
|
||||
* @param string $icon Custom icon.
|
||||
* @param string $label Custom label.
|
||||
*
|
||||
* @return class HostDevices
|
||||
*/
|
||||
public function __construct(
|
||||
int $page=0,
|
||||
string $msg='Default message. Not set.',
|
||||
string $icon='images/wizard/tasklist.svg',
|
||||
string $label='Task list'
|
||||
) {
|
||||
$this->setBreadcrum([]);
|
||||
|
||||
$this->task = [];
|
||||
$this->msg = $msg;
|
||||
$this->icon = $icon;
|
||||
$this->label = __($label);
|
||||
$this->page = $page;
|
||||
$this->url = ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=tasklist'
|
||||
);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements run method.
|
||||
*
|
||||
* @return mixed Returns null if wizard is ongoing. Result if done.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
// Load styles.
|
||||
parent::run();
|
||||
return $this->showList();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Implements load method.
|
||||
*
|
||||
* @return mixed Skeleton for button.
|
||||
*/
|
||||
public function load()
|
||||
{
|
||||
return [
|
||||
'icon' => $this->icon,
|
||||
'label' => $this->label,
|
||||
'url' => $this->url,
|
||||
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Show complete list of running tasks.
|
||||
*
|
||||
* @return boolean Success or not.
|
||||
*/
|
||||
public function showList()
|
||||
{
|
||||
global $config;
|
||||
|
||||
check_login();
|
||||
|
||||
if (! check_acl($config['id_user'], 0, 'PM')) {
|
||||
db_pandora_audit(
|
||||
'ACL Violation',
|
||||
'Trying to access recon task viewer'
|
||||
);
|
||||
include 'general/noaccess.php';
|
||||
return;
|
||||
}
|
||||
|
||||
// Get all recon servers
|
||||
$servers = db_get_all_rows_sql('SELECT * FROM tserver WHERE server_type = 3');
|
||||
if ($servers === false) {
|
||||
$servers = [];
|
||||
ui_print_error_message(__('Discovery Server is disabled'));
|
||||
return;
|
||||
} else {
|
||||
$recon_task = db_get_all_rows_sql('SELECT * FROM trecon_task');
|
||||
if ($recon_task === false) {
|
||||
ui_print_page_header(__('Recon View'), 'images/op_recon.png', false, '', false);
|
||||
include_once $config['homedir'].'/general/firts_task/recon_view.php';
|
||||
return;
|
||||
} else {
|
||||
include_once $config['homedir'].'/include/functions_graph.php';
|
||||
include_once $config['homedir'].'/include/functions_servers.php';
|
||||
include_once $config['homedir'].'/include/functions_network_profiles.php';
|
||||
|
||||
$modules_server = 0;
|
||||
$total_modules = 0;
|
||||
$total_modules_data = 0;
|
||||
|
||||
// --------------------------------
|
||||
// FORCE A RECON TASK
|
||||
// --------------------------------
|
||||
if (check_acl($config['id_user'], 0, 'PM')) {
|
||||
if (isset($_GET['force'])) {
|
||||
$id = (int) get_parameter_get('force', 0);
|
||||
servers_force_recon_task($id);
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($servers as $serverItem) {
|
||||
$id_server = $serverItem['id_server'];
|
||||
$server_name = servers_get_name($id_server);
|
||||
$recon_tasks = db_get_all_rows_field_filter('trecon_task', 'id_recon_server', $id_server);
|
||||
|
||||
// Show network tasks for Recon Server
|
||||
if ($recon_tasks === false) {
|
||||
$recon_tasks = [];
|
||||
}
|
||||
|
||||
$table = new StdClass();
|
||||
$table->cellpadding = 4;
|
||||
$table->cellspacing = 4;
|
||||
$table->width = '100%';
|
||||
$table->class = 'databox data';
|
||||
$table->head = [];
|
||||
$table->data = [];
|
||||
$table->align = [];
|
||||
$table->headstyle = [];
|
||||
for ($i = 0; $i < 9; $i++) {
|
||||
$table->headstyle[$i] = 'text-align: left;';
|
||||
}
|
||||
|
||||
$table->head[0] = __('Force');
|
||||
$table->align[0] = 'left';
|
||||
|
||||
$table->head[1] = __('Task name');
|
||||
$table->align[1] = 'left';
|
||||
|
||||
$table->head[2] = __('Interval');
|
||||
$table->align[2] = 'left';
|
||||
|
||||
$table->head[3] = __('Network');
|
||||
$table->align[3] = 'left';
|
||||
|
||||
$table->head[4] = __('Status');
|
||||
$table->align[4] = 'left';
|
||||
|
||||
$table->head[5] = __('Template');
|
||||
$table->align[5] = 'left';
|
||||
|
||||
$table->head[6] = __('Progress');
|
||||
$table->align[6] = 'left';
|
||||
|
||||
$table->head[7] = __('Updated at');
|
||||
$table->align[7] = 'left';
|
||||
|
||||
$table->head[8] = __('Edit');
|
||||
$table->align[8] = 'left';
|
||||
|
||||
foreach ($recon_tasks as $task) {
|
||||
$data = [];
|
||||
|
||||
if ($task['disabled'] == 0) {
|
||||
$data[0] = '<a href="index.php?sec=estado&sec2=operation/servers/recon_view&server_id='.$id_server.'&force='.$task['id_rt'].'">';
|
||||
$data[0] .= html_print_image('images/target.png', true, ['title' => __('Force')]);
|
||||
$data[0] .= '</a>';
|
||||
} else {
|
||||
$data[0] = '';
|
||||
}
|
||||
|
||||
$data[1] = '<b>'.$task['name'].'</b>';
|
||||
|
||||
$data[2] = human_time_description_raw($task['interval_sweep']);
|
||||
|
||||
if ($task['id_recon_script'] == 0) {
|
||||
$data[3] = $task['subnet'];
|
||||
} else {
|
||||
$data[3] = '-';
|
||||
}
|
||||
|
||||
if ($task['status'] <= 0) {
|
||||
$data[4] = __('Done');
|
||||
} else {
|
||||
$data[4] = __('Pending');
|
||||
}
|
||||
|
||||
if ($task['id_recon_script'] == 0) {
|
||||
// Network recon task
|
||||
$data[5] = html_print_image('images/network.png', true, ['title' => __('Network recon task')]).' ';
|
||||
$data[5] .= network_profiles_get_name($task['id_network_profile']);
|
||||
} else {
|
||||
// APP recon task
|
||||
$data[5] = html_print_image('images/plugin.png', true).' ';
|
||||
$data[5] .= db_get_sql(sprintf('SELECT name FROM trecon_script WHERE id_recon_script = %d', $task['id_recon_script']));
|
||||
}
|
||||
|
||||
if ($task['status'] <= 0 || $task['status'] > 100) {
|
||||
$data[6] = '-';
|
||||
} else {
|
||||
$data[6] = progress_bar($task['status'], 100, 20, __('Progress').':'.$task['status'].'%', 1);
|
||||
}
|
||||
|
||||
$data[7] = ui_print_timestamp($task['utimestamp'], true);
|
||||
|
||||
if (check_acl($config['id_user'], $task['id_group'], 'PM')) {
|
||||
$data[8] = '<a href="'.ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery&wiz=hd&mode=netscan&page=0&task='.$task['id_rt']
|
||||
).'">'.html_print_image(
|
||||
'images/wrench_orange.png',
|
||||
true
|
||||
).'</a>';
|
||||
} else {
|
||||
$data[8] = '';
|
||||
}
|
||||
|
||||
array_push($table->data, $data);
|
||||
}
|
||||
|
||||
if (empty($table->data)) {
|
||||
echo '<div class="nf">'.__('Server').' '.$server_name.' '.__('has no recon tasks assigned').'</div>';
|
||||
} else {
|
||||
html_print_table($table);
|
||||
}
|
||||
|
||||
unset($table);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$form = [
|
||||
'form' => [
|
||||
'method' => 'POST',
|
||||
'action' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
],
|
||||
'inputs' => [
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'submit',
|
||||
'label' => __('Go back'),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub cancel"',
|
||||
'return' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->printForm($form);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -31,56 +31,12 @@ require_once $config['homedir'].'/include/functions_users.php';
|
|||
enterprise_include('include/class/CSVImportAgents.class.php');
|
||||
|
||||
/**
|
||||
* Undocumented class
|
||||
* Wizard section Host&devices.
|
||||
* Provides classic recon task creation.
|
||||
* In enterprise environments, provides also CSV agent import features.
|
||||
*/
|
||||
class HostDevices extends Wizard
|
||||
{
|
||||
// CSV constants.
|
||||
const HDW_CSV_NOT_DATA = 0;
|
||||
const HDW_CSV_DUPLICATED = 0;
|
||||
const HDW_CSV_GROUP_EXISTS = 0;
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $values = [];
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
public $result;
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
public $msg;
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
public $icon;
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
public $label;
|
||||
|
||||
/**
|
||||
* Undocumented variable
|
||||
*
|
||||
* @var [type]
|
||||
*/
|
||||
public $url;
|
||||
|
||||
/**
|
||||
* Stores all needed parameters to create a recon task.
|
||||
|
@ -91,7 +47,7 @@ class HostDevices extends Wizard
|
|||
|
||||
|
||||
/**
|
||||
* Undocumented function.
|
||||
* Constructor.
|
||||
*
|
||||
* @param integer $page Start page, by default 0.
|
||||
* @param string $msg Mensajito.
|
||||
|
@ -103,7 +59,7 @@ class HostDevices extends Wizard
|
|||
public function __construct(
|
||||
int $page=0,
|
||||
string $msg='Default message. Not set.',
|
||||
string $icon='hostDevices.png',
|
||||
string $icon='images/wizard/hostdevices.svg',
|
||||
string $label='Host & Devices'
|
||||
) {
|
||||
$this->setBreadcrum([]);
|
||||
|
@ -122,9 +78,9 @@ class HostDevices extends Wizard
|
|||
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
* Run wizard manager.
|
||||
*
|
||||
* @return void
|
||||
* @return mixed Returns null if wizard is ongoing. Result if done.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
|
@ -684,6 +640,7 @@ class HostDevices extends Wizard
|
|||
// XXX: Could be improved validating inputs before continue (JS)
|
||||
// Print NetScan page 0.
|
||||
$this->printForm($form);
|
||||
$this->printGoBackButton();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,41 @@ class Wizard
|
|||
*/
|
||||
public $page;
|
||||
|
||||
/**
|
||||
* Target icon to be shown in discovery wizard list.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $icon;
|
||||
|
||||
/**
|
||||
* Target label to be shown in discovery wizard list.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $label;
|
||||
|
||||
/**
|
||||
* This wizard's url.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $url;
|
||||
|
||||
/**
|
||||
* Result of wizard execution (0 - ok, 1 - not ok).
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $result;
|
||||
|
||||
/**
|
||||
* Message to be delivered to user.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $msg;
|
||||
|
||||
|
||||
/**
|
||||
* Setter for breadcrum
|
||||
|
@ -285,13 +320,13 @@ class Wizard
|
|||
);
|
||||
|
||||
case 'submit':
|
||||
return html_print_submit_button(
|
||||
return '<div class="action-buttons" style="width: 100%">'.html_print_submit_button(
|
||||
((isset($data['label']) === true) ? $data['label'] : 'OK'),
|
||||
((isset($data['name']) === true) ? $data['name'] : ''),
|
||||
((isset($data['disabled']) === true) ? $data['disabled'] : false),
|
||||
((isset($data['attributes']) === true) ? $data['attributes'] : ''),
|
||||
((isset($data['return']) === true) ? $data['return'] : false)
|
||||
);
|
||||
).'</div>';
|
||||
|
||||
case 'checkbox':
|
||||
return html_print_checkbox(
|
||||
|
@ -316,6 +351,37 @@ class Wizard
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prints a go back button redirecting to main page.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function printGoBackButton()
|
||||
{
|
||||
$form = [
|
||||
'form' => [
|
||||
'method' => 'POST',
|
||||
'action' => ui_get_full_url(
|
||||
'index.php?sec=gservers&sec2=godmode/servers/discovery'
|
||||
),
|
||||
],
|
||||
'inputs' => [
|
||||
[
|
||||
'arguments' => [
|
||||
'name' => 'submit',
|
||||
'label' => __('Go back'),
|
||||
'type' => 'submit',
|
||||
'attributes' => 'class="sub cancel"',
|
||||
'return' => true,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$this->printForm($form);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Print a block of inputs.
|
||||
*
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
||||
<path d="M 17.660156 4 C 16.320156 4 15.059141 4.5209375 14.119141 5.4609375 L 5.4609375 14.119141 C 4.5209375 15.069141 4 16.320156 4 17.660156 L 4 57 C 4 58.65 5.35 60 7 60 L 47 60 C 48.65 60 50 58.65 50 57 L 50 46 L 58 46 C 59.1 46 60 45.1 60 44 L 60 24 C 60 22.9 59.1 22 58 22 L 50 22 L 50 7 C 50 5.35 48.65 4 47 4 L 17.660156 4 z M 18 6 L 47 6 C 47.55 6 48 6.45 48 7 L 48 22 L 16 22 C 14.9 22 14 22.9 14 24 L 14 44 C 14 45.1 14.9 46 16 46 L 48 46 L 48 57 C 48 57.55 47.55 58 47 58 L 7 58 C 6.45 58 6 57.55 6 57 L 6 18 L 15 18 C 16.654 18 18 16.654 18 15 L 18 6 z M 16 6.4980469 L 16 15 C 16 15.552 15.552 16 15 16 L 6.5019531 16 C 6.6119531 15.834 6.7388594 15.679063 6.8808594 15.539062 L 15.539062 6.8808594 C 15.681062 6.7368594 15.836 6.6080469 16 6.4980469 z M 16 24 L 48 24 L 50 24 L 58 24 L 58 44 L 50 44 L 48 44 L 16 44 L 16 24 z M 27 28 C 25.346 28 24 29.346 24 31 L 24 37 C 24 38.654 25.346 40 27 40 L 29 40 C 30.654 40 32 38.654 32 37 C 32 36.447 31.553 36 31 36 C 30.447 36 30 36.447 30 37 C 30 37.552 29.552 38 29 38 L 27 38 C 26.448 38 26 37.552 26 37 L 26 31 C 26 30.448 26.448 30 27 30 L 29 30 C 29.552 30 30 30.448 30 31 C 30 31.553 30.447 32 31 32 C 31.553 32 32 31.553 32 31 C 32 29.346 30.654 28 29 28 L 27 28 z M 37 28 C 35.346 28 34 29.346 34 31 L 34 32 C 34 33.654 35.346 35 37 35 L 39 35 C 39.552 35 40 35.448 40 36 L 40 37 C 40 37.552 39.552 38 39 38 L 37 38 C 36.448 38 36 37.552 36 37 C 36 36.447 35.553 36 35 36 C 34.447 36 34 36.447 34 37 C 34 38.654 35.346 40 37 40 L 39 40 C 40.654 40 42 38.654 42 37 L 42 36 C 42 34.346 40.654 33 39 33 L 37 33 C 36.448 33 36 32.552 36 32 L 36 31 C 36 30.448 36.448 30 37 30 L 39 30 C 39.552 30 40 30.448 40 31 C 40 31.553 40.447 32 41 32 C 41.553 32 42 31.553 42 31 C 42 29.346 40.654 28 39 28 L 37 28 z M 45.109375 28.005859 C 44.980234 27.991641 44.845391 28.003719 44.712891 28.042969 C 44.183891 28.201969 43.884969 28.759109 44.042969 29.287109 L 47.042969 39.287109 C 47.169969 39.710109 47.559 40 48 40 C 48.441 40 48.830031 39.710109 48.957031 39.287109 L 51.957031 29.287109 C 52.115031 28.759109 51.816109 28.201969 51.287109 28.042969 C 50.755109 27.885969 50.200969 28.183891 50.042969 28.712891 L 48 35.519531 L 45.957031 28.712891 C 45.837781 28.316141 45.496797 28.048516 45.109375 28.005859 z M 9 52 C 8.447 52 8 52.447 8 53 L 8 55 C 8 55.553 8.447 56 9 56 C 9.553 56 10 55.553 10 55 L 10 53 C 10 52.447 9.553 52 9 52 z M 14 52 C 13.447 52 13 52.447 13 53 L 13 55 C 13 55.553 13.447 56 14 56 C 14.553 56 15 55.553 15 55 L 15 53 C 15 52.447 14.553 52 14 52 z M 19 52 C 18.447 52 18 52.447 18 53 L 18 55 C 18 55.553 18.447 56 19 56 C 19.553 56 20 55.553 20 55 L 20 53 C 20 52.447 19.553 52 19 52 z M 24 52 C 23.447 52 23 52.447 23 53 L 23 55 C 23 55.553 23.447 56 24 56 C 24.553 56 25 55.553 25 55 L 25 53 C 25 52.447 24.553 52 24 52 z M 29 52 C 28.447 52 28 52.447 28 53 L 28 55 C 28 55.553 28.447 56 29 56 C 29.553 56 30 55.553 30 55 L 30 53 C 30 52.447 29.553 52 29 52 z M 34 52 C 33.447 52 33 52.447 33 53 L 33 55 C 33 55.553 33.447 56 34 56 C 34.553 56 35 55.553 35 55 L 35 53 C 35 52.447 34.553 52 34 52 z M 39 52 C 38.447 52 38 52.447 38 53 L 38 55 C 38 55.553 38.447 56 39 56 C 39.553 56 40 55.553 40 55 L 40 53 C 40 52.447 39.553 52 39 52 z M 44 52 C 43.447 52 43 52.447 43 53 L 43 55 C 43 55.553 43.447 56 44 56 C 44.553 56 45 55.553 45 55 L 45 53 C 45 52.447 44.553 52 44 52 z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.4 KiB |
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
|
||||
<path d="M 17.660156 4 C 16.320156 4 15.059141 4.5209375 14.119141 5.4609375 L 5.4609375 14.119141 C 4.5209375 15.069141 4 16.320156 4 17.660156 L 4 57 C 4 58.65 5.35 60 7 60 L 47 60 C 48.65 60 50 58.65 50 57 L 50 46 L 58 46 C 59.1 46 60 45.1 60 44 L 60 24 C 60 22.9 59.1 22 58 22 L 50 22 L 50 7 C 50 5.35 48.65 4 47 4 L 17.660156 4 z M 18 6 L 47 6 C 47.55 6 48 6.45 48 7 L 48 22 L 16 22 C 14.9 22 14 22.9 14 24 L 14 44 C 14 45.1 14.9 46 16 46 L 48 46 L 48 57 C 48 57.55 47.55 58 47 58 L 7 58 C 6.45 58 6 57.55 6 57 L 6 18 L 15 18 C 16.654 18 18 16.654 18 15 L 18 6 z M 16 6.4980469 L 16 15 C 16 15.552 15.552 16 15 16 L 6.5019531 16 C 6.6119531 15.834 6.7388594 15.679063 6.8808594 15.539062 L 15.539062 6.8808594 C 15.681062 6.7368594 15.836 6.6080469 16 6.4980469 z M 16 24 L 48 24 L 50 24 L 58 24 L 58 44 L 50 44 L 48 44 L 16 44 L 16 24 z M 27 28 C 25.346 28 24 29.346 24 31 L 24 37 C 24 38.654 25.346 40 27 40 L 29 40 C 30.654 40 32 38.654 32 37 C 32 36.447 31.553 36 31 36 C 30.447 36 30 36.447 30 37 C 30 37.552 29.552 38 29 38 L 27 38 C 26.448 38 26 37.552 26 37 L 26 31 C 26 30.448 26.448 30 27 30 L 29 30 C 29.552 30 30 30.448 30 31 C 30 31.553 30.447 32 31 32 C 31.553 32 32 31.553 32 31 C 32 29.346 30.654 28 29 28 L 27 28 z M 37 28 C 35.346 28 34 29.346 34 31 L 34 32 C 34 33.654 35.346 35 37 35 L 39 35 C 39.552 35 40 35.448 40 36 L 40 37 C 40 37.552 39.552 38 39 38 L 37 38 C 36.448 38 36 37.552 36 37 C 36 36.447 35.553 36 35 36 C 34.447 36 34 36.447 34 37 C 34 38.654 35.346 40 37 40 L 39 40 C 40.654 40 42 38.654 42 37 L 42 36 C 42 34.346 40.654 33 39 33 L 37 33 C 36.448 33 36 32.552 36 32 L 36 31 C 36 30.448 36.448 30 37 30 L 39 30 C 39.552 30 40 30.448 40 31 C 40 31.553 40.447 32 41 32 C 41.553 32 42 31.553 42 31 C 42 29.346 40.654 28 39 28 L 37 28 z M 45.109375 28.005859 C 44.980234 27.991641 44.845391 28.003719 44.712891 28.042969 C 44.183891 28.201969 43.884969 28.759109 44.042969 29.287109 L 47.042969 39.287109 C 47.169969 39.710109 47.559 40 48 40 C 48.441 40 48.830031 39.710109 48.957031 39.287109 L 51.957031 29.287109 C 52.115031 28.759109 51.816109 28.201969 51.287109 28.042969 C 50.755109 27.885969 50.200969 28.183891 50.042969 28.712891 L 48 35.519531 L 45.957031 28.712891 C 45.837781 28.316141 45.496797 28.048516 45.109375 28.005859 z M 9 52 C 8.447 52 8 52.447 8 53 L 8 55 C 8 55.553 8.447 56 9 56 C 9.553 56 10 55.553 10 55 L 10 53 C 10 52.447 9.553 52 9 52 z M 14 52 C 13.447 52 13 52.447 13 53 L 13 55 C 13 55.553 13.447 56 14 56 C 14.553 56 15 55.553 15 55 L 15 53 C 15 52.447 14.553 52 14 52 z M 19 52 C 18.447 52 18 52.447 18 53 L 18 55 C 18 55.553 18.447 56 19 56 C 19.553 56 20 55.553 20 55 L 20 53 C 20 52.447 19.553 52 19 52 z M 24 52 C 23.447 52 23 52.447 23 53 L 23 55 C 23 55.553 23.447 56 24 56 C 24.553 56 25 55.553 25 55 L 25 53 C 25 52.447 24.553 52 24 52 z M 29 52 C 28.447 52 28 52.447 28 53 L 28 55 C 28 55.553 28.447 56 29 56 C 29.553 56 30 55.553 30 55 L 30 53 C 30 52.447 29.553 52 29 52 z M 34 52 C 33.447 52 33 52.447 33 53 L 33 55 C 33 55.553 33.447 56 34 56 C 34.553 56 35 55.553 35 55 L 35 53 C 35 52.447 34.553 52 34 52 z M 39 52 C 38.447 52 38 52.447 38 53 L 38 55 C 38 55.553 38.447 56 39 56 C 39.553 56 40 55.553 40 55 L 40 53 C 40 52.447 39.553 52 39 52 z M 44 52 C 43.447 52 43 52.447 43 53 L 43 55 C 43 55.553 43.447 56 44 56 C 44.553 56 45 55.553 45 55 L 45 53 C 45 52.447 44.553 52 44 52 z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 3.4 KiB |
|
@ -2,6 +2,43 @@
|
|||
* Discovery css global
|
||||
*/
|
||||
|
||||
li.discovery {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
width: 250px;
|
||||
height: 120px;
|
||||
margin: 15px;
|
||||
}
|
||||
|
||||
li.discovery > a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
li.discovery > a:hover {
|
||||
color: #000;
|
||||
}
|
||||
|
||||
li.discovery img {
|
||||
height: 90px;
|
||||
}
|
||||
|
||||
li.discovery > a label {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
div.data_container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
border: 1px solid #ddd;
|
||||
padding-top: 30px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
div.data_container:hover {
|
||||
box-shadow: 2px 2px 10px #ddd;
|
||||
}
|
||||
|
||||
#contenedor_principal {
|
||||
height: auto;
|
||||
position: relative;
|
||||
|
|
Loading…
Reference in New Issue