Updated
This commit is contained in:
@@ -5,13 +5,16 @@ namespace Zotlabs\Widget;
|
|||||||
class Vs01 {
|
class Vs01 {
|
||||||
|
|
||||||
public function widget($arr) {
|
public function widget($arr) {
|
||||||
|
if (function_exists('head_add_css')) {
|
||||||
|
\head_add_css('/addon/vs01/view/css/vs01-directory.css');
|
||||||
|
}
|
||||||
$listings = $this->load_listings();
|
$listings = $this->load_listings();
|
||||||
return $this->render_directory($listings);
|
return $this->render_directory($listings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// DIRECTORY
|
// DIRECTORY
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
private function render_directory($listings) {
|
private function render_directory($listings) {
|
||||||
$out = '<div class="vs01-directory">';
|
$out = '<div class="vs01-directory">';
|
||||||
@@ -20,7 +23,7 @@ class Vs01 {
|
|||||||
$out .= '<ul class="nav nav-tabs vs01-dir-tabs" id="vs01DirectoryTabs" role="tablist">';
|
$out .= '<ul class="nav nav-tabs vs01-dir-tabs" id="vs01DirectoryTabs" role="tablist">';
|
||||||
$tabs = [
|
$tabs = [
|
||||||
['id' => 'core', 'label' => 'Core', 'active' => true],
|
['id' => 'core', 'label' => 'Core', 'active' => true],
|
||||||
['id' => 'tier1', 'label' => 'Tier-I', 'active' => false],
|
['id' => 'tier1', 'label' => 'Tier-I', 'active' => false],
|
||||||
['id' => 'tier2', 'label' => 'Tier-II', 'active' => false],
|
['id' => 'tier2', 'label' => 'Tier-II', 'active' => false],
|
||||||
['id' => 'other', 'label' => 'Other', 'active' => false],
|
['id' => 'other', 'label' => 'Other', 'active' => false],
|
||||||
];
|
];
|
||||||
@@ -68,16 +71,19 @@ class Vs01 {
|
|||||||
'slot' => 'taxonomy-authority',
|
'slot' => 'taxonomy-authority',
|
||||||
'role' => 'Taxonomy Authority',
|
'role' => 'Taxonomy Authority',
|
||||||
'description' => 'The institutional source of the case law categories this diagnostic record is organized by.',
|
'description' => 'The institutional source of the case law categories this diagnostic record is organized by.',
|
||||||
|
'image' => '/addon/vs01/view/img/directory-core-taxonomy-authority.png',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slot' => 'methodology-certifier',
|
'slot' => 'methodology-certifier',
|
||||||
'role' => 'Methodology Certifier',
|
'role' => 'Methodology Certifier',
|
||||||
'description' => 'The law firm whose professional association with this project certifies the diagnostic record meets a standard the legal community can use.',
|
'description' => 'The law firm whose professional association with this project certifies the diagnostic record meets a standard the legal community can use.',
|
||||||
|
'image' => '/addon/vs01/view/img/directory-core-methodology-certifier.png',
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
'slot' => 'peer-operator',
|
'slot' => 'peer-operator',
|
||||||
'role' => 'Peer Operator',
|
'role' => 'Peer Operator',
|
||||||
'description' => 'The cooperating Civic Infrastructure host who can independently verify, support, and if necessary continue this diagnostic record.',
|
'description' => 'The cooperating Civic Infrastructure host who can independently verify, support, and if necessary continue this diagnostic record.',
|
||||||
|
'image' => '/addon/vs01/view/img/directory-core-peer-operator.png',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -95,19 +101,25 @@ class Vs01 {
|
|||||||
$e = $populated[$slot['slot']];
|
$e = $populated[$slot['slot']];
|
||||||
$name = $this->h($e['name'] ?? '');
|
$name = $this->h($e['name'] ?? '');
|
||||||
$url = $this->h($e['url'] ?? '');
|
$url = $this->h($e['url'] ?? '');
|
||||||
$out .= '<div class="vs01-dir-slot vs01-slot-active">';
|
$image = $this->h($e['image'] ?? $slot['image']);
|
||||||
$out .= '<div class="vs01-slot-role">' . $this->h($slot['role']) . '</div>';
|
$out .= '<div class="vs01-dir-card vs01-dir-card-core vs01-card-active">';
|
||||||
|
$out .= '<div class="vs01-card-image"><img src="' . $image . '" alt="" loading="lazy"></div>';
|
||||||
|
$out .= '<div class="vs01-card-body">';
|
||||||
|
$out .= '<div class="vs01-card-role">' . $this->h($slot['role']) . '</div>';
|
||||||
if ($url) {
|
if ($url) {
|
||||||
$out .= '<div class="vs01-slot-name"><a href="' . $url . '" target="_blank" rel="noopener">' . $name . '</a></div>';
|
$out .= '<div class="vs01-card-name"><a href="' . $url . '" target="_blank" rel="noopener">' . $name . '</a></div>';
|
||||||
} else {
|
} else {
|
||||||
$out .= '<div class="vs01-slot-name">' . $name . '</div>';
|
$out .= '<div class="vs01-card-name">' . $name . '</div>';
|
||||||
}
|
}
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
|
$out .= '</div>';
|
||||||
} else {
|
} else {
|
||||||
$out .= '<div class="vs01-dir-slot vs01-slot-pending">';
|
$image = $this->h($slot['image']);
|
||||||
$out .= '<div class="vs01-slot-role">' . $this->h($slot['role']) . '</div>';
|
$out .= '<div class="vs01-dir-card vs01-dir-card-core vs01-card-pending">';
|
||||||
$out .= '<div class="vs01-slot-description">' . $this->h($slot['description']) . '</div>';
|
$out .= '<div class="vs01-card-image"><img src="' . $image . '" alt="' . $this->h($slot['role']) . ' — reserved" loading="lazy"></div>';
|
||||||
$out .= '<div class="vs01-slot-status">Invitation pending</div>';
|
$out .= '<div class="vs01-card-body">';
|
||||||
|
$out .= '<div class="vs01-card-description">' . $this->h($slot['description']) . '</div>';
|
||||||
|
$out .= '</div>';
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,24 +136,30 @@ class Vs01 {
|
|||||||
$role = $this->h($entry['role'] ?? '');
|
$role = $this->h($entry['role'] ?? '');
|
||||||
$desc = $this->h($entry['description'] ?? '');
|
$desc = $this->h($entry['description'] ?? '');
|
||||||
$url = $this->h($entry['url'] ?? '');
|
$url = $this->h($entry['url'] ?? '');
|
||||||
$out .= '<div class="vs01-dir-entry">';
|
$image = $this->h($entry['image'] ?? '/addon/vs01/view/img/directory-tier-default.png');
|
||||||
$out .= '<div class="vs01-entry-role">' . $role . '</div>';
|
$out .= '<div class="vs01-dir-card vs01-dir-card-tier">';
|
||||||
|
$out .= '<div class="vs01-card-image"><img src="' . $image . '" alt="" loading="lazy"></div>';
|
||||||
|
$out .= '<div class="vs01-card-body">';
|
||||||
|
if ($role) {
|
||||||
|
$out .= '<div class="vs01-card-role">' . $role . '</div>';
|
||||||
|
}
|
||||||
if ($url) {
|
if ($url) {
|
||||||
$out .= '<div class="vs01-entry-name"><a href="' . $url . '" target="_blank" rel="noopener">' . $name . '</a></div>';
|
$out .= '<div class="vs01-card-name"><a href="' . $url . '" target="_blank" rel="noopener">' . $name . '</a></div>';
|
||||||
} else {
|
} else {
|
||||||
$out .= '<div class="vs01-entry-name">' . $name . '</div>';
|
$out .= '<div class="vs01-card-name">' . $name . '</div>';
|
||||||
}
|
}
|
||||||
if ($desc) {
|
if ($desc) {
|
||||||
$out .= '<div class="vs01-entry-desc">' . $desc . '</div>';
|
$out .= '<div class="vs01-card-desc">' . $desc . '</div>';
|
||||||
}
|
}
|
||||||
$out .= '</div>';
|
$out .= '</div>';
|
||||||
|
$out .= '</div>';
|
||||||
}
|
}
|
||||||
return $out;
|
return $out;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// LISTINGS LOADER
|
// LISTINGS LOADER
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
private function load_listings() {
|
private function load_listings() {
|
||||||
$config = $this->load_config();
|
$config = $this->load_config();
|
||||||
@@ -165,9 +183,9 @@ class Vs01 {
|
|||||||
return (json_last_error() === JSON_ERROR_NONE) ? $data : [];
|
return (json_last_error() === JSON_ERROR_NONE) ? $data : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// HELPER
|
// HELPER
|
||||||
// ----------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
private function h($value) {
|
private function h($value) {
|
||||||
return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
|
return htmlspecialchars((string) $value, ENT_QUOTES, 'UTF-8');
|
||||||
|
|||||||
Reference in New Issue
Block a user