mirror of
https://github.com/valentineus/iii-module.git
synced 2025-04-29 01:51:25 +03:00
Demo in beta mode.
This commit is contained in:
parent
288980ceb3
commit
b9628f189b
106
demo/components/class-application.php
Normal file
106
demo/components/class-application.php
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Function of saving the token in a cookie.
|
||||||
|
* When you receive the new value clears all stored cookies.
|
||||||
|
* @param $token - The values of the token.
|
||||||
|
*/
|
||||||
|
function NewToken($token) {
|
||||||
|
unset($_COOKIE); // Removes all
|
||||||
|
SetCookie("BOT_TOKEN", $token); // Save a new cookie
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Session initialization function.
|
||||||
|
* Searches saved session, producing a new
|
||||||
|
* init or returns zero on failure.
|
||||||
|
* @param $token - The values of the token.
|
||||||
|
* @param $bot - Initialized bot.
|
||||||
|
*/
|
||||||
|
function GetSession($token, $bot) {
|
||||||
|
// Search the old session
|
||||||
|
if (isset($_COOKIE['BOT_SESSION'])) {
|
||||||
|
$session = $bot->session($_COOKIE['BOT_SESSION']);
|
||||||
|
} else { // Open a new one
|
||||||
|
$session = $bot->session();
|
||||||
|
SetCookie("BOT_SESSION", $session);
|
||||||
|
}
|
||||||
|
|
||||||
|
// We issue results
|
||||||
|
if (isset($session)) {
|
||||||
|
return $session;
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The function returns the current ID.
|
||||||
|
* Returns zero if no ID is stored.
|
||||||
|
*/
|
||||||
|
function GetID() {
|
||||||
|
// Search current ID...
|
||||||
|
if (isset($_COOKIE['CURRENT_ID'])) {
|
||||||
|
$id = (int)$_COOKIE['CURRENT_ID'] + 1;
|
||||||
|
// ...or returns zero
|
||||||
|
} else {
|
||||||
|
$id = 0;
|
||||||
|
}
|
||||||
|
// We issue results
|
||||||
|
return $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The function overrides the current ID to
|
||||||
|
* the specified or the next. If any missing ID
|
||||||
|
* returns the one.
|
||||||
|
* @param $id - Current ID.
|
||||||
|
*/
|
||||||
|
function SetID($id) {
|
||||||
|
// Process the specified ID...
|
||||||
|
if (isset($id)) {
|
||||||
|
$id = $id + 1;
|
||||||
|
// ...Or are saved...
|
||||||
|
} elseif (isset($_COOKIE['CURRENT_ID'])) {
|
||||||
|
$id = (int)$_COOKIE['CURRENT_ID'] + 1;
|
||||||
|
// ...Or return one
|
||||||
|
} else {
|
||||||
|
$id = 1;
|
||||||
|
}
|
||||||
|
SetCookie('CURRENT_ID', $id, time()+300); // Save the result
|
||||||
|
// We issue results
|
||||||
|
return $id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The function maintains a history of conversations,
|
||||||
|
* using a database of cookie files.
|
||||||
|
* @param $currentid - Message ID.
|
||||||
|
* @param $textarea - Message text.
|
||||||
|
* @param $type - Who said (Man / Bot).
|
||||||
|
*/
|
||||||
|
function SavingStories($currentid, $textarea, $type) {
|
||||||
|
// We form an array with values
|
||||||
|
$cookie = array(
|
||||||
|
'type' => $type,
|
||||||
|
'textarea' => $textarea,
|
||||||
|
'time' => time());
|
||||||
|
// Save by encoding in JSON-string
|
||||||
|
SetCookie("TALK".$currentid, json_encode($cookie), time()+60);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function line formation.
|
||||||
|
* @param $id - Variable Message ID.
|
||||||
|
*/
|
||||||
|
function ShowRecord($id) {
|
||||||
|
for ($i=0; $i < $id; $i++) {
|
||||||
|
if (isset($_COOKIE['TALK'.$i])) {
|
||||||
|
$cookie = json_decode($_COOKIE['TALK'.$i], true);
|
||||||
|
echo("<tr>");
|
||||||
|
echo("<td>".$cookie['type']."</td>");
|
||||||
|
echo("<td>".$cookie['textarea']."</td>");
|
||||||
|
echo("<td>".date("H:i:s", $cookie['time'])."</td>");
|
||||||
|
echo("</tr>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} ?>
|
@ -3,13 +3,12 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<!-- Text field -->
|
<!-- Text field -->
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
<textarea class="form-control" rows="3" name="textarea"></textarea>
|
<input class="form-control" type="text" name="textarea" value="">
|
||||||
</div>
|
</div>
|
||||||
<!-- Control buttons -->
|
<!-- Control buttons -->
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<button type="submit" class="btn btn-default">Submit</button>
|
<button type="submit" class="btn btn-default">Submit</button>
|
||||||
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#SettingsModal">Settings</button>
|
<button type="button" class="btn btn-success" data-toggle="modal" data-target="#SettingsModal">Settings</button>
|
||||||
<button type="button" class="btn btn-danger">Reset</button>
|
|
||||||
</div>
|
</div>
|
||||||
</div><!-- row -->
|
</div><!-- row -->
|
||||||
</form>
|
</form>
|
@ -2,7 +2,7 @@
|
|||||||
<footer class="footer">
|
<footer class="footer">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<p class="text-muted">
|
<p class="text-muted">
|
||||||
<a href="mailto:valentineus@gmail.com">valentineus@gmail.com</a>
|
<a href="mailto:dev@valentineus.link">dev@valentineus.link</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
24
demo/components/navbar.php
Normal file
24
demo/components/navbar.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!-- Start navigation bar -->
|
||||||
|
<nav class="navbar navbar-default navbar-fixed-top">
|
||||||
|
<a href="https://github.com/valentineus/Module-III-API">
|
||||||
|
<img class="github-fork">
|
||||||
|
</a>
|
||||||
|
<div class="container">
|
||||||
|
<div class="collapse navbar-collapse">
|
||||||
|
<!-- The right side of the navigation bar -->
|
||||||
|
<ul class="nav navbar-nav navbar-right">
|
||||||
|
<li>
|
||||||
|
<p class="navbar-text"><?php
|
||||||
|
// Check the ability to use Cookie
|
||||||
|
if (SetCookie("TestCookie", "Success")) { ?>
|
||||||
|
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
|
||||||
|
<?php } else { ?>
|
||||||
|
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
|
||||||
|
<?php }
|
||||||
|
?> Cookie</p>
|
||||||
|
</li>
|
||||||
|
</ul><!-- navbar-right -->
|
||||||
|
</div>
|
||||||
|
</div><!-- container -->
|
||||||
|
</nav>
|
||||||
|
<!-- End navigation bar -->
|
12
demo/components/results.php
Normal file
12
demo/components/results.php
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<table class="table table-striped">
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>Text</th>
|
||||||
|
<th>Date</th>
|
||||||
|
</tr>
|
||||||
|
<?php ShowRecord(GetID()); ?>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
83
demo/index.php
Normal file
83
demo/index.php
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
ini_set("display_errors","1");
|
||||||
|
ini_set("display_startup_errors","1");
|
||||||
|
ini_set('error_reporting', E_ALL);
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!-- Connecting library jQuery -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.1.0.slim.min.js" integrity="sha256-cRpWjoSOw5KcyIOaZNo4i6fZ9tKPhYYb6i5T9RSVJG8=" crossorigin="anonymous"></script>
|
||||||
|
<!-- Connecting library Bootstrap -->
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
||||||
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
||||||
|
<!-- Custom styles -->
|
||||||
|
<link href="style.css" rel="stylesheet">
|
||||||
|
<!-- Meta -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="robots" content="NONE">
|
||||||
|
<!-- Title -->
|
||||||
|
<title>Testing conversational bot</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php // Connect all of the dependencies
|
||||||
|
include("../src/bot.php"); // Class for working with AI
|
||||||
|
include("components/class-application.php"); // Class to work with application logic
|
||||||
|
include("components/navbar.php"); // Connect the navigation bar
|
||||||
|
include("components/settings.php"); // Connecting a modal window with the settings
|
||||||
|
?>
|
||||||
|
<!-- Begin page content -->
|
||||||
|
<div class="container">
|
||||||
|
<div class="page-header">
|
||||||
|
<h1>Communication Panel</h1>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
// Checking the token initialization
|
||||||
|
if (isset($_POST['BOT_TOKEN'])) {
|
||||||
|
$token = htmlspecialchars($_POST['BOT_TOKEN']);
|
||||||
|
NewToken($token);
|
||||||
|
// ...Finding saved token
|
||||||
|
} elseif (isset($_COOKIE['BOT_TOKEN'])) {
|
||||||
|
$token = $_COOKIE['BOT_TOKEN'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// The next step - checking/initialize the session with the bot.
|
||||||
|
if (isset($token)) {
|
||||||
|
// Initialize the robot system
|
||||||
|
define('BOT_TOKEN', $token);
|
||||||
|
$bot = new Bot(BOT_TOKEN);
|
||||||
|
$session = GetSession($token, $bot); // Initialize the session
|
||||||
|
if (empty($session)) { // No session? Error! ?>
|
||||||
|
<!-- Error Notification -->
|
||||||
|
<div class="alert alert-danger alert-dismissible" role="alert">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||||
|
<strong>Error!</strong> Failed to create a session!
|
||||||
|
</div>
|
||||||
|
<?php }
|
||||||
|
} else { // Nope token? A warning! ?>
|
||||||
|
<!-- Error Notification -->
|
||||||
|
<div class="alert alert-warning alert-dismissible" role="alert">
|
||||||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||||
|
<strong>Attention!</strong> No token: Required to check the settings!
|
||||||
|
</div>
|
||||||
|
<?php }
|
||||||
|
|
||||||
|
// Processes the message
|
||||||
|
if (isset($_POST['textarea'])) {
|
||||||
|
$currentid = GetID(); // Get the current ID
|
||||||
|
$currenttext = htmlspecialchars($_POST['textarea']); // Transform text
|
||||||
|
SavingStories($currentid, $currenttext, 'user'); // Keeping your message
|
||||||
|
$currentid = SetID($currentid); // Get next ID
|
||||||
|
SavingStories($currentid, $bot->say($currenttext), 'bot'); // Save bot response
|
||||||
|
header("Location: ".$_SERVER["REQUEST_URI"]); // Reloading the page
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connecting the system interface
|
||||||
|
include("components/communication.php"); // Settings panel
|
||||||
|
include("components/results.php"); // Output messages
|
||||||
|
?>
|
||||||
|
</div>
|
||||||
|
<?php include("components/footer.php"); // Connect the bottom panel ?>
|
||||||
|
</body>
|
||||||
|
</html>
|
40
demo/style.css
Normal file
40
demo/style.css
Normal file
File diff suppressed because one or more lines are too long
@ -1,66 +0,0 @@
|
|||||||
<?php
|
|
||||||
function ShowRecord($id) {
|
|
||||||
for ($i=0; $i < $id; $i++) {
|
|
||||||
$cookie = json_decode($_COOKIE['TALK'.$i], true);
|
|
||||||
echo("<tr>");
|
|
||||||
echo("<td>".$cookie['type']."</td>");
|
|
||||||
echo("<td>".$cookie['textarea']."</td>");
|
|
||||||
echo("<td>".date("H:i:s", $cookie['time'])."</td>");
|
|
||||||
echo("</tr>");
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_COOKIE['BOT_TOKEN'])) {
|
|
||||||
$BOT_TOKEN = $_COOKIE['BOT_TOKEN'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_POST['BOT_TOKEN'])) {
|
|
||||||
unset($_COOKIE); // Clear the session
|
|
||||||
SetCookie("BOT_TOKEN", htmlspecialchars($_POST['BOT_TOKEN']));
|
|
||||||
$BOT_TOKEN = htmlspecialchars($_POST['BOT_TOKEN']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($BOT_TOKEN)) {
|
|
||||||
define('BOT_TOKEN', $BOT_TOKEN);
|
|
||||||
$bot = new Bot(BOT_TOKEN);
|
|
||||||
if (isset($_COOKIE['BOT_SESSION'])) {
|
|
||||||
$session = $bot->session($_COOKIE['BOT_SESSION']);
|
|
||||||
} else {
|
|
||||||
$session = $bot->session();
|
|
||||||
SetCookie("BOT_SESSION", $session);
|
|
||||||
}
|
|
||||||
if (!isset($session)) { ?>
|
|
||||||
<div class="container">
|
|
||||||
<div class="alert alert-danger" role="alert">Session is not initialized, check the settings!</div>
|
|
||||||
</div>
|
|
||||||
<?php }
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($_POST['textarea'])) {
|
|
||||||
$textarea = htmlspecialchars($_POST['textarea']);
|
|
||||||
if (isset($_COOKIE['CURRENT_ID'])) {
|
|
||||||
$current_id = (int)$_COOKIE['CURRENT_ID'];
|
|
||||||
SetCookie('CURRENT_ID', $current_id+1);
|
|
||||||
} else {
|
|
||||||
$current_id = 0;
|
|
||||||
SetCookie('CURRENT_ID', $current_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
$cookie = array(
|
|
||||||
'type' => 'user',
|
|
||||||
'textarea' => $textarea,
|
|
||||||
'time' => time()
|
|
||||||
);
|
|
||||||
SetCookie("TALK".$current_id, json_encode($cookie));
|
|
||||||
|
|
||||||
$current_id = $current_id+1;
|
|
||||||
SetCookie('CURRENT_ID', $current_id+1);
|
|
||||||
$cookie = array(
|
|
||||||
'type' => 'bot',
|
|
||||||
'textarea' => $bot->say($textarea),
|
|
||||||
'time' => time()
|
|
||||||
);
|
|
||||||
SetCookie("TALK".$current_id, json_encode($cookie));
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1,36 +0,0 @@
|
|||||||
<!-- Start navigation bar -->
|
|
||||||
<nav class="navbar navbar-default navbar-fixed-top">
|
|
||||||
<div class="container">
|
|
||||||
<div class="collapse navbar-collapse">
|
|
||||||
<ul class="nav navbar-nav">
|
|
||||||
<li>
|
|
||||||
<!-- Home project -->
|
|
||||||
<a href="https://github.com/valentineus/Module-III-API"><span class="github" aria-hidden="true"></span> GitHub.com</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<!-- The right side of the navigation bar -->
|
|
||||||
<ul class="nav navbar-nav navbar-right">
|
|
||||||
<li>
|
|
||||||
<p class="navbar-text" data-toggle="popover" data-placement="auto" data-trigger="hover" data-content="Cookies must be enabled in your browser!"><?php
|
|
||||||
// Check the ability to use Cookie
|
|
||||||
if (SetCookie("TestCookie", "Success")) { ?>
|
|
||||||
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
|
|
||||||
<?php } else { ?>
|
|
||||||
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
|
|
||||||
<?php }
|
|
||||||
?> Cookie</p>
|
|
||||||
|
|
||||||
<p class="navbar-text" data-toggle="popover" data-placement="auto" data-trigger="hover" data-content="Before the work necessary to configure!"><?php
|
|
||||||
// Checking the portal settings
|
|
||||||
if (isset($_COOKIE['BOT_TOKEN']) OR isset($_POST['BOT_TOKEN'])) { ?>
|
|
||||||
<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
|
|
||||||
<?php } else { ?>
|
|
||||||
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
|
|
||||||
<?php }
|
|
||||||
?> Settings</p>
|
|
||||||
</li>
|
|
||||||
</ul><!-- navbar-right -->
|
|
||||||
</div>
|
|
||||||
</div><!-- container -->
|
|
||||||
</nav>
|
|
||||||
<!-- End navigation bar -->
|
|
@ -1,20 +0,0 @@
|
|||||||
<div class="row">
|
|
||||||
<div class="col-md-12">
|
|
||||||
<table class="table table-striped">
|
|
||||||
<tr>
|
|
||||||
<th>#</th>
|
|
||||||
<th>Text</th>
|
|
||||||
<th>Date</th>
|
|
||||||
</tr>
|
|
||||||
<?php
|
|
||||||
if (isset($current_id)) {
|
|
||||||
ShowRecord($current_id);
|
|
||||||
} elseif (isset($_COOKIE['CURRENT_ID'])) {
|
|
||||||
ShowRecord((int)$_COOKIE['CURRENT_ID']);
|
|
||||||
} else {
|
|
||||||
echo("Error!");
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,39 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<!-- Connecting library jQuery -->
|
|
||||||
<script src="https://code.jquery.com/jquery-3.1.0.slim.min.js" integrity="sha256-cRpWjoSOw5KcyIOaZNo4i6fZ9tKPhYYb6i5T9RSVJG8=" crossorigin="anonymous"></script>
|
|
||||||
<!-- Connecting library Bootstrap -->
|
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
|
||||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
|
|
||||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
|
|
||||||
<!-- Custom styles -->
|
|
||||||
<link href="style.css" rel="stylesheet">
|
|
||||||
<!-- Custom JavaScript -->
|
|
||||||
<script type="text/javascript" src="javascript.js"></script>
|
|
||||||
<!-- Meta -->
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="robots" content="NONE">
|
|
||||||
<!-- Title -->
|
|
||||||
<title>Testing conversational bot</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<?php // Connect all of the dependencies
|
|
||||||
include("../src/bot.php");
|
|
||||||
include("components/navbar.php"); // Connect the navigation bar
|
|
||||||
include("components/engine.php"); // Connect the engine project
|
|
||||||
include("components/settings.php"); // Connecting a modal window with the settings
|
|
||||||
?>
|
|
||||||
<!-- Begin page content -->
|
|
||||||
<div class="container">
|
|
||||||
<div class="page-header">
|
|
||||||
<h1>Communication with the bot</h1>
|
|
||||||
</div>
|
|
||||||
<?php
|
|
||||||
include("components/communication.php");
|
|
||||||
include("components/results.php");
|
|
||||||
?>
|
|
||||||
</div>
|
|
||||||
<?php include("components/footer.php"); // Connect the bottom panel ?>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,3 +0,0 @@
|
|||||||
jQuery(function () {
|
|
||||||
$('[data-toggle="popover"]').popover()
|
|
||||||
})
|
|
@ -1,38 +0,0 @@
|
|||||||
html {
|
|
||||||
position: relative;
|
|
||||||
min-height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
margin-bottom: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body > .container {
|
|
||||||
padding: 60px 15px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea.form-control {
|
|
||||||
resize: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
position: absolute;
|
|
||||||
height: 60px;
|
|
||||||
width: 100%;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container .text-muted {
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Loaded one icon from GitHub */
|
|
||||||
.github {
|
|
||||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNTE3OEEyQTk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNTE3OEEyQjk5QTAxMUUyOUExNUJDMTA0NkE4OTA0RCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU1MTc4QTI4OTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU1MTc4QTI5OTlBMDExRTI5QTE1QkMxMDQ2QTg5MDREIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+m4QGuQAAAyRJREFUeNrEl21ojWEYx895TDPbMNlBK46IUiNmPvHBSUjaqc0H8pF5+aDUKPEBqU2NhRQpX5Rv5jWlDIWlMCv7MMSWsWwmb3tpXub4XXWdPHvc9/Gc41nu+nedc7/8r/99PffLdYdDPsvkwsgkTBwsA/PADJCnzX2gHTwBt8Hl7p537/3whn04XoDZDcpBlk+9P8AFcAghzRkJwPF4zGGw0Y9QS0mAM2AnQj77FqCzrtcwB1Hk81SYojHK4DyGuQ6mhIIrBWB9Xm7ug/6B/nZrBHBegrkFxoVGpnwBMSLR9EcEcC4qb8pP14BWcBcUgewMnF3T34VqhWMFkThLJAalwnENOAKiHpJq1FZgI2AT6HZtuxZwR9GidSHtI30jOrbawxlVX78/AbNfhHlomEUJJI89O2MqeE79T8/nk8nMBm/dK576hZgmA3cp/R4l9/UeSxiHLVIlNm4nFfT0bxyuIj7LHRTKai+zdJobwMKzcZSJb0ePV5PKN+BqAAKE47UlMnERELMM3EdYP/yrd+XYb2mOiYBiQ8OQnoRBlXrl9JZix7D1pHTazu4MoyBcnYamqAjIMTR8G4FT8LuhLsexXYYjICBiqhQBvYb6fLZIJCjPypVvaOoVAW2WcasCnL2Nq82xHJNSqlCeFcDshaPK0twkAhosjZL31QYw+1rlMpWGMArl23SBsZZO58F2tlJXmjOXS+s4WGvpMiBJT/I2PInZ6lIs9/hBsNS1hS6BG0DSqmYEDRlCXQrmy50P1oDRKTSegmNbUsA0zDMwRhPJXeCE3vWLPQMvan6X8AgIa1vcR4AkGZkDR4ejJ1UHpsaVI0g2LInpOsNFUud1rhxSV+fzC9Woz2EZkWQuja7/B+jUrgtIMpy9YCW4n4K41YfzRneW5E1KJTe4B2Zq1Q5EHEtj4U3AfEzR5SVY4l7QYQPJdN2as7RKBF0BPZqqH4VgMAMBL8Byxr7y8zCZiDlnOcEKIPmUpgB5Z2ww5RdOiiRiNajUmWda5IG6WbhsyY2fx6m8gLcoJDJFkH219M3We1+cnda93pfycZpIJEL/s/wSYADmOAwAQgdpBAAAAABJRU5ErkJggg==');
|
|
||||||
background-size: cover;
|
|
||||||
margin: 2px 5px;
|
|
||||||
height: 15px;
|
|
||||||
width: 15px;
|
|
||||||
float:left;
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user