chore: sync module from working instance and add install guide

This commit is contained in:
Kelin Rescue Hub
2026-04-09 14:11:34 -04:00
parent 20adb1bd1e
commit 039c12233e
23 changed files with 4577 additions and 394 deletions

View File

@@ -19,6 +19,7 @@ use yii\helpers\Json;
/* @var bool $isInline */
$isInline = isset($isInline) ? (bool)$isInline : false;
$showTopCancel = (string)Yii::$app->request->get('showTopCancel', '0') === '1';
$hiddenMedicalKeys = [
'second_physician_name',
@@ -166,6 +167,18 @@ $this->registerCss(<<<CSS
border-color: rgba(255, 255, 255, 0.2);
}
.inline-editor-shell .panel.panel-default > .panel-heading a {
color: inherit;
display: block;
text-decoration: none;
}
.inline-editor-shell .panel.panel-default > .panel-heading a:hover,
.inline-editor-shell .panel.panel-default > .panel-heading a:focus {
color: #ffffff;
text-decoration: none;
}
.inline-editor-shell,
.inline-editor-shell .panel-body,
.inline-editor-shell .control-label,
@@ -198,6 +211,31 @@ $this->registerCss(<<<CSS
.inline-editor-shell select.form-control option {
color: #0f1b2a;
}
.inline-editor-shell .animal-inline-top-save-action {
display: inline-flex;
align-items: center;
justify-content: center;
width: 26px;
height: 26px;
padding: 0;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.36);
background: rgba(15, 23, 42, 0.72);
color: #f8fafc;
cursor: pointer;
line-height: 1;
font-size: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
}
.inline-editor-shell .animal-inline-top-save-action:hover,
.inline-editor-shell .animal-inline-top-save-action:focus {
background: rgba(30, 41, 59, 0.86);
border-color: rgba(255, 255, 255, 0.5);
color: #f8fafc;
outline: none;
}
CSS
);
@@ -207,6 +245,13 @@ html, body {
margin: 0 !important;
padding: 0 !important;
background: transparent !important;
scrollbar-width: none;
-ms-overflow-style: none;
}
html::-webkit-scrollbar, body::-webkit-scrollbar {
width: 0;
height: 0;
}
body > .panel:first-child {
@@ -229,18 +274,20 @@ CSS
<div style="display:flex;align-items:center;justify-content:space-between;gap:12px;">
<span><?= Yii::t('AnimalManagementModule.base', '<strong>Edit</strong> Medical Visit') ?></span>
<?php if ($isInline): ?>
<span style="display:inline-flex;gap:8px;">
<span class="animal-inline-top-actions" style="display:inline-flex;gap:8px;margin-right:38px;">
<?= Html::submitButton('<i class="fa fa-check"></i>', [
'class' => 'btn btn-default btn-sm',
'class' => 'animal-inline-top-save-action',
'title' => Yii::t('AnimalManagementModule.base', 'Save Medical Visit'),
'form' => $medicalFormId,
]) ?>
<?= Html::button('<i class="fa fa-times"></i>', [
'type' => 'button',
'class' => 'btn btn-default btn-sm',
'id' => 'medical-inline-cancel-icon',
'title' => Yii::t('AnimalManagementModule.base', 'Cancel'),
]) ?>
<?php if ($showTopCancel): ?>
<?= Html::button('<i class="fa fa-times"></i>', [
'id' => 'medical-inline-cancel-icon',
'class' => 'animal-inline-top-save-action',
'title' => Yii::t('AnimalManagementModule.base', 'Cancel'),
'type' => 'button',
]) ?>
<?php endif; ?>
</span>
<?php endif; ?>
</div>
@@ -259,48 +306,77 @@ CSS
<?= $form->errorSummary($model, ['showAllErrors' => true]) ?>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Visit') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-visit" aria-expanded="true" aria-controls="edit-medical-section-visit">
<strong><?= Yii::t('AnimalManagementModule.base', 'Visit') ?></strong>
</a>
</div>
<div id="edit-medical-section-visit" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<div class="row">
<div class="col-sm-6"><?= $form->field($model, 'visit_at')->input('datetime-local') ?></div>
<div class="col-sm-6"><?= $form->field($model, 'provider_name') ?></div>
</div>
<?= $form->field($model, 'notes')->textarea(['rows' => 3]) ?>
<?= $form->field($model, 'recommendations')->textarea(['rows' => 3]) ?>
</div>
</div>
</div>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Vitals') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-vitals" aria-expanded="true" aria-controls="edit-medical-section-vitals">
<strong><?= Yii::t('AnimalManagementModule.base', 'Vitals') ?></strong>
</a>
</div>
<div id="edit-medical-section-vitals" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<div class="row">
<div class="col-sm-3"><?= $renderCustomField('weight', $model, $customDefinitions) ?></div>
<div class="col-sm-3"><?= $renderCustomField('pulse', $model, $customDefinitions) ?></div>
<div class="col-sm-3"><?= $renderCustomField('blood_pressure', $model, $customDefinitions) ?></div>
<div class="col-sm-3"><?= $renderCustomField('oxygen', $model, $customDefinitions) ?></div>
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Conditions') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-conditions" aria-expanded="true" aria-controls="edit-medical-section-conditions">
<strong><?= Yii::t('AnimalManagementModule.base', 'Conditions') ?></strong>
</a>
</div>
<div id="edit-medical-section-conditions" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<?= $renderCustomField('chronic_conditions', $model, $customDefinitions) ?>
<?= $renderCustomField('acute_conditions', $model, $customDefinitions) ?>
<?= $renderCustomField('special_needs', $model, $customDefinitions) ?>
</div>
</div>
</div>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Medical Visit Detail') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-detail" aria-expanded="true" aria-controls="edit-medical-section-detail">
<strong><?= Yii::t('AnimalManagementModule.base', 'Medical Visit Detail') ?></strong>
</a>
</div>
<div id="edit-medical-section-detail" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<?= $renderCustomField('date_of_most_recent_medical_visit', $model, $customDefinitions) ?>
</div>
</div>
</div>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Media') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-media" aria-expanded="true" aria-controls="edit-medical-section-media">
<strong><?= Yii::t('AnimalManagementModule.base', 'Media') ?></strong>
</a>
</div>
<div id="edit-medical-section-media" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<div class="row">
<div class="col-sm-4" style="margin-bottom:8px;">
<div id="medical-media-preview" style="border-radius:8px;overflow:hidden;background:#f2f4f6;height:150px;display:flex;align-items:center;justify-content:center;">
@@ -323,12 +399,18 @@ CSS
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Physician') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-physician" aria-expanded="true" aria-controls="edit-medical-section-physician">
<strong><?= Yii::t('AnimalManagementModule.base', 'Physician') ?></strong>
</a>
</div>
<div id="edit-medical-section-physician" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<div class="row">
<div class="col-sm-6"><?= $renderCustomField('physician_name', $model, $customDefinitions) ?></div>
<div class="col-sm-6"><?= $renderCustomField('physician_business_name', $model, $customDefinitions) ?></div>
@@ -340,6 +422,7 @@ CSS
<div class="col-sm-4"><?= $renderCustomField('physician_business_phone', $model, $customDefinitions) ?></div>
<div class="col-sm-4"><?= $renderCustomField('physician_license_number', $model, $customDefinitions) ?></div>
</div>
</div>
</div>
</div>
@@ -353,23 +436,23 @@ CSS
<?php if (!empty($remainingDefinitions)): ?>
<div class="panel panel-default" style="margin-bottom:12px;">
<div class="panel-heading"><strong><?= Yii::t('AnimalManagementModule.base', 'Additional Details') ?></strong></div>
<div class="panel-body" style="padding-bottom:8px;">
<div class="panel-heading">
<a data-toggle="collapse" href="#edit-medical-section-additional" aria-expanded="true" aria-controls="edit-medical-section-additional">
<strong><?= Yii::t('AnimalManagementModule.base', 'Additional Details') ?></strong>
</a>
</div>
<div id="edit-medical-section-additional" class="panel-collapse collapse in" aria-expanded="true">
<div class="panel-body" style="padding-bottom:8px;">
<?php foreach ($remainingDefinitions as $fieldKey => $definition): ?>
<?= $renderCustomField($fieldKey, $model, $remainingDefinitions) ?>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
<?= Button::save(Yii::t('AnimalManagementModule.base', 'Save Medical Visit'))->submit() ?>
<?php if ($isInline): ?>
<?= Html::button(Yii::t('AnimalManagementModule.base', 'Cancel'), [
'type' => 'button',
'class' => 'btn btn-default',
'id' => 'medical-inline-cancel',
]) ?>
<?php else: ?>
<?php if (!$isInline): ?>
<?= Button::asLink(Yii::t('AnimalManagementModule.base', 'Cancel'))
->link(($returnTo ?? 'view') === 'medical-visits'
? $space->createUrl('/animal_management/animals/medical-visits', ['id' => $animal->id])
@@ -486,11 +569,32 @@ if ($isInline) {
]);
$this->registerJs(<<<JS
$(document).on('click', '#medical-inline-cancel, #medical-inline-cancel-icon', function() {
if (window.parent && window.parent !== window) {
window.parent.postMessage($cancelPayload, '*');
(function() {
function postInlineCancel() {
if (window.parent && window.parent !== window) {
window.parent.postMessage($cancelPayload, '*');
}
}
});
if (window.jQuery) {
window.jQuery(document).on('click', '#medical-inline-cancel, #medical-inline-cancel-icon', function() {
postInlineCancel();
});
}
document.addEventListener('click', function(event) {
var target = event.target;
if (!target || !target.closest) {
return;
}
if (!target.closest('#medical-inline-cancel, #medical-inline-cancel-icon')) {
return;
}
postInlineCancel();
}, false);
})();
JS
, \yii\web\View::POS_END);
}