Finished composer base, fixed issues, Missing tables
Update composer.php, content.php, and 5 more files...
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
// Making sure the file is included and not accessed directly.
|
||||
/*if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
if(basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
header('HTTP/1.1 403 Forbidden');
|
||||
die();
|
||||
}*/
|
||||
}
|
||||
|
||||
// Including required helpers.
|
||||
include_once 'config.php';
|
||||
@@ -33,6 +33,7 @@ abstract class ComposerTemplates {
|
||||
// Defining the different types of elements available.
|
||||
abstract class ComposerElementTypes {
|
||||
const UNSET = "unset";
|
||||
const RAW = "raw";
|
||||
const H1 = "h1";
|
||||
const H2 = "h2";
|
||||
const H3 = "h3";
|
||||
@@ -60,7 +61,7 @@ abstract class ComposerElementTypes {
|
||||
}
|
||||
|
||||
// Defining modifiers.
|
||||
abstract class ComposerElementModifiersTest {
|
||||
abstract class ComposerElementModifiers {
|
||||
// Generic > Margin
|
||||
const GENERIC_MARGIN_NO_TOP = ["no-top-margin", "mt-0"];
|
||||
const GENERIC_MARGIN_NO_BOTTOM = ["no-bottom-margin", "mb-0"];
|
||||
@@ -75,21 +76,30 @@ abstract class ComposerElementModifiersTest {
|
||||
const GENERIC_PADDING_NO_BOTTOM = ["no-bottom-padding", "pb-0"];
|
||||
const GENERIC_PADDING_NO_LEFT = ["no-left-padding", "pl-0"];
|
||||
const GENERIC_PADDING_NO_RIGHT = ["no-right-padding", "pr-0"];
|
||||
const GENERIC_PADDING_NO_X = ["no-y-padding", "px-0"];
|
||||
const GENERIC_PADDING_NO_Y = ["no-x-padding", "py-0"];
|
||||
const GENERIC_PADDING_NO_X = ["no-x-padding", "px-0"];
|
||||
const GENERIC_PADDING_NO_Y = ["no-y-padding", "py-0"];
|
||||
const GENERIC_PADDING_NONE = ["no-padding", "p-0" ];
|
||||
|
||||
// Containers
|
||||
const CONTAINER_SCROLL_HORIZONTAL = ["h-scroll", "overflow-x-scroll hide-scrollbar"];
|
||||
const CONTAINER_SCROLL_HORIZONTAL = ["horizontal-scroll", "overflow-x-scroll hide-scrollbar"];
|
||||
const CONTAINER_CARD = ["card", "card"];
|
||||
|
||||
// Buttons
|
||||
const BUTTON_THIN = ["thin", "?thin"];
|
||||
const BUTTON_THICK = ["thick", "?thick"];
|
||||
const BUTTON_THIN = ["thin", "btn-sm"];
|
||||
const BUTTON_THICK = ["thick", "btn-lg"];
|
||||
const BUTTON_ROUNDED = ["rounded", "btn-rounded"];
|
||||
const BUTTON_CIRCLE = ["circle", "rounded-circle"];
|
||||
|
||||
// Horizontal ruler
|
||||
const HR_SUBTLE = ["subtle", "subtle"];
|
||||
|
||||
// Collapse
|
||||
const DETAILS_NO_ROUNDING = ["no-rounding", ""];
|
||||
const DETAILS_CLOSED = ["closed", ""];
|
||||
|
||||
// Code
|
||||
const CODE_BLOCK = ["code-block", "w-full d-inline-block"];
|
||||
|
||||
// Other internal constants
|
||||
const _INDEX_KEY = 0;
|
||||
const _INDEX_CLASSES = 1;
|
||||
@@ -106,33 +116,33 @@ abstract class ComposerElementModifiersTest {
|
||||
|
||||
/**
|
||||
* Returns the given modifier's constant's key
|
||||
* @param array $modifier_data A modifier constant defined in "ComposerElementModifiersTest".
|
||||
* @param array $modifier_data A modifier constant defined in "ComposerElementModifiers".
|
||||
* @return string The modifier's key or an empty string if an error was encountered.
|
||||
*/
|
||||
static function get_modifier_key(array $modifier_data) : string {
|
||||
return sizeof($modifier_data) >= 1 ? $modifier_data[ComposerElementModifiersTest::_INDEX_KEY] : '';
|
||||
return sizeof($modifier_data) >= 1 ? $modifier_data[ComposerElementModifiers::_INDEX_KEY] : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the given modifier's constant's classes
|
||||
* @param array $modifier_data A modifier constant defined in "ComposerElementModifiersTest".
|
||||
* @param array $modifier_data A modifier constant defined in "ComposerElementModifiers".
|
||||
* @return string The modifier's classes or an empty string if an error was encountered.
|
||||
*/
|
||||
static function get_modifier_classes(array $modifier_data) : string {
|
||||
return sizeof($modifier_data) >= 2 ? $modifier_data[ComposerElementModifiersTest::_INDEX_CLASSES] : '';
|
||||
return sizeof($modifier_data) >= 2 ? $modifier_data[ComposerElementModifiers::_INDEX_CLASSES] : '';
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $modifier_key
|
||||
* @return string The resolved DOM classes, or an empty string if the given modifier is unknown.
|
||||
*/
|
||||
static function getClassesFromKey(string $modifier_key) : string {
|
||||
foreach(ComposerElementModifiersTest::getConstants() as $constant_values) {
|
||||
static function get_classes_from_key(string $modifier_key) : string {
|
||||
foreach(ComposerElementModifiers::getConstants() as $constant_values) {
|
||||
if(!is_array($constant_values)) {
|
||||
continue;
|
||||
}
|
||||
if($modifier_key == $constant_values[ComposerElementModifiersTest::_INDEX_KEY]) {
|
||||
return $constant_values[ComposerElementModifiersTest::_INDEX_CLASSES];
|
||||
if($modifier_key == $constant_values[ComposerElementModifiers::_INDEX_KEY]) {
|
||||
return $constant_values[ComposerElementModifiers::_INDEX_CLASSES];
|
||||
}
|
||||
}
|
||||
return "";
|
||||
@@ -140,7 +150,7 @@ abstract class ComposerElementModifiersTest {
|
||||
|
||||
static function is_modifier_in_modifiers(array $modifier_data, array $modifiers) : bool {
|
||||
foreach($modifiers as $modifier) {
|
||||
if($modifier_data[ComposerElementModifiersTest::_INDEX_KEY] == $modifier) {
|
||||
if($modifier_data[ComposerElementModifiers::_INDEX_KEY] == $modifier) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -182,7 +192,46 @@ class ComposerContent {
|
||||
$htmlCode .= $element->get_html($this);
|
||||
}
|
||||
|
||||
return $this->metadata->apply_template($htmlCode);
|
||||
return $this->metadata->apply_template($this, $htmlCode);
|
||||
}
|
||||
|
||||
public function get_head_title() : string {
|
||||
if(!is_null($this->metadata->head->title)) {
|
||||
return localize_private($this->metadata->head->title, $this->strings, false);
|
||||
}
|
||||
|
||||
return localize("content.default.head.title");
|
||||
}
|
||||
|
||||
public function get_head_description() : string {
|
||||
if(!is_null($this->metadata->head->title)) {
|
||||
return localize_private($this->metadata->head->description, $this->strings, false);
|
||||
}
|
||||
|
||||
return localize("content.default.head.description");
|
||||
}
|
||||
|
||||
public function get_opengraph_tags(?string $title_prefix, ?string $type_override, ?string $url_override,
|
||||
?string $image_url_override, ?string $image_url_fallback) : string {
|
||||
global $host_uri;
|
||||
|
||||
$final_image_uri = (is_null($image_url_override) ? (is_null($this->metadata->opengraph->image) ?
|
||||
$image_url_fallback : $this->metadata->opengraph->image) : $image_url_override);
|
||||
|
||||
return '<meta property="og:title" content="' . (is_null($title_prefix) ? '' : $title_prefix) .
|
||||
(is_null($this->metadata->opengraph->title) ?
|
||||
localize("content.default.opengraph.title") :
|
||||
localize_private($this->metadata->opengraph->title, $this->strings, false)) .
|
||||
'" /><meta property="og:description" content="' . (is_null($this->metadata->opengraph->description) ?
|
||||
localize("content.default.opengraph.description") :
|
||||
localize_private($this->metadata->opengraph->description, $this->strings, false)) .
|
||||
'" /><meta property="og:type" content="' . (is_null($type_override) ?
|
||||
(is_null($this->metadata->opengraph->type) ? "website" : $this->metadata->opengraph->type)
|
||||
: $type_override) . '" /><meta property="og:url" content="' .
|
||||
(is_null($url_override) ? (is_null($this->metadata->opengraph->url) ?
|
||||
$host_uri : $this->metadata->opengraph->url) : $url_override) .
|
||||
'" /><meta property="og:image" content="' . $final_image_uri . '"/>';
|
||||
//<meta property="og:image:type" content="image/png"/>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -190,14 +239,16 @@ class ComposerContentMetadata {
|
||||
public string $title;
|
||||
public string $description;
|
||||
public string $template;
|
||||
public ComposerContentMetadataHead $head;
|
||||
public ComposerContentMetadataOpengraph $opengraph;
|
||||
public ?ComposerContentMetadataArticle $article;
|
||||
|
||||
function __construct(string $title, string $description, string $template, ComposerContentMetadataOpengraph $opengraph,
|
||||
?ComposerContentMetadataArticle $article) {
|
||||
function __construct(string $title, string $description, string $template, ComposerContentMetadataHead $head,
|
||||
ComposerContentMetadataOpengraph $opengraph, ?ComposerContentMetadataArticle $article) {
|
||||
$this->title = $title;
|
||||
$this->description = $description;
|
||||
$this->template = $template;
|
||||
$this->head = $head;
|
||||
$this->opengraph = $opengraph;
|
||||
$this->article = $article;
|
||||
|
||||
@@ -212,6 +263,9 @@ class ComposerContentMetadata {
|
||||
key_exists("title", $json_data) ? $json_data["title"] : "",
|
||||
key_exists("description", $json_data) ? $json_data["description"] : "",
|
||||
key_exists("template", $json_data) ? $json_data["template"] : "",
|
||||
ComposerContentMetadataHead::from_json(
|
||||
key_exists("head", $json_data) ? $json_data["head"] : array()
|
||||
),
|
||||
ComposerContentMetadataOpengraph::from_json(
|
||||
key_exists("opengraph", $json_data) ? $json_data["opengraph"] : array()
|
||||
),
|
||||
@@ -220,12 +274,13 @@ class ComposerContentMetadata {
|
||||
);
|
||||
}
|
||||
|
||||
function apply_template(string $inner_html) : string {
|
||||
function apply_template(ComposerContent $contentRoot, string $inner_html) : string {
|
||||
switch($this->template) {
|
||||
case ComposerTemplates::ARTICLE:
|
||||
$inner_html = '<div class="card p-0 mx-0"><div class="px-card py-10 border-bottom px-20">' .
|
||||
'<div class="container-fluid"><h2 class="card-title font-size-18 m-0">' .
|
||||
'<i class="' . $this->article->icon . '"></i> ' . localize($this->article->title) .
|
||||
'<i class="' . $this->article->icon . '"></i> ' .
|
||||
localize_private($this->article->title, $contentRoot->strings, false) .
|
||||
'<span class="card-title font-size-18 m-0 text-super-muted float-right hidden-xs-and-down">' .
|
||||
'\$subTitle' . '</span></h2></div></div>' .
|
||||
'<article id="content-item-container" class="py-01 pb-0 bg-light-lm rounded-bottom px-0 bg-very-dark title-bkgd">' .
|
||||
@@ -250,35 +305,41 @@ class ComposerContentMetadata {
|
||||
}
|
||||
return $inner_html;
|
||||
}
|
||||
|
||||
/*function start_content_card($iconClasses, $title, $subTitle) {
|
||||
echo('<div class="card p-0 mx-0"><div class="px-card py-10 border-bottom px-20"><div class="container-fluid">');
|
||||
echo('<h2 class="card-title font-size-18 m-0"><i class="'.$iconClasses.'"></i> '.localize($title));
|
||||
echo('<span class="card-title font-size-18 m-0 text-super-muted float-right hidden-xs-and-down">'.$subTitle.'</span></h2>');
|
||||
echo('</div></div>');
|
||||
}
|
||||
|
||||
class ComposerContentMetadataHead {
|
||||
public ?string $title;
|
||||
public ?string $description;
|
||||
|
||||
function end_content_card() {
|
||||
echo('</div>');
|
||||
}*/
|
||||
function __construct(?string $title, ?string $description) {
|
||||
$this->title = $title;
|
||||
$this->description = $description;
|
||||
}
|
||||
|
||||
static function from_json(array $json_data) : ComposerContentMetadataHead {
|
||||
return new ComposerContentMetadataHead(
|
||||
key_exists("title", $json_data) ? $json_data["title"] : null,
|
||||
key_exists("description", $json_data) ? $json_data["description"] : null
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ComposerContentMetadataOpengraph {
|
||||
private ?string $title;
|
||||
private ?string $description;
|
||||
private ?string $type;
|
||||
private ?string $url;
|
||||
private ?string $image;
|
||||
private ?string $imageType;
|
||||
public ?string $title;
|
||||
public ?string $description;
|
||||
public ?string $type;
|
||||
public ?string $url;
|
||||
public ?string $image;
|
||||
public ?string $image_type;
|
||||
|
||||
function __construct(?string $title, ?string $description, ?string $type, ?string $url, ?string $image,
|
||||
?string $imageType) {
|
||||
?string $image_type) {
|
||||
$this->title = $title;
|
||||
$this->description = $description;
|
||||
$this->type = $type;
|
||||
$this->url = $url;
|
||||
$this->image = $image;
|
||||
$this->imageType = $imageType;
|
||||
$this->image_type = $image_type;
|
||||
}
|
||||
|
||||
static function from_json(array $json_data) : ComposerContentMetadataOpengraph {
|
||||
@@ -288,13 +349,9 @@ class ComposerContentMetadataOpengraph {
|
||||
key_exists("type", $json_data) ? $json_data["type"] : null,
|
||||
key_exists("url", $json_data) ? $json_data["url"] : null,
|
||||
key_exists("image", $json_data) ? $json_data["image"] : null,
|
||||
key_exists("imageType", $json_data) ? $json_data["imageType"] : null,
|
||||
key_exists("image_type", $json_data) ? $json_data["image_type"] : null,
|
||||
);
|
||||
}
|
||||
|
||||
public function __get($property) {
|
||||
return is_null($this->$property) ? "" : $this->$property;
|
||||
}
|
||||
}
|
||||
|
||||
class ComposerContentMetadataArticle {
|
||||
@@ -326,6 +383,7 @@ class ComposerElement {
|
||||
// Global parameters
|
||||
private string $type;
|
||||
private ?array $modifiers;
|
||||
private ?string $link;
|
||||
|
||||
// Any direct element-container
|
||||
private ?array $parts;
|
||||
@@ -353,11 +411,15 @@ class ComposerElement {
|
||||
// Code's parameters
|
||||
private ?array $code;
|
||||
|
||||
function __construct(string $type, ?array $modifiers, ?array $parts, ?string $content, bool $localize,
|
||||
?int $padding, ?int $margin, ?int $size, ?array $head, ?array $body, ?int $colspan,
|
||||
?int $rowspan, ?int $indent, ?array $code) {
|
||||
// Button's parameters
|
||||
private ?string $color;
|
||||
|
||||
function __construct(string $type, ?array $modifiers, ?string $link, ?array $parts, ?string $content,
|
||||
bool $localize, ?int $padding, ?int $margin, ?int $size, ?array $head, ?array $body,
|
||||
?int $colspan, ?int $rowspan, ?int $indent, ?array $code, ?string $color) {
|
||||
$this->type = $type;
|
||||
$this->modifiers = $modifiers;
|
||||
$this->link = $link;
|
||||
$this->parts = $parts;
|
||||
$this->content = $content;
|
||||
$this->localize = $localize;
|
||||
@@ -370,6 +432,7 @@ class ComposerElement {
|
||||
$this->rowspan = $rowspan;
|
||||
$this->indent = $indent;
|
||||
$this->code = $code;
|
||||
$this->color = $color;
|
||||
}
|
||||
|
||||
static function from_json_array(array $json_dataArray) : array {
|
||||
@@ -383,7 +446,8 @@ class ComposerElement {
|
||||
static function from_json(array $json_data) : ComposerElement {
|
||||
return new ComposerElement(
|
||||
key_exists("type", $json_data) ? $json_data["type"] : ComposerElementTypes::UNSET,
|
||||
key_exists("modifiers", $json_data) ? $json_data["modifiers"] : null,
|
||||
key_exists("modifiers", $json_data) ? $json_data["modifiers"] : [],
|
||||
key_exists("link", $json_data) ? $json_data["link"] : null,
|
||||
key_exists("parts", $json_data) ? ComposerElement::from_json_array($json_data["parts"]) : null,
|
||||
key_exists("content", $json_data) ? $json_data["content"] : null,
|
||||
key_exists("localize", $json_data) ? $json_data["localize"] : true,
|
||||
@@ -396,6 +460,7 @@ class ComposerElement {
|
||||
key_exists("rowspan", $json_data) ? $json_data["rowspan"] : null,
|
||||
key_exists("indent", $json_data) ? $json_data["indent"] : null,
|
||||
key_exists("code", $json_data) ? $json_data["code"] : null,
|
||||
key_exists("color", $json_data) ? $json_data["color"] : null,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -473,7 +538,7 @@ class ComposerElement {
|
||||
// Combining classes.
|
||||
foreach($this->modifiers as $modifier) {
|
||||
/** @var string $modifier */
|
||||
$classes .= ComposerElementModifiersTest::getClassesFromKey($modifier) . ' ';
|
||||
$classes .= ComposerElementModifiers::get_classes_from_key($modifier) . ' ';
|
||||
}
|
||||
|
||||
// Removing redundant and useless spaces.
|
||||
@@ -491,10 +556,18 @@ class ComposerElement {
|
||||
public function get_html(ComposerContent $contentRoot) : string {
|
||||
$htmlCode = "";
|
||||
|
||||
if(!is_null($this->link)) {
|
||||
$htmlCode .= '<a href="' . $this->link . '">';
|
||||
}
|
||||
|
||||
switch($this->type) {
|
||||
case ComposerElementTypes::UNSET:
|
||||
$htmlCode .= "<p>error.unset !</p>";
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::RAW:
|
||||
$htmlCode .= $this->get_inner_html($contentRoot);
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::H1:
|
||||
case ComposerElementTypes::H2:
|
||||
@@ -517,14 +590,18 @@ class ComposerElement {
|
||||
|
||||
// Composing the paragraph
|
||||
$htmlCode .= '<p class="' .
|
||||
(ComposerElementModifiersTest::is_modifier_in_modifiers(
|
||||
ComposerElementModifiersTest::GENERIC_MARGIN_NO_TOP, $this->modifiers)
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_MARGIN_NO_TOP, $this->modifiers)
|
||||
? 'mt-0 mb-10' : 'my-10') . ' ml-md-' . ($_paragraph_ident_level * 5) . '">' .
|
||||
$this->get_inner_html($contentRoot) . '</p>';
|
||||
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::BUTTON:
|
||||
// Composing the button.
|
||||
$htmlCode .= '<button class="' . (is_null($this->color) ? '' : 'btn-' . $this->color) .
|
||||
$this->get_modifiers_classes() . '">' . $this->get_inner_html($contentRoot) . '</button>';
|
||||
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::CODE:
|
||||
@@ -532,8 +609,9 @@ class ComposerElement {
|
||||
$_paragraph_ident_level = is_null($this->indent) ? 0 : $this->indent;
|
||||
|
||||
// Opening the code element.
|
||||
// Note: The "mt-10" may have to be removed if it clashes with 'no-margin-top' !
|
||||
$htmlCode .= '<code class="code ' . $this->get_modifiers_classes() .
|
||||
' ml-md-' . ($_paragraph_ident_level * 5) . '">';
|
||||
' mt-10 ml-md-' . ($_paragraph_ident_level * 5) . '">';
|
||||
|
||||
// Adding code lines.
|
||||
if(!is_null($this->code)) {
|
||||
@@ -564,19 +642,75 @@ class ComposerElement {
|
||||
// Defining the padding's size.
|
||||
$_container_padding = is_null($this->padding) ? 10 : $this->padding;
|
||||
|
||||
// Getting the modifiers' classes
|
||||
$_container_classes = $this->get_modifiers_classes();
|
||||
|
||||
// Composing the container.
|
||||
$htmlCode .= '<div class="mt-10 p-' . $_container_padding .
|
||||
(empty($_container_classes) ? '' : ' ' . $_container_classes) . '">' .
|
||||
// FIXME: Can be re-standardized if a check for the default mt-10 is added at the end after adding the mods.
|
||||
$htmlCode .= '<div class="' .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::CONTAINER_CARD, $this->modifiers
|
||||
) ? ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::CONTAINER_CARD ) . "m-0 " : "") .
|
||||
'p-' . $_container_padding .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_MARGIN_NO_TOP, $this->modifiers
|
||||
) ? "" : " mt-10") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_X, $this->modifiers
|
||||
) ? " " . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_X ) : "") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_BOTTOM, $this->modifiers
|
||||
) ? " " . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_BOTTOM ) : "") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_TOP, $this->modifiers
|
||||
) ? " " . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NO_TOP ) : "") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::CONTAINER_SCROLL_HORIZONTAL, $this->modifiers
|
||||
) ? " " . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::CONTAINER_SCROLL_HORIZONTAL ) : "") . '">' .
|
||||
$this->get_inner_html($contentRoot) . '</div>';
|
||||
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::COLLAPSE:
|
||||
break;
|
||||
// Composing collapse.
|
||||
$htmlCode .= '<details class="collapse-panel w-full' .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_MARGIN_NO_TOP, $this->modifiers
|
||||
) ? ' ' . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::GENERIC_MARGIN_NO_TOP) : '') . '" ' .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::DETAILS_CLOSED, $this->modifiers
|
||||
) ? "closed" : "open") . '>';
|
||||
|
||||
$htmlCode .= '<summary class="collapse-header p-10 px-15 text-truncate without-arrow' .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::DETAILS_NO_ROUNDING, $this->modifiers
|
||||
) ? ' rounded-0' : '') . ' border-left-0 border-right-0">';
|
||||
|
||||
$_title = "title";
|
||||
$_subtitle = "subtitle";
|
||||
|
||||
$htmlCode .= '<h4 class="font-size-16 m-0 align-middle no-select">' .
|
||||
'<i class="fad fa-angle-down hidden-collapse-closed font-size-24"></i>' .
|
||||
'<i class="fad fa-angle-up hidden-collapse-open font-size-24"></i>' .
|
||||
'<span class="font-weight-semi-bold align-top"> '.$_title.
|
||||
'<span class="ml-20 text-muted">'.$_subtitle.'</span></span></h4></summary>';
|
||||
|
||||
$htmlCode .= '<div class="collapse-content' .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::CONTAINER_SCROLL_HORIZONTAL, $this->modifiers
|
||||
) ? " " . ComposerElementModifiers::get_modifier_classes(
|
||||
ComposerElementModifiers::CONTAINER_SCROLL_HORIZONTAL ) : "") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::GENERIC_PADDING_NONE, $this->modifiers
|
||||
) ? " p-0 py-01" : "") .
|
||||
(ComposerElementModifiers::is_modifier_in_modifiers(
|
||||
ComposerElementModifiers::DETAILS_NO_ROUNDING, $this->modifiers
|
||||
) ? " rounded-0" : "") . ' border-0 border-bottom">' .
|
||||
$this->get_inner_html($contentRoot) . '</div></details>';
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::SPACER:
|
||||
// Defining the spacer's size.
|
||||
$_spacer_size = is_null($this->size) ? 1 : $this->size;
|
||||
@@ -588,10 +722,13 @@ class ComposerElement {
|
||||
|
||||
case ComposerElementTypes::IMAGE:
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::TABLE:
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::GRID:
|
||||
break;
|
||||
|
||||
case ComposerElementTypes::GLIDER:
|
||||
break;
|
||||
|
||||
@@ -600,6 +737,10 @@ class ComposerElement {
|
||||
break;
|
||||
}
|
||||
|
||||
if(!is_null($this->link)) {
|
||||
$htmlCode .= '</a>';
|
||||
}
|
||||
|
||||
return $htmlCode;
|
||||
}
|
||||
}
|
||||
|
@@ -186,9 +186,9 @@ function processStandardContentSubNode(mixed $elementNode, string $prepend="", s
|
||||
echo($prepend.getContentItemText($elementNode["content"], false, true).$append);
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
function createElementNode(mixed $elementNode, string $prepend="", string $append="") : void {
|
||||
/*function createElementNode(mixed $elementNode, string $prepend="", string $append="") : void {
|
||||
// Checking if we actually have a JSON object.
|
||||
if(!is_array($elementNode)) {
|
||||
echo('<p>Not array node !</p>');
|
||||
@@ -615,7 +615,6 @@ function createElementNode(mixed $elementNode, string $prepend="", string $appen
|
||||
default:
|
||||
printErrorTextElement(sprintf(localize("error.content.data.part.unknown"), $elementNode["type"]));
|
||||
break;
|
||||
}
|
||||
}*/
|
||||
}/**/
|
||||
|
||||
?>
|
||||
|
@@ -144,6 +144,11 @@
|
||||
"content.commons.download.multiple": "Downloads",
|
||||
"content.commons.version": "Version",
|
||||
|
||||
"content.default.head.title" : "No title found !",
|
||||
"content.default.head.description" : "No description found !",
|
||||
"content.default.opengraph.title" : "No title found !",
|
||||
"content.default.opengraph.description" : "No description found !",
|
||||
|
||||
"about.biography.title": "Who am I ?",
|
||||
"about.philosophy.title": "Projects philosophy",
|
||||
"about.skills.title": "Skills",
|
||||
@@ -295,6 +300,11 @@
|
||||
"content.commons.download.multiple": "Téléchargements",
|
||||
"content.commons.version": "Version",
|
||||
|
||||
"content.default.head.title" : "Aucun titre trouvé !",
|
||||
"content.default.head.description" : "Aucune description trouvée !",
|
||||
"content.default.opengraph.title" : "Aucun titre trouvé !",
|
||||
"content.default.opengraph.description" : "Aucune description trouvée !",
|
||||
|
||||
"about.biography.title": "Qui suis-je ?",
|
||||
"about.philosophy.title": "Philosophie des projets",
|
||||
"about.skills.title": "Compétences",
|
||||
|
@@ -26,39 +26,34 @@ if($content_has_error) {
|
||||
<?php
|
||||
include 'headers.php';
|
||||
|
||||
// Setting up the common variables.
|
||||
// Setting up the page's title, description and opengraph tags.
|
||||
if($content_has_error) {
|
||||
$_metaTitle = localize("error.content.title.generic");
|
||||
$_metaDescription = $content_error_message;
|
||||
echo('<title>' . localize("error.content.title.generic") . ' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="'.$content_error_message.'">');
|
||||
echo('<meta property="og:title" content="Nibble Poker - '.localize("error.content.title.generic").'" />');
|
||||
echo('<meta property="og:description" content="'.$content_error_message.'"/>');
|
||||
echo('<meta property="og:type" content="website" />');
|
||||
echo('<meta property="og:url" content="' . $host_uri . '" />');
|
||||
echo('<meta property="og:image" content="' . $host_uri . '/resources/Azias/logos/opengraph.png"/>');
|
||||
echo('<meta property="og:image:type" content="image/png"/>');
|
||||
} else {
|
||||
$_metaTitle = localize("error.content.data.no.title");
|
||||
$_metaDescription = localize("error.content.data.no.description");
|
||||
/*if($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
if(array_key_exists("meta", $requested_item_data)) {
|
||||
if(array_key_exists("title", $requested_item_data["meta"])) {
|
||||
$_metaTitle = getContentItemText($requested_item_data["meta"]["title"]);
|
||||
}
|
||||
if(array_key_exists("description", $requested_item_data["meta"])) {
|
||||
$_metaDescription = getContentItemText($requested_item_data["meta"]["description"]);
|
||||
}
|
||||
}
|
||||
if($requested_content_display_type == ContentDisplayType::CONTENT) {
|
||||
echo('<title>'.$content->get_head_title().' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="'.$content->get_head_description().'">');
|
||||
echo($content->get_opengraph_tags("Nibble Poker - ", "website", $host_uri,
|
||||
null, $host_uri . "/resources/Azias/logos/opengraph.png"));
|
||||
} else {
|
||||
$_metaTitle = localize("content.title.search.card");
|
||||
$_metaDescription = "";
|
||||
}/**/
|
||||
echo('<title>' . localize("content.title.search.card") . ' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="">');
|
||||
echo('<meta property="og:title" content="Nibble Poker - '.localize("content.title.search.card").'" />');
|
||||
echo('<meta property="og:description" content=""/>');
|
||||
echo('<meta property="og:type" content="website" />');
|
||||
echo('<meta property="og:url" content="' . $host_uri . '" />');
|
||||
echo('<meta property="og:image" content="' . $host_uri . '/resources/Azias/logos/opengraph.png"/>');
|
||||
echo('<meta property="og:image:type" content="image/png"/>');
|
||||
}
|
||||
}
|
||||
//$content->metadata->title
|
||||
|
||||
// Printing the title, meta and opengraph tags.
|
||||
echo('<title>'.$_metaTitle.' - Nibble Poker</title>');
|
||||
echo('<meta name="description" content="'.$_metaDescription.'">');
|
||||
echo('<meta property="og:title" content="Nibble Poker - '.$_metaTitle.'" />');
|
||||
echo('<meta property="og:description" content="'.$_metaDescription.'"/>');
|
||||
?>
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="<?php echo($host_uri); ?>/" />
|
||||
<meta property="og:image" content="<?php echo($host_uri); ?>/resources/Azias/logos/opengraph.png"/>
|
||||
<meta property="og:image:type" content="image/png"/>
|
||||
<link href="/resources/GliderJs/1.7.6/glider.min.css" rel="stylesheet" />
|
||||
</head>
|
||||
<body class="with-custom-webkit-scrollbars with-custom-css-scrollbars dark-mode" data-dm-shortcut-enabled="true" data-sidebar-shortcut-enabled="true">
|
||||
|
370
content/items/lscom-cli.bak.json
Normal file
370
content/items/lscom-cli.bak.json
Normal file
@@ -0,0 +1,370 @@
|
||||
{
|
||||
"title": {
|
||||
"icon": "fad fa-terminal",
|
||||
"page": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"card": {
|
||||
"main": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"sub": {"en": "<a href=\"https://github.com/aziascreations/PB-ListComPort\"><i class=\"fab fa-github\"></i></a>"}
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"title": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"description": {
|
||||
"en": "A simple CLI tool that can list COM ports with their name, friendly name and device name easily and cleanly.",
|
||||
"fr": "Un petit utilitaire pour invité de commande qui permet de facilement lister les noms, noms formatés et chemin des ports COM."
|
||||
}
|
||||
},
|
||||
"parts": [
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Introduction"}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {"en": "A simple cli tool that can list COM ports with their full name easily and cleanly."}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {
|
||||
"en": "This tool is intended to replace the tedious task of having to use the <code class=\"code\">mode</code> command, and the <i>Device Manager</i> to find a newly plugged-in device that provides a COM port."
|
||||
}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {
|
||||
"en": "The earliest version of Windows that can be used is Windows XP x64 or Windows Vista due to the fact that RegGetValueW is not available on older versions of Windows."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-top-padding", "no-bottom-padding"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Usage", "fr": "Utilisation"}
|
||||
},{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["full-width", "horizontal-scroll"],
|
||||
"code": [
|
||||
"lscom.exe [-a|--show-all] [-d|--show-device] [-D <str>|--divider <str>] [-f|--show-friendly]",
|
||||
" [-h|--help] [-n|--show-name-raw] [-P|--no-pretty] [-s|--sort] [-S|--sort-reverse]",
|
||||
" [-t|--tab-padding] [-v|--version] [-V|--version-only]",
|
||||
"",
|
||||
"Launch arguments:",
|
||||
" -a, --show-all Display the complete port's name (Equal to '-dfn')",
|
||||
" -d, --show-device Displays the port's device name",
|
||||
" -D <str>, --divider <str> Uses the given string or char as a separator (Can be empty string !)",
|
||||
" -f, --show-friendly Displays the port's friendly name",
|
||||
" -h, --help Display this help text",
|
||||
" -n, --show-name-raw Displays the port's raw name (See remarks section)",
|
||||
" -P, --no-pretty Disables the pretty printing format (Equal to -D \" \")",
|
||||
" -s, --sort Sorts the port based on their raw names in an ascending order",
|
||||
" -S, --sort-reverse Sorts the port based on their raw names in a descending order",
|
||||
" -t, --tab-padding Use tabs for padding between the types of names (Overrides '-D')",
|
||||
" -v, --version Shows the utility's version number and other info",
|
||||
" -V, --version-only Shows the utility's version number only (Overrides '-v')"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-top-padding", "no-bottom-padding"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Output formatting", "fr": "Formatage de sortie"}
|
||||
},{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["full-width", "horizontal-scroll"],
|
||||
"code": [
|
||||
" *┬> No launch arguments:",
|
||||
" └──> ${Raw name} => COM1",
|
||||
" *┬> '-d' or '-f'",
|
||||
" ├──> ${Device name} => \\Device\\Serial1",
|
||||
" └──> ${Friendly name} => Communications Port",
|
||||
" *┬> '-d' and '-f'",
|
||||
" └──> ${Friendly name} [${Device name}] => Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-d'",
|
||||
" └──> ${Raw name} [$DeviceName] => COM1 [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-f'",
|
||||
" └──> ${Raw name} - ${Friendly name} => COM1 - Communications Port",
|
||||
" *┬> '-ndf' or '-a'",
|
||||
" └──> ${Raw name} - ${Friendly name} [${Device name}] => COM1 - Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-ndfp' or '-ap'",
|
||||
" └──> ${Raw name} ${Friendly name} ${Device name} => COM1 Communications Port \\Device\\Serial1",
|
||||
" *┬> '-ndfD \";\"' or '-aD \";\"'",
|
||||
" └──> ${Raw name};${Friendly name};${Device name} => COM1;Communications Port;\\Device\\Serial1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.current"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table",
|
||||
"modifiers": ["striped", "inner-bordered"],
|
||||
"head": [
|
||||
{"key": "content.commons.cpu.responsive"},
|
||||
{"key": "content.commons.lang"},
|
||||
{"key": "content.commons.download.single"}
|
||||
],
|
||||
"body": [
|
||||
[
|
||||
{"key": "content.commons.cpu.x64", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_eng_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_fra_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_eng_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_fra_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
]
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.previous.multiple"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table",
|
||||
"modifiers": ["striped", "inner-bordered"],
|
||||
"head": [
|
||||
{"key": "content.commons.version"},
|
||||
{"key": "content.commons.cpu.responsive"},
|
||||
{"key": "content.commons.lang"},
|
||||
{"key": "content.commons.download.single"}
|
||||
],
|
||||
"body": [
|
||||
[
|
||||
{"en": "v2.0.0", "rowspan": 4},
|
||||
{"key": "content.commons.cpu.x64", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_eng_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_fra_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [
|
||||
{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_eng_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}
|
||||
]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_fra_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"en": "v1.1.0", "rowspan": 2},
|
||||
{"key": "content.commons.cpu.x64"},
|
||||
{"key": "lang.english", "rowspan": 2},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/lscom-x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/lscom-x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"en": "v1.0.0", "rowspan": 2},
|
||||
{"key": "content.commons.cpu.x64"},
|
||||
{"key": "lang.english", "rowspan": 2},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/lscom-x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/lscom-x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
]
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.source"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table", "modifiers": ["striped", "inner-bordered"],
|
||||
"head": [{"key": "content.commons.version"}, {"key": "content.commons.download.multiple"}],
|
||||
"body": [[
|
||||
{"en": "v2.1.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/2.1.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.1.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/2.1.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.1.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v2.0.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/2.0.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.0.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/2.0.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.0.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v1.1.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/1.1.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.1.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/1.1.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.1.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v1.0.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/1.0.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.0.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/1.0.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.0.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
]]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{"type": "spacer", "size": 1}
|
||||
],
|
||||
"tags": ["application", "lscom", "purebasic", "windows"]
|
||||
}
|
@@ -1,370 +1,123 @@
|
||||
{
|
||||
"title": {
|
||||
"icon": "fad fa-terminal",
|
||||
"page": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"card": {
|
||||
"main": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"sub": {"en": "<a href=\"https://github.com/aziascreations/PB-ListComPort\"><i class=\"fab fa-github\"></i></a>"}
|
||||
"strings": {
|
||||
"en": {
|
||||
"meta.title": "PB-ListComPort",
|
||||
"meta.description": "A simple CLI tool that can list COM ports with their name, friendly name and device name easily and cleanly.",
|
||||
"article.subtitle": "subtitle here",
|
||||
"intro.title": "Introduction",
|
||||
"intro.p1": "A simple cli tool that can list COM ports with their full name easily and cleanly.",
|
||||
"intro.p2": "This tool is intended to replace the tedious task of having to use the <code class=\"code\">mode</code> command, and the <i>Device Manager</i> to find a newly plugged-in device that provides a COM port.",
|
||||
"intro.p3": "The earliest version of Windows that can be used is Windows XP x64 or Windows Vista due to the fact that RegGetValueW is not available on older versions of Windows.",
|
||||
"usage.title": "Usage",
|
||||
"formatting.title": "Output formatting"
|
||||
},
|
||||
"fr": {
|
||||
"meta.title": "PB-ListComPort",
|
||||
"meta.description": "Un petit utilitaire pour invité de commande qui permet de facilement lister les noms, noms formatés et chemin des ports COM.",
|
||||
"article.subtitle": "subtitle here",
|
||||
"intro.title": "Introduction",
|
||||
"_intro.p1": "",
|
||||
"_intro.p2": "",
|
||||
"_intro.p3": "",
|
||||
"usage.title": "Utilisation",
|
||||
"formatting.title": "Formatage de sortie"
|
||||
}
|
||||
},
|
||||
"meta": {
|
||||
"title": {"en": "PB-ListComPort", "fr": "PB-ListComPort"},
|
||||
"description": {
|
||||
"en": "A simple CLI tool that can list COM ports with their name, friendly name and device name easily and cleanly.",
|
||||
"fr": "Un petit utilitaire pour invité de commande qui permet de facilement lister les noms, noms formatés et chemin des ports COM."
|
||||
"metadata": {
|
||||
"template": "article",
|
||||
"head": {
|
||||
"title": "meta.title",
|
||||
"description": "meta.description"
|
||||
},
|
||||
"opengraph": {
|
||||
"title": "meta.title",
|
||||
"description": "meta.description",
|
||||
"type": null,
|
||||
"url": null,
|
||||
"image": null,
|
||||
"image_type": null
|
||||
},
|
||||
"article": {
|
||||
"icon": "fad fa-terminal",
|
||||
"title": "meta.title",
|
||||
"_subtitle": "article.subtitle",
|
||||
"tags": ["application", "lscom", "purebasic", "windows"]
|
||||
}
|
||||
},
|
||||
"parts": [
|
||||
"elements": [
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Introduction"}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {"en": "A simple cli tool that can list COM ports with their full name easily and cleanly."}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {
|
||||
"en": "This tool is intended to replace the tedious task of having to use the <code class=\"code\">mode</code> command, and the <i>Device Manager</i> to find a newly plugged-in device that provides a COM port."
|
||||
}
|
||||
},{
|
||||
"type": "paragraph", "indent": 2,
|
||||
"content": {
|
||||
"en": "The earliest version of Windows that can be used is Windows XP x64 or Windows Vista due to the fact that RegGetValueW is not available on older versions of Windows."
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"parts": [
|
||||
{"type": "h1", "content": "intro.title"},
|
||||
{"type": "paragraph", "indent": 2, "content": "intro.p1"},
|
||||
{"type": "paragraph", "indent": 2, "content": "intro.p2"},
|
||||
{"type": "paragraph", "indent": 2, "content": "intro.p3"}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-top-padding", "no-bottom-padding"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Usage", "fr": "Utilisation"}
|
||||
},{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["full-width", "horizontal-scroll"],
|
||||
"code": [
|
||||
"lscom.exe [-a|--show-all] [-d|--show-device] [-D <str>|--divider <str>] [-f|--show-friendly]",
|
||||
" [-h|--help] [-n|--show-name-raw] [-P|--no-pretty] [-s|--sort] [-S|--sort-reverse]",
|
||||
" [-t|--tab-padding] [-v|--version] [-V|--version-only]",
|
||||
"",
|
||||
"Launch arguments:",
|
||||
" -a, --show-all Display the complete port's name (Equal to '-dfn')",
|
||||
" -d, --show-device Displays the port's device name",
|
||||
" -D <str>, --divider <str> Uses the given string or char as a separator (Can be empty string !)",
|
||||
" -f, --show-friendly Displays the port's friendly name",
|
||||
" -h, --help Display this help text",
|
||||
" -n, --show-name-raw Displays the port's raw name (See remarks section)",
|
||||
" -P, --no-pretty Disables the pretty printing format (Equal to -D \" \")",
|
||||
" -s, --sort Sorts the port based on their raw names in an ascending order",
|
||||
" -S, --sort-reverse Sorts the port based on their raw names in a descending order",
|
||||
" -t, --tab-padding Use tabs for padding between the types of names (Overrides '-D')",
|
||||
" -v, --version Shows the utility's version number and other info",
|
||||
" -V, --version-only Shows the utility's version number only (Overrides '-v')"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
"parts": [
|
||||
{"type": "h1", "content": "usage.title"},
|
||||
{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["horizontal-scroll", "code-block"],
|
||||
"code": [
|
||||
"lscom.exe [-a|--show-all] [-d|--show-device] [-D <str>|--divider <str>] [-f|--show-friendly]",
|
||||
" [-h|--help] [-n|--show-name-raw] [-P|--no-pretty] [-s|--sort] [-S|--sort-reverse]",
|
||||
" [-t|--tab-padding] [-v|--version] [-V|--version-only]",
|
||||
"",
|
||||
"Launch arguments:",
|
||||
" -a, --show-all Display the complete port's name (Equal to '-dfn')",
|
||||
" -d, --show-device Displays the port's device name",
|
||||
" -D <str>, --divider <str> Uses the given string or char as a separator (Can be empty string !)",
|
||||
" -f, --show-friendly Displays the port's friendly name",
|
||||
" -h, --help Display this help text",
|
||||
" -n, --show-name-raw Displays the port's raw name (See remarks section)",
|
||||
" -P, --no-pretty Disables the pretty printing format (Equal to -D \" \")",
|
||||
" -s, --sort Sorts the port based on their raw names in an ascending order",
|
||||
" -S, --sort-reverse Sorts the port based on their raw names in a descending order",
|
||||
" -t, --tab-padding Use tabs for padding between the types of names (Overrides '-D')",
|
||||
" -v, --version Shows the utility's version number and other info",
|
||||
" -V, --version-only Shows the utility's version number only (Overrides '-v')"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 20,
|
||||
"modifiers": ["no-top-padding", "no-bottom-padding"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1",
|
||||
"content": {"en": "Output formatting", "fr": "Formatage de sortie"}
|
||||
},{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["full-width", "horizontal-scroll"],
|
||||
"code": [
|
||||
" *┬> No launch arguments:",
|
||||
" └──> ${Raw name} => COM1",
|
||||
" *┬> '-d' or '-f'",
|
||||
" ├──> ${Device name} => \\Device\\Serial1",
|
||||
" └──> ${Friendly name} => Communications Port",
|
||||
" *┬> '-d' and '-f'",
|
||||
" └──> ${Friendly name} [${Device name}] => Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-d'",
|
||||
" └──> ${Raw name} [$DeviceName] => COM1 [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-f'",
|
||||
" └──> ${Raw name} - ${Friendly name} => COM1 - Communications Port",
|
||||
" *┬> '-ndf' or '-a'",
|
||||
" └──> ${Raw name} - ${Friendly name} [${Device name}] => COM1 - Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-ndfp' or '-ap'",
|
||||
" └──> ${Raw name} ${Friendly name} ${Device name} => COM1 Communications Port \\Device\\Serial1",
|
||||
" *┬> '-ndfD \";\"' or '-aD \";\"'",
|
||||
" └──> ${Raw name};${Friendly name};${Device name} => COM1;Communications Port;\\Device\\Serial1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.current"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table",
|
||||
"modifiers": ["striped", "inner-bordered"],
|
||||
"head": [
|
||||
{"key": "content.commons.cpu.responsive"},
|
||||
{"key": "content.commons.lang"},
|
||||
{"key": "content.commons.download.single"}
|
||||
],
|
||||
"body": [
|
||||
[
|
||||
{"key": "content.commons.cpu.x64", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_eng_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_fra_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_eng_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/lscom_fra_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
]
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.previous.multiple"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table",
|
||||
"modifiers": ["striped", "inner-bordered"],
|
||||
"head": [
|
||||
{"key": "content.commons.version"},
|
||||
{"key": "content.commons.cpu.responsive"},
|
||||
{"key": "content.commons.lang"},
|
||||
{"key": "content.commons.download.single"}
|
||||
],
|
||||
"body": [
|
||||
[
|
||||
{"en": "v2.0.0", "rowspan": 4},
|
||||
{"key": "content.commons.cpu.x64", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_eng_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_fra_x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86", "rowspan": 2},
|
||||
{"key": "lang.english"},
|
||||
{
|
||||
"parts": [
|
||||
{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_eng_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_eng_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}
|
||||
]
|
||||
}
|
||||
],[
|
||||
{"key": "lang.french"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/lscom_fra_x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom_fra_x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"en": "v1.1.0", "rowspan": 2},
|
||||
{"key": "content.commons.cpu.x64"},
|
||||
{"key": "lang.english", "rowspan": 2},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/lscom-x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/lscom-x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"en": "v1.0.0", "rowspan": 2},
|
||||
{"key": "content.commons.cpu.x64"},
|
||||
{"key": "lang.english", "rowspan": 2},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/lscom-x64.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x64.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
],[
|
||||
{"key": "content.commons.cpu.x86"},
|
||||
{
|
||||
"parts": [{
|
||||
"type": "button", "link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/lscom-x86.exe",
|
||||
"modifiers": ["thin"],
|
||||
"content": {"en": "<span class=\"text-monospace\">lscom-x86.exe</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]
|
||||
}
|
||||
]
|
||||
]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"type": "container", "padding": 10,
|
||||
"modifiers": ["no-top-margin"],
|
||||
"content": {
|
||||
"parts": [
|
||||
{
|
||||
"type": "h1", "modifiers": ["no-top-margin"],
|
||||
"content": {"key": "content.commons.version.source"}
|
||||
},{
|
||||
"type": "spacer", "size": 1
|
||||
},{
|
||||
"type": "container", "padding": 0,
|
||||
"modifiers": ["no-bottom-padding", "no-top-margin", "card", "horizontal-scroll"],
|
||||
"content": {
|
||||
"parts": [{
|
||||
"type": "table", "modifiers": ["striped", "inner-bordered"],
|
||||
"head": [{"key": "content.commons.version"}, {"key": "content.commons.download.multiple"}],
|
||||
"body": [[
|
||||
{"en": "v2.1.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/2.1.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.1.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.1.0/2.1.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.1.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v2.0.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/2.0.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.0.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/2.0.0/2.0.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">2.0.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v1.1.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/1.1.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.1.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.1.0/1.1.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.1.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
],[
|
||||
{"en": "v1.0.0"},
|
||||
{"parts": [{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/1.0.0.zip",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.0.0.zip</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
},{
|
||||
"type": "button", "modifiers": ["thin"],
|
||||
"link": "https://files.nibblepoker.lu/downloads/PB-ListComPort/1.0.0/1.0.0.tar.gz",
|
||||
"content": {"en": "<span class=\"text-monospace\">1.0.0.tar.gz</span><i class=\"fas fa-download ml-10\"></i>"}
|
||||
}]}
|
||||
]]
|
||||
}]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"parts": [
|
||||
{"type": "h1", "content": "formatting.title"},
|
||||
{
|
||||
"type": "code", "indent": 2,
|
||||
"modifiers": ["horizontal-scroll", "code-block"],
|
||||
"code": [
|
||||
" *┬> No launch arguments:",
|
||||
" └──> ${Raw name} => COM1",
|
||||
" *┬> '-d' or '-f'",
|
||||
" ├──> ${Device name} => \\Device\\Serial1",
|
||||
" └──> ${Friendly name} => Communications Port",
|
||||
" *┬> '-d' and '-f'",
|
||||
" └──> ${Friendly name} [${Device name}] => Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-d'",
|
||||
" └──> ${Raw name} [$DeviceName] => COM1 [\\Device\\Serial1]",
|
||||
" *┬> '-n' and '-f'",
|
||||
" └──> ${Raw name} - ${Friendly name} => COM1 - Communications Port",
|
||||
" *┬> '-ndf' or '-a'",
|
||||
" └──> ${Raw name} - ${Friendly name} [${Device name}] => COM1 - Communications Port [\\Device\\Serial1]",
|
||||
" *┬> '-ndfp' or '-ap'",
|
||||
" └──> ${Raw name} ${Friendly name} ${Device name} => COM1 Communications Port \\Device\\Serial1",
|
||||
" *┬> '-ndfD \";\"' or '-aD \";\"'",
|
||||
" └──> ${Raw name};${Friendly name};${Device name} => COM1;Communications Port;\\Device\\Serial1"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{"type": "spacer", "size": 1}
|
||||
],
|
||||
"tags": ["application", "lscom", "purebasic", "windows"]
|
||||
]
|
||||
}
|
||||
|
@@ -31,7 +31,7 @@
|
||||
"article": {
|
||||
"icon": "fad fa-terminal",
|
||||
"title": "title.article",
|
||||
"tags": ["fuck", "you"]
|
||||
"tags": ["joe", "mama"]
|
||||
}
|
||||
},
|
||||
"elements": [
|
||||
|
Reference in New Issue
Block a user