Merge pull request #77 from exodus4d/develop

v0.0.16
This commit is contained in:
Exodus 4D
2015-11-19 22:27:39 +01:00
61 changed files with 497 additions and 212 deletions

View File

@@ -2,9 +2,10 @@
Mapping tool for [*EVE ONLINE*](https://www.eveonline.com)
- Project [https://www.pathfinder.exodus4d.de](https://www.pathfinder.exodus4d.de)
- Community [google +](https://plus.google.com/u/0/b/110257318165279088853/110257318165279088853)
- Official Forum post [https://forums.eveonline.com](https://forums.eveonline.com/default.aspx?g=posts&m=6021776#post6021776)
- Screenshots [imgur.com](http://imgur.com/a/k2aVa)
- Media [youtube.com](https://www.youtube.com/channel/UC7HU7XEoMbqRwqxDTbMjSPg)
- Video [youtube.com](https://www.youtube.com/channel/UC7HU7XEoMbqRwqxDTbMjSPg)
- Community [google +](https://plus.google.com/u/0/b/110257318165279088853/110257318165279088853)
- Licence [MIT](http://opensource.org/licenses/MIT)
##### IMPORTANT Information
@@ -23,10 +24,6 @@ If you are looking for installation help, please check the [wiki](https://github
|-- cron.ini --> config cronjobs
|-- pathfinder.ini --> config pathfinder
|-- routes.ini --> config routes
|-- (0755) build_js --> JS build folder and source maps (minified, uglified)
|-- app --> "PATHFINDER" core files
|-- lib --> 3rd partie extension/library
|-- build.txt --> generated build summary
|-- (0755) js --> JS source files (raw)
|-- app --> "PASTHFINDER" core files (not used for production )
|-- lib --> 3rd partie extension/library (not used for production )
@@ -39,7 +36,7 @@ If you are looking for installation help, please check the [wiki](https://github
|-- css --> CSS dist/build folder (minified)
|-- fonts --> (icon)-Fonts
|-- img --> images
|-- js --> JS dist/build folder
|-- js --> JS dist/build folder and source maps (minified, uglified)
|-- templates --> templates
|-- sass --> SCSS source (not used for production )
|-- ...

View File

@@ -77,11 +77,15 @@ class Signature extends \Controller\AccessController{
$user = $this->_getUser();
if($user){
$activeCharacter = $user->getActiveUserCharacter();
$activeUserCharacter = $user->getActiveUserCharacter();
$activeCharacter = $activeUserCharacter->getCharacter();
$system = Model\BasicModel::getNew('SystemModel');
// update/add all submitted signatures
foreach($signatureData as $data){
// this key should not be saved (it is an obj)
unset($data['updated']);
$system->getById( (int)$data['systemId']);
if(!$system->dry()){
@@ -99,12 +103,11 @@ class Signature extends \Controller\AccessController{
$signature = Model\BasicModel::getNew('SystemSignatureModel');
}
$signature->updatedCharacterId = $activeCharacter->getCharacter();
if($signature->dry()){
// new signature
$signature->systemId = $system;
$signature->createdCharacterId = $activeCharacter->getCharacter();
$signature->updatedCharacterId = $activeCharacter;
$signature->createdCharacterId = $activeCharacter;
$signature->setData($data);
}else{
// update signature
@@ -126,10 +129,13 @@ class Signature extends \Controller\AccessController{
}else{
// update complete signature (signature reader dialog)
// systemId should not be updated
unset( $data['systemId'] );
// description should not be updated
unset( $data['description'] );
// wormhole typeID can<EFBFBD>t figured out/saved by the sig reader dialog
// wormhole typeID can not figured out/saved by the sig reader dialog
if($data['groupId'] == 5){
unset( $data['typeId'] );
}
@@ -137,10 +143,13 @@ class Signature extends \Controller\AccessController{
$newData = $data;
}
$signature->setData($newData);
if( $signature->hasChanged($newData) ){
// Character should only be changed if something else has changed
$signature->updatedCharacterId = $activeCharacter;
$signature->setData($newData);
}
}
$signature->save();
// get a fresh signature object with the new data. This is a bad work around!

View File

@@ -68,17 +68,36 @@ class CcpSystemsMapper extends \RecursiveArrayIterator {
$iterator['security'] == 8 ||
$iterator['security'] == 9
){
// k-space system
$trueSec = round($iterator['trueSec'], 3);
if($trueSec <= 0){
$security = '0.0';
}elseif($trueSec < 0.5){
$security = 'L';
}else{
$security = 'H';
// more precise rounding required for "low sec" and "high sec" distinction
$trueSec = round($trueSec, 1);
if($trueSec < 0.5){
$security = 'L';
}else{
$security = 'H';
}
}
}else{
}elseif(
$iterator['security'] == 1 ||
$iterator['security'] == 2 ||
$iterator['security'] == 3 ||
$iterator['security'] == 4 ||
$iterator['security'] == 5 ||
$iterator['security'] == 6
){
// standard wormhole system
$security = 'C' . $iterator['security'];
}elseif(
$iterator['security'] == 13
){
// shattered wormhole system
$security = 'SH';
}
return $security;

View File

@@ -307,8 +307,8 @@ class SystemModel extends BasicModel {
// check if this system is a wormhole
if($this->isWormhole()){
$systemStaticModel = self::getNew('SystemStaticModel');
$systemStatics = $systemStaticModel->find([
$systemWormholeModel = self::getNew('SystemWormholeModel');
$systemStatics = $systemWormholeModel->find([
'constellationId = :constellationId',
':constellationId' => $this->constellationId
]);

View File

@@ -69,12 +69,33 @@ class SystemSignatureModel extends BasicModel {
'character' => $this->updatedCharacterId->getData(),
'updated' => strtotime($this->updated)
]
];
return $signatureData;
}
/**
* compares a new data set (array) with the current values
* and checks if something has changed
* @param $signatureData
* @return bool
*/
public function hasChanged($signatureData){
$hasChanged = false;
foreach((array)$signatureData as $key => $value){
if(
$this->exists($key) &&
$this->$key != $value
){
$hasChanged = true;
break;
}
}
return $hasChanged;
}
/**
* check object for model access
* @param $accessObject

View File

@@ -1,28 +0,0 @@
<?php
/**
* Created by PhpStorm.
* User: exodus4d
* Date: 07.06.15
* Time: 18:16
*/
namespace Model;
class SystemStaticModel extends BasicModel {
protected $table = 'system_static';
/**
* get systemStatic data as object
* @return object
*/
public function getData(){
$systemStaticData = (object) [];
$systemStaticData->security = $this->security;
$systemStaticData->name = $this->name;
return $systemStaticData;
}
}

View File

@@ -0,0 +1,32 @@
<?php
/**
* Created by PhpStorm.
* User: exodus4d
* Date: 07.06.15
* Time: 18:16
*/
namespace Model;
class SystemWormholeModel extends BasicModel {
protected $table = 'system_wormhole';
protected $fieldConf = [
'wormholeId' => [
'belongs-to-one' => 'Model\WormholeModel'
]
];
/**
* get wormhole data as object
* @return object
*/
public function getData(){
$systemWormholeData = $this->wormholeId->getData();
return $systemWormholeData;
}
}

View File

@@ -17,9 +17,9 @@ class UserModel extends BasicModel {
protected $table = 'user';
protected $fieldConf = [
'lastLogin' => array(
'lastLogin' => [
'type' => Schema::DT_TIMESTAMP
),
],
'apis' => [
'has-many' => ['Model\UserApiModel', 'userId']
],

View File

@@ -0,0 +1,60 @@
<?php
/**
* Created by PhpStorm.
* User: Exodus
* Date: 14.11.2015
* Time: 22:21
*/
namespace Model;
class WormholeModel extends BasicModel {
protected $table = 'wormhole';
/**
* format mass values
* - no decimal separator
* - char '.' for thousands separator
* @param $value
* @return string
*/
static function formatMassValue($value){
return number_format( $value, 0, '', '.' );
}
/**
* get wormhole data as object
* @return object
*/
public function getData(){
$systemStaticData = (object) [];
$systemStaticData->name = $this->name;
$systemStaticData->security = $this->security;
// total (max) available wormhole mass
$systemStaticData->massTotal = (object) [];
$systemStaticData->massTotal->value = $this->massTotal;
$systemStaticData->massTotal->format = self::formatMassValue($this->massTotal) . ' Kg';
// individual jump mass (max) per jump
$systemStaticData->massIndividual = (object) [];
$systemStaticData->massIndividual->value = $this->massIndividual;
$systemStaticData->massIndividual->format = self::formatMassValue($this->massIndividual) . ' Kg';
// lifetime (max) for this wormhole
$systemStaticData->maxStableTime = (object) [];
$systemStaticData->maxStableTime->value = $this->maxStableTime;
$systemStaticData->maxStableTime->format = $this->maxStableTime . ' h';
// mass regeneration value per day
if($this->massRegeneration > 0){
$systemStaticData->massRegeneration = (object) [];
$systemStaticData->massRegeneration->value = $this->massRegeneration;
$systemStaticData->massRegeneration->format = self::formatMassValue($this->massRegeneration) . ' Kg/day';
}
return $systemStaticData;
}
}

View File

@@ -1,7 +1,7 @@
[PATHFINDER]
NAME = "PATHFINDER"
; installed version (used for CSS/JS cache busting)
VERSION = "v0.0.15"
VERSION = "v0.0.16"
; contact information (DO NOT CHANGE)
CONTACT = "https://github.com/exodus4d"
; source code (DO NOT CHANGE)

View File

@@ -254,6 +254,42 @@ define([], function() {
7: { // Ghost
1: 'Superior Blood Raider Covert Research Facility' //*
}
},
13: { // Shattered Wormholes
5: { // Wormhole (some of them are static)
1: 'P060 - C1',
2: 'Z647 - C1',
3: 'D382 - C2',
4: 'L005 - C2',
5: 'N766 - C2',
6: 'C247 - C3',
7: 'K346 - C3',
8: 'M267 - C3',
9: 'O477 - C3',
10: 'X877 - C4',
11: 'Y683 - C4',
12: 'H296 - C5',
13: 'H900 - C5',
14: 'H296 - C5',
15: 'N062 - C5',
16: 'V911 - C5',
17: 'U574 - C6',
18: 'V753 - C6',
19: 'W237 - C6',
20: 'B274 - HS',
21: 'D792 - HS',
22: 'D845 - HS',
23: 'N110 - HS',
24: 'A239 - LS',
25: 'C391 - LS',
26: 'J244 - LS',
27: 'U201 - LS',
28: 'U210 - LS',
29: 'C248 - NS',
30: 'E545 - NS',
31: 'K346 - NS',
32: 'Z060 - NS'
}
}
}, // system type (k-space)
2: {

View File

@@ -147,6 +147,9 @@ define(['jquery'], function($) {
security: {
class: 'pf-system-sec'
},
'SH': {
class: 'pf-system-sec-unknown'
},
'H': {
class: 'pf-system-sec-highSec'
},
@@ -352,6 +355,16 @@ define(['jquery'], function($) {
1: 'E004 - C1',
2: 'Z006 - C3',
5: 'Q003 - 0.0'
},
13: { // Shattered Wormholes (some of them are static)
1: 'E004 - C1',
2: 'L005 - C2',
3: 'Z006 - C3',
4: 'M001 - C4',
5: 'C008 - C5',
6: 'G008 - C6',
7: 'Q003 - C7'
}
},
// incoming wormholes

View File

@@ -77,10 +77,11 @@ define([
// login buttons ------------------------------------------------
$('.' + config.loginButtonClass).on('click', function(e){
var loginForm = $('#' + config.loginFormId);
loginForm.on('submit', function(e){
e.preventDefault();
var loginForm = $('#' + config.loginFormId);
var loginFormMessageContainer = $('#' + config.loginMessageContainerId);
// validate form
@@ -144,7 +145,6 @@ define([
};
$('[title]').not('.slide img').tooltip(mapTooltipOptions);
};
/**

View File

@@ -54,7 +54,7 @@ define([
duration: animationInDuration,
complete: function(){
// set context menu "click" observer
$(this).off('click').one('click', {component: component, position:{x: getLeftLocation(originalEvent), y: getTopLocation(originalEvent)}}, function (e) {
$(this).off('click').one('click', {component: component, position:{x: originalEvent.offsetX, y: originalEvent.offsetY}}, function (e) {
// hide contextmenu
$(this).hide();
@@ -64,7 +64,6 @@ define([
position: e.data.position
};
settings.menuSelected.call(this, params);
});
}

View File

@@ -28,6 +28,7 @@ define([
systemInfoEffectInfoClass: 'pf-system-info-effect', // class for "effect" information element
systemInfoStatusLabelClass: 'pf-system-info-status-label', // class for "status" information element
systemInfoStatusAttributeName: 'data-status', // attribute name for status label
systemInfoWormholeClass: 'pf-system-info-wormhole-', // class prefix for static wormhole element
// description field
descriptionArea: 'pf-system-info-description-area', // class for "description" area
@@ -56,6 +57,7 @@ define([
});
};
/**
* shows the tool action element by animation
*/
@@ -192,6 +194,22 @@ define([
parentElement.prepend(moduleElement);
// shattered wormhole info data
var shatteredWormholeInfo = false;
// add security class for statics
if(
systemData.statics &&
systemData.statics.length > 0
){
for(var i = 0; i < systemData.statics.length; i++){
systemData.statics[i].class = Util.getSecurityClassForSystem( systemData.statics[i].security );
}
}else if(systemData.type.id === 1){
// system type "wormhole" but no statics => "shattered wormhole"
shatteredWormholeInfo = true;
}
var effectName = Util.getEffectInfoForSystem(systemData.effect, 'name');
var effectClass = Util.getEffectInfoForSystem(systemData.effect, 'class');
@@ -338,6 +356,15 @@ define([
});
}
// init static wormhole information ----------------------------------------------------------
if(systemData.statics){
for(var i = 0; i < systemData.statics.length; i++){
var staticData = systemData.statics[i];
var staticRowElement = tempModuleElement.find('.' + config.systemInfoWormholeClass + staticData.name);
staticRowElement.addWormholeInfoTooltip(staticData);
}
}
// constellation popover ---------------------------------------------------------------------
tempModuleElement.find('a.popup-ajax').popover({
html: true,
@@ -350,7 +377,6 @@ define([
}
});
function details_in_popup(popoverElement){
popoverElement = $(popoverElement);
var popover = popoverElement.data('bs.popover');
@@ -373,18 +399,12 @@ define([
}
};
// add security class for statics
if(systemData.statics){
for(var i = 0; i < systemData.statics.length; i++){
systemData.statics[i].class = Util.getSecurityClassForSystem( systemData.statics[i].security );
}
}
var moduleData = {
system: systemData,
tableClass: config.systemInfoTableClass,
nameInfoClass: config.systemInfoNameInfoClass,
effectInfoClass: config.systemInfoEffectInfoClass,
wormholePrefixClass: config.systemInfoWormholeClass,
statusInfoClass: config.systemInfoStatusLabelClass,
systemTypeName: Util.getSystemTypeInfo(systemData.type.id, 'name'),
@@ -402,6 +422,8 @@ define([
descriptionTextareaClass: config.descriptionTextareaElementClass,
descriptionTooltipClass: config.descriptionTextareaTooltipClass,
shatteredWormholeInfo: shatteredWormholeInfo,
ajaxConstellationInfoUrl: Init.path.getConstellationData,
systemConstellationLinkClass: config.constellationLinkClass,

View File

@@ -7,9 +7,8 @@ define([
'app/init',
'app/util',
'app/render',
'config/signature_type',
'bootbox'
], function($, Init, Util, Render, SignatureType, bootbox) {
], function($, Init, Util, Render, bootbox) {
'use strict';
var config = {
@@ -171,16 +170,19 @@ define([
* Updates a signature table, changes all signatures where name matches
* add all new signatures as a row
*
* @param signatureData
* @param signatureDataOrig
* @param deleteOutdatedSignatures -> set to "true" if signatures should be deleted that are not included in "signatureData"
*/
$.fn.updateSignatureTable = function(signatureData, deleteOutdatedSignatures){
$.fn.updateSignatureTable = function(signatureDataOrig, deleteOutdatedSignatures){
// check if table update is allowed
if(disableTableUpdate === true){
return;
}
// clone signature array because of further manipulation
var signatureData = $.extend([], signatureDataOrig);
// disable update until function is ready;
disableTableUpdate = true;
@@ -241,20 +243,19 @@ define([
// delete signatures ====================================================
if(deleteOutdatedSignatures === true){
// callback function after row deleted
var toggleTableRowCallback = function(tempRowElement){
// hide open editable fields on the row before removing them
tempRowElement.find('.editable').editable('destroy');
// delete signature row
signatureTableApi.row(tempRowElement).remove().draw();
};
for(var l = 0; l < tableData.length; l++){
var rowElement = signatureTableApi.row(tableData[l].index).nodes().to$();
rowElement.toggleTableRow(function(tempRowElement){
// hide open editable fields on the row before removing them
tempRowElement.find('.editable').editable('destroy');
// delete signature row
signatureTableApi.row(tempRowElement).remove().draw();
});
rowElement.toggleTableRow(toggleTableRowCallback);
notificationCounter.deleted++;
}
}
@@ -432,6 +433,14 @@ define([
}
}
});
// dialog shown event
signatureReaderDialog.on('shown.bs.modal', function(e) {
// set focus on sig-input textarea
signatureReaderDialog.find('textarea').focus();
});
});
};
@@ -453,6 +462,9 @@ define([
if(signatureData.length > 0){
// save signature data
// lock update function until request is finished
disableTableUpdate = true;
// lock copy during request (prevent spamming (ctrl + c )
disableCopyFromClipboard = true;
@@ -466,6 +478,8 @@ define([
data: requestData,
dataType: 'json'
}).done(function(responseData){
disableTableUpdate = false;
// updates table with new/updated signature information
moduleElement.updateSignatureTable(responseData.signatures, false);
}).fail(function( jqXHR, status, error) {
@@ -473,6 +487,7 @@ define([
Util.showNotify({title: jqXHR.status + ': Update signatures', text: reason, type: 'warning'});
$(document).setProgramStatus('problem');
}).always(function() {
disableTableUpdate = false;
disableCopyFromClipboard = false;
});
}
@@ -681,7 +696,7 @@ define([
var selectedRows = getSelectedRows(signatureTable);
bootbox.confirm('Delete ' + selectedRows.length + ' signature?', function(result) {
bootbox.confirm('Delete ' + selectedRows.data().length + ' signature?', function(result) {
if(result){
deleteSignatures(selectedRows);
}
@@ -1787,6 +1802,7 @@ define([
*/
var getSelectedRows = function(table){
var tableApi = table.api();
var selectedRows = tableApi.rows('.selected');
return selectedRows;

View File

@@ -522,7 +522,6 @@ define([
};
requirejs(['text!templates/tooltip/character_info.html', 'mustache'], function(template, Mustache) {
var content = Mustache.render(template, data);
element.popover({
@@ -541,13 +540,46 @@ define([
// set new popover content
var popover = element.data('bs.popover');
popover.options.content = content;
});
}
}
};
/**
* add a wormhole tooltip with wh specific data to elements
* @param tooltipData
* @returns {*}
*/
$.fn.addWormholeInfoTooltip = function(tooltipData){
return this.each(function() {
var element = $(this);
requirejs(['text!templates/tooltip/wormhole_info.html', 'mustache'], function (template, Mustache) {
var content = Mustache.render(template, tooltipData);
element.popover({
placement: 'top',
html: true,
trigger: 'hover',
content: '',
container: 'body',
title: tooltipData.name +
'<span class="pull-right ' + tooltipData.class +'">' + tooltipData.security + '</span>',
delay: {
show: 250,
hide: 0
}
});
// set new popover content
var popover = element.data('bs.popover');
popover.options.content = content;
});
});
};
/**
* display a custom message (info/warning/error) to a container element
* check: $.fn.showFormMessage() for an other way of showing messages
@@ -1334,6 +1366,9 @@ define([
case '0.0':
areaId = 12;
break;
case 'SH':
areaId = 13;
break;
default:
// w-space
for(var i = 1; i <= 6; i++){

View File

@@ -1,8 +1,8 @@
{
"name": "pathfinder-eve",
"version": "0.0.10",
"engines" : {
"node" : "4.0.x"
"engines": {
"node": "4.0.x"
},
"description": "Pathfinder is a system mapping tool for EVE ONLINE",
"main": "index.php",
@@ -12,12 +12,12 @@
"devDependencies": {
"gulp": "^3.9.0",
"gulp-clean": "^0.3.1",
"gulp-if": "^1.2.5",
"gulp-if": "^2.0.0",
"gulp-jshint": "^1.11.2",
"gulp-notify": "^2.2.0",
"gulp-param": "^0.6.3",
"gulp-plumber": "^1.0.1",
"jshint": "^2.8.0",
"jshint": "^2.9.1-rc1",
"jshint-stylish": "^2.0.1",
"run-sequence": "^1.1.2"
},
@@ -39,7 +39,7 @@
"license": "MIT",
"bugs": {
"url": "https://github.com/exodus4d/pathfinder/issues",
"email" : "pathfinder@exodus4d.de"
"email": "pathfinder@exodus4d.de"
},
"homepage": "https://github.com/exodus4d/pathfinder#readme",
"private": true

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -224,10 +224,10 @@
<blockquote>
<p>
API Key(s) are required to use <em class="pf-brand">pathfinder</em>.
Don't have one? - Create a new key with an empty 'Access Mask' (0).
Don't have one? - Create a new key with an empty 'Access Mask' (8).
</p>
<small>Get your new/custom API Key from
<a href="https://support.eveonline.com/api/Key/CreatePredefined/8/0/" target="_blank">here</a>
<a href="https://community.eveonline.com/support/api-key/CreatePredefined?accessMask=8" target="_blank">here</a>
and come back to this page.
</small>
</blockquote>

View File

@@ -4,7 +4,7 @@
<div class="form-group">
<label class="col-sm-2 control-label" for="form_result">Scan result</label>
<div class="col-sm-10">
<textarea style="resize: vertical" rows="3" id="form_result" name="clipboard" class="form-control custom-scroll"></textarea>
<textarea style="resize: vertical" rows="3" id="form_result" name="clipboard" class="form-control custom-scroll" autofocus></textarea>
<span class="help-block">
Copy and paste signatures from your probe scanning window.
Hit <kbd>ctrl</kbd> + <kbd>c</kbd> (for copy)

View File

@@ -87,12 +87,22 @@
{{/effectName}}
{{#system.statics}}
<tr>
<td></td>
<td class="text-right pf-help {{wormholePrefixClass}}{{name}}">
<i class="fa fa-fw fa-question-circle"></i>
</td>
<td>Static</td>
<td class="text-right">{{name}}</td>
<td class="text-right {{class}}">{{security}}</td>
</tr>
{{/system.statics}}
{{#shatteredWormholeInfo}}
<tr>
<td class="text-right pf-help"></td>
<td>Shattered System</td>
<td class="text-right pf-font-capitalize {{securityClass}}">Unknown statics</td>
<td class="text-right"></td>
</tr>
{{/shatteredWormholeInfo}}
</tbody>
</table>
</div>

View File

@@ -0,0 +1,27 @@
<table>
{{#massTotal}}
<tr>
<td>Max Stable Mass</td>
<td class="text-right">{{format}}</td>
</tr>
{{/massTotal}}
{{#massIndividual}}
<tr>
<td>Max Jump Mass</td>
<td class="text-right">{{format}}</td>
</tr>
{{/massIndividual}}
{{#massRegeneration}}
<tr>
<td>Max Mass Regeneration</td>
<td class="text-right">{{format}}</td>
</tr>
{{/massRegeneration}}
{{#maxStableTime}}
<tr>
<td>Max Lifetime</td>
<td class="text-right">{{format}}</td>
</tr>
{{/maxStableTime}}
</table>

View File

@@ -530,26 +530,10 @@
</div>
</div>
<div class="row">
<div class="col-sm-offset-3 col-xs-12 col-sm-6">
<h4><i class="fa fa-fw fa-angle-double-right"></i>Rules for beta testing phase</h4>
<ul class="fa-ul pf-landing-list">
<li><i></i>Any abuse of following rules may result in server ban!</li>
<li><i></i>You need a valid Registration Key (invite mode is active)</li>
<li>
<ul class="fa-ul">
<li><i></i>The number of keys is limited and will be increased continuously</li>
<li><i></i>Keys are bound to your unique Email address</li>
</ul>
</li>
<li><i></i>Do not use it as your main corp/ally wide mapping tool (for now)</li>
<li>
<ul class="fa-ul">
<li><i></i>There might be security bugs that will be found/fixed during beta testing</li>
<li><i></i>At the beginning of the testing period it is simpler to find/reproduce bugs with a lower number of clients</li>
</ul>
</li>
<li><i></i>You can create a fresh CCP API Key (limited access) for registration</li>
<li><i></i>Please help testing and report any problem/bug you find</li>
<li>

View File

@@ -559,6 +559,10 @@ select:active, select:hover {
color: $blue;
}
.pf-system-sec-unknown{
color: $indigo;
}
// system status ======================================================
.pf-system-status-friendly{

View File

@@ -42,7 +42,7 @@
// system info table
.pf-system-info-table{
font-size: 11px;
white-space: nowrap
white-space: nowrap;
}
}