diff --git a/src/core/ApiQuery.php b/src/core/ApiQuery.php index d29a468f0e..3f0cde3f7a 100644 --- a/src/core/ApiQuery.php +++ b/src/core/ApiQuery.php @@ -1367,7 +1367,9 @@ protected function appendMetadata(array &$entities) { $entity_id = $entity[$this->pk]; if (isset($metadata[$entity_id])) { - $can_view = $permissions[$entity_id]; + if (isset($permissions[$entity_id])) { + $can_view = $permissions[$entity_id]; + } $meta = $metadata[$entity_id]; foreach($meta as $k => $v){ diff --git a/src/core/Traits/EntityManagerModel.php b/src/core/Traits/EntityManagerModel.php index 01f06c3d8d..d4b94dc750 100644 --- a/src/core/Traits/EntityManagerModel.php +++ b/src/core/Traits/EntityManagerModel.php @@ -2,30 +2,29 @@ namespace MapasCulturais\Traits; use MapasCulturais\App; -use MapasCulturais\Entities\ProjectOpportunity; use MapasCulturais\Entity; trait EntityManagerModel { - private ProjectOpportunity $opportunity; - private ProjectOpportunity $opportunityModel; + private $entityOpportunity; + private $entityOpportunityModel; function ALL_generatemodel(){ $app = App::i(); $this->requireAuthentication(); - $this->opportunity = $this->requestedEntity; - $this->opportunityModel = $this->generateModel(); + $this->entityOpportunity = $this->requestedEntity; + $this->entityOpportunityModel = $this->generateModel(); $this->generateEvaluationMethods(); $this->generatePhases(); $this->generateMetadata(); $this->generateRegistrationFieldsAndFiles(); - $this->opportunityModel->save(true); + $this->entityOpportunityModel->save(true); if($this->isAjax()){ - $this->json($this->opportunity); + $this->json($this->entityOpportunity); }else{ $app->redirect($app->request->getReferer()); } @@ -35,27 +34,34 @@ function ALL_generateopportunity(){ $app = App::i(); $this->requireAuthentication(); - $this->opportunity = $this->requestedEntity; + $this->entityOpportunity = $this->requestedEntity; - $this->opportunityModel = $this->generateOpportunity(); + $this->entityOpportunityModel = $this->generateOpportunity(); $this->generateEvaluationMethods(); $this->generatePhases(); $this->generateMetadata(0, 0); $this->generateRegistrationFieldsAndFiles(); - $this->opportunityModel->save(true); + $this->entityOpportunityModel->save(true); - $this->json($this->opportunityModel); + $this->json($this->entityOpportunityModel); } function GET_findOpportunitiesModels() { $app = App::i(); $dataModels = []; - - $opportunities = $app->repo('Opportunity')->findAll(); - foreach ($opportunities as $opp) { + + $opportunities = $app->em->createQuery(" + SELECT + op.id + FROM + MapasCulturais\Entities\Opportunity op + "); + + foreach ($opportunities->getResult() as $opportunity) { + $opp = $app->repo('Opportunity')->find($opportunity['id']); if ($opp->isModel) { $phases = $opp->phases; @@ -76,7 +82,7 @@ function GET_findOpportunitiesModels() echo json_encode($dataModels); } - private function generateModel() : ProjectOpportunity + private function generateModel() { $app = App::i(); @@ -85,26 +91,26 @@ private function generateModel() : ProjectOpportunity $name = $postData['name']; $description = $postData['description']; - $this->opportunityModel = clone $this->opportunity; + $this->entityOpportunityModel = clone $this->entityOpportunity; - $this->opportunityModel->name = $name; - $this->opportunityModel->status = -1; - $this->opportunityModel->shortDescription = $description; - $app->em->persist($this->opportunityModel); + $this->entityOpportunityModel->name = $name; + $this->entityOpportunityModel->status = -1; + $this->entityOpportunityModel->shortDescription = $description; + $app->em->persist($this->entityOpportunityModel); $app->em->flush(); // necessário adicionar as categorias, proponetes e ranges após salvar devido a trigger public.fn_propagate_opportunity_insert - $this->opportunityModel->registrationCategories = $this->opportunity->registrationCategories; - $this->opportunityModel->registrationProponentTypes = $this->opportunity->registrationProponentTypes; - $this->opportunityModel->registrationRanges = $this->opportunity->registrationRanges; - $this->opportunityModel->save(true); + $this->entityOpportunityModel->registrationCategories = $this->entityOpportunity->registrationCategories; + $this->entityOpportunityModel->registrationProponentTypes = $this->entityOpportunity->registrationProponentTypes; + $this->entityOpportunityModel->registrationRanges = $this->entityOpportunity->registrationRanges; + $this->entityOpportunityModel->save(true); - return $this->opportunityModel; + return $this->entityOpportunityModel; } - private function generateOpportunity() : ProjectOpportunity + private function generateOpportunity() { $app = App::i(); @@ -112,20 +118,20 @@ private function generateOpportunity() : ProjectOpportunity $name = $postData['name']; - $this->opportunityModel = clone $this->opportunity; + $this->entityOpportunityModel = clone $this->entityOpportunity; - $this->opportunityModel->name = $name; - $this->opportunityModel->status = Entity::STATUS_DRAFT; - $app->em->persist($this->opportunityModel); + $this->entityOpportunityModel->name = $name; + $this->entityOpportunityModel->status = Entity::STATUS_DRAFT; + $app->em->persist($this->entityOpportunityModel); $app->em->flush(); // necessário adicionar as categorias, proponetes e ranges após salvar devido a trigger public.fn_propagate_opportunity_insert - $this->opportunityModel->registrationCategories = $this->opportunity->registrationCategories; - $this->opportunityModel->registrationProponentTypes = $this->opportunity->registrationProponentTypes; - $this->opportunityModel->registrationRanges = $this->opportunity->registrationRanges; - $this->opportunityModel->save(true); + $this->entityOpportunityModel->registrationCategories = $this->entityOpportunity->registrationCategories; + $this->entityOpportunityModel->registrationProponentTypes = $this->entityOpportunity->registrationProponentTypes; + $this->entityOpportunityModel->registrationRanges = $this->entityOpportunity->registrationRanges; + $this->entityOpportunityModel->save(true); - return $this->opportunityModel; + return $this->entityOpportunityModel; } private function generateEvaluationMethods() : void @@ -134,11 +140,11 @@ private function generateEvaluationMethods() : void // duplica o método de avaliação para a oportunidade primária $evaluationMethodConfigurations = $app->repo('EvaluationMethodConfiguration')->findBy([ - 'opportunity' => $this->opportunity + 'opportunity' => $this->entityOpportunity ]); foreach ($evaluationMethodConfigurations as $evaluationMethodConfiguration) { $newMethodConfiguration = clone $evaluationMethodConfiguration; - $newMethodConfiguration->setOpportunity($this->opportunityModel); + $newMethodConfiguration->setOpportunity($this->entityOpportunityModel); $newMethodConfiguration->save(true); // duplica os metadados das configurações do modelo de avaliação @@ -154,12 +160,12 @@ private function generatePhases() : void $app = App::i(); $phases = $app->repo('Opportunity')->findBy([ - 'parent' => $this->opportunity + 'parent' => $this->entityOpportunity ]); foreach ($phases as $phase) { if (!$phase->getMetadata('isLastPhase')) { $newPhase = clone $phase; - $newPhase->setParent($this->opportunityModel); + $newPhase->setParent($this->entityOpportunityModel); foreach ($phase->getMetadata() as $metadataKey => $metadataValue) { if (!is_null($metadataValue) && $metadataValue != '') { @@ -194,7 +200,7 @@ private function generatePhases() : void if (isset($publishDate)) { $phases = $app->repo('Opportunity')->findBy([ - 'parent' => $this->opportunityModel + 'parent' => $this->entityOpportunityModel ]); foreach ($phases as $phase) { @@ -209,29 +215,29 @@ private function generatePhases() : void private function generateMetadata($isModel = 1, $isModelPublic = 0) : void { - foreach ($this->opportunity->getMetadata() as $metadataKey => $metadataValue) { + foreach ($this->entityOpportunity->getMetadata() as $metadataKey => $metadataValue) { if (!is_null($metadataValue) && $metadataValue != '') { - $this->opportunityModel->setMetadata($metadataKey, $metadataValue); + $this->entityOpportunityModel->setMetadata($metadataKey, $metadataValue); } } - $this->opportunityModel->setMetadata('isModel', $isModel); - $this->opportunityModel->setMetadata('isModelPublic', $isModelPublic); + $this->entityOpportunityModel->setMetadata('isModel', $isModel); + $this->entityOpportunityModel->setMetadata('isModelPublic', $isModelPublic); - $this->opportunityModel->saveTerms(); + $this->entityOpportunityModel->saveTerms(); } private function generateRegistrationFieldsAndFiles() : void { - foreach ($this->opportunity->getRegistrationFieldConfigurations() as $registrationFieldConfiguration) { + foreach ($this->entityOpportunity->getRegistrationFieldConfigurations() as $registrationFieldConfiguration) { $fieldConfiguration = clone $registrationFieldConfiguration; - $fieldConfiguration->setOwnerId($this->opportunityModel->getId()); + $fieldConfiguration->setOwnerId($this->entityOpportunityModel->getId()); $fieldConfiguration->save(true); } - foreach ($this->opportunity->getRegistrationFileConfigurations() as $registrationFileConfiguration) { + foreach ($this->entityOpportunity->getRegistrationFileConfigurations() as $registrationFileConfiguration) { $fileConfiguration = clone $registrationFileConfiguration; - $fileConfiguration->setOwnerId($this->opportunityModel->getId()); + $fileConfiguration->setOwnerId($this->entityOpportunityModel->getId()); $fileConfiguration->save(true); } diff --git a/src/core/Traits/EntityOpportunityDuplicator.php b/src/core/Traits/EntityOpportunityDuplicator.php index 36ed7e8e19..ade58cb801 100644 --- a/src/core/Traits/EntityOpportunityDuplicator.php +++ b/src/core/Traits/EntityOpportunityDuplicator.php @@ -7,15 +7,15 @@ trait EntityOpportunityDuplicator { - private ProjectOpportunity $opportunity; - private ProjectOpportunity $newOpportunity; + private $entityOpportunity; + private $entityNewOpportunity; function ALL_duplicate(){ $app = App::i(); $this->requireAuthentication(); - $this->opportunity = $this->requestedEntity; - $this->newOpportunity = $this->cloneOpportunity(); + $this->entityOpportunity = $this->requestedEntity; + $this->entityNewOpportunity = $this->cloneOpportunity(); $this->duplicateEvaluationMethods(); @@ -27,35 +27,35 @@ function ALL_duplicate(){ $this->duplicateAgentRelations(); $this->duplicateSealsRelations(); - $this->newOpportunity->save(true); + $this->entityNewOpportunity->save(true); if($this->isAjax()){ - $this->json($this->opportunity); + $this->json($this->entityOpportunity); }else{ $app->redirect($app->request->getReferer()); } } - private function cloneOpportunity() : ProjectOpportunity + private function cloneOpportunity() { $app = App::i(); - $this->newOpportunity = clone $this->opportunity; + $this->entityNewOpportunity = clone $this->entityOpportunity; $dateTime = new \DateTime(); $now = $dateTime->format('d-m-Y H:i:s'); - $name = $this->opportunity->name; - $this->newOpportunity->name = "$name - [Cópia][$now]"; - $this->newOpportunity->status = Entity::STATUS_DRAFT; - $app->em->persist($this->newOpportunity); + $name = $this->entityOpportunity->name; + $this->entityNewOpportunity->name = "$name - [Cópia][$now]"; + $this->entityNewOpportunity->status = Entity::STATUS_DRAFT; + $app->em->persist($this->entityNewOpportunity); $app->em->flush(); - $this->newOpportunity->registrationCategories = $this->opportunity->registrationCategories; - $this->newOpportunity->registrationProponentTypes = $this->opportunity->registrationProponentTypes; - $this->newOpportunity->registrationRanges = $this->opportunity->registrationRanges; - $this->newOpportunity->save(true); + $this->entityNewOpportunity->registrationCategories = $this->entityOpportunity->registrationCategories; + $this->entityNewOpportunity->registrationProponentTypes = $this->entityOpportunity->registrationProponentTypes; + $this->entityNewOpportunity->registrationRanges = $this->entityOpportunity->registrationRanges; + $this->entityNewOpportunity->save(true); - return $this->newOpportunity; + return $this->entityNewOpportunity; } private function duplicateEvaluationMethods() : void @@ -64,11 +64,11 @@ private function duplicateEvaluationMethods() : void // duplica o método de avaliação para a oportunidade primária $evaluationMethodConfigurations = $app->repo('EvaluationMethodConfiguration')->findBy([ - 'opportunity' => $this->opportunity + 'opportunity' => $this->entityOpportunity ]); foreach ($evaluationMethodConfigurations as $evaluationMethodConfiguration) { $newMethodConfiguration = clone $evaluationMethodConfiguration; - $newMethodConfiguration->setOpportunity($this->newOpportunity); + $newMethodConfiguration->setOpportunity($this->entityNewOpportunity); $newMethodConfiguration->save(true); // duplica os metadados das configurações do modelo de avaliação @@ -90,12 +90,12 @@ private function duplicatePhases() : void $app = App::i(); $phases = $app->repo('Opportunity')->findBy([ - 'parent' => $this->opportunity + 'parent' => $this->entityOpportunity ]); foreach ($phases as $phase) { if (!$phase->getMetadata('isLastPhase')) { $newPhase = clone $phase; - $newPhase->setParent($this->newOpportunity); + $newPhase->setParent($this->entityNewOpportunity); // duplica os metadados das fases foreach ($phase->getMetadata() as $metadataKey => $metadataValue) { @@ -138,7 +138,7 @@ private function duplicatePhases() : void if (isset($publishDate)) { $phases = $app->repo('Opportunity')->findBy([ - 'parent' => $this->newOpportunity + 'parent' => $this->entityNewOpportunity ]); foreach ($phases as $phase) { @@ -152,28 +152,28 @@ private function duplicatePhases() : void private function duplicateMetadata() : void { - foreach ($this->opportunity->getMetadata() as $metadataKey => $metadataValue) { + foreach ($this->entityOpportunity->getMetadata() as $metadataKey => $metadataValue) { if (!is_null($metadataValue) && $metadataValue != '') { - $this->newOpportunity->setMetadata($metadataKey, $metadataValue); + $this->entityNewOpportunity->setMetadata($metadataKey, $metadataValue); } } - $this->newOpportunity->setTerms(['area' => $this->opportunity->terms['area']]); - $this->newOpportunity->setTerms(['tag' => $this->opportunity->terms['tag']]); - $this->newOpportunity->saveTerms(); + $this->entityNewOpportunity->setTerms(['area' => $this->entityOpportunity->terms['area']]); + $this->entityNewOpportunity->setTerms(['tag' => $this->entityOpportunity->terms['tag']]); + $this->entityNewOpportunity->saveTerms(); } private function duplicateRegistrationFieldsAndFiles() : void { - foreach ($this->opportunity->getRegistrationFieldConfigurations() as $registrationFieldConfiguration) { + foreach ($this->entityOpportunity->getRegistrationFieldConfigurations() as $registrationFieldConfiguration) { $fieldConfiguration = clone $registrationFieldConfiguration; - $fieldConfiguration->setOwnerId($this->newOpportunity->getId()); + $fieldConfiguration->setOwnerId($this->entityNewOpportunity->getId()); $fieldConfiguration->save(true); } - foreach ($this->opportunity->getRegistrationFileConfigurations() as $registrationFileConfiguration) { + foreach ($this->entityOpportunity->getRegistrationFileConfigurations() as $registrationFileConfiguration) { $fileConfiguration = clone $registrationFileConfiguration; - $fileConfiguration->setOwnerId($this->newOpportunity->getId()); + $fileConfiguration->setOwnerId($this->entityNewOpportunity->getId()); $fileConfiguration->save(true); } @@ -181,10 +181,10 @@ private function duplicateRegistrationFieldsAndFiles() : void private function duplicateMetalist() : void { - foreach ($this->opportunity->getMetaLists() as $metaList_) { + foreach ($this->entityOpportunity->getMetaLists() as $metaList_) { foreach ($metaList_ as $metaList__) { $metalist = clone $metaList__; - $metalist->setOwner($this->newOpportunity); + $metalist->setOwner($this->entityNewOpportunity); $metalist->save(true); } @@ -196,29 +196,29 @@ private function duplicateFiles() : void $app = App::i(); $opportunityFiles = $app->repo('OpportunityFile')->findBy([ - 'owner' => $this->opportunity + 'owner' => $this->entityOpportunity ]); foreach ($opportunityFiles as $opportunityFile) { $newMethodOpportunityFile = clone $opportunityFile; - $newMethodOpportunityFile->owner = $this->newOpportunity; + $newMethodOpportunityFile->owner = $this->entityNewOpportunity; $newMethodOpportunityFile->save(true); } } private function duplicateAgentRelations() : void { - foreach ($this->opportunity->getAgentRelations() as $agentRelation_) { + foreach ($this->entityOpportunity->getAgentRelations() as $agentRelation_) { $agentRelation = clone $agentRelation_; - $agentRelation->owner = $this->newOpportunity; + $agentRelation->owner = $this->entityNewOpportunity; $agentRelation->save(true); } } private function duplicateSealsRelations() : void { - foreach ($this->opportunity->getSealRelations() as $sealRelation) { - $this->newOpportunity->createSealRelation($sealRelation->seal, true, true); + foreach ($this->entityOpportunity->getSealRelations() as $sealRelation) { + $this->entityNewOpportunity->createSealRelation($sealRelation->seal, true, true); } } } diff --git a/src/modules/Panel/components/panel--entity-models-card/script.js b/src/modules/Panel/components/panel--entity-models-card/script.js new file mode 100644 index 0000000000..29a6e2a63a --- /dev/null +++ b/src/modules/Panel/components/panel--entity-models-card/script.js @@ -0,0 +1,48 @@ +app.component('panel--entity-models-card', { + template: $TEMPLATES['panel--entity-models-card'], + emits: ['deleted'], + + props: { + class: { + type: [String, Array, Object], + default: '' + }, + entity: { + type: Entity, + required: true + }, + + onDeleteRemoveFromLists: { + type: Boolean, + default: true + } + }, + data() { + fetch('/opportunity/findOpportunitiesModels') + .then(response => { + if (!response.ok) { + throw new Error('Network response was not ok'); + } + return response.json(); + }) + .then(data => { + this.models = data; + }) + .catch(error => { + console.error('There was a problem with the fetch operation:', error); + }); + + return { + models: [], + } + }, + + computed: { + classes() { + return this.class; + }, + leftButtons() { + return 'delete'; + }, + } +}) diff --git a/src/modules/Panel/components/panel--entity-models-card/template.php b/src/modules/Panel/components/panel--entity-models-card/template.php new file mode 100644 index 0000000000..89624e2f48 --- /dev/null +++ b/src/modules/Panel/components/panel--entity-models-card/template.php @@ -0,0 +1,89 @@ +import(' + mc-avatar + mc-icon + mc-title + panel--entity-actions + opportunity-create-based-model + +'); +?> +
+
+
+ + + + +
+
+
+ + {{ entity.isModelPublic == 0 ? 'MEU MODELO' : 'MODELO PÚBLICO' }} + +
+
+
+
+ +
+
+ +

{{ model.descricao }}

+ + {{ entity.type.name }} +
+ + {{ model.numeroFases }} +
+ + {{ model.tempoEstimado }} +
+ + {{ model.tipoAgente }} +
+
+
+
+ + +
diff --git a/src/modules/Panel/components/panel--entity-tabs-copy/script.js b/src/modules/Panel/components/panel--entity-tabs-copy/script.js deleted file mode 100644 index d12a80b149..0000000000 --- a/src/modules/Panel/components/panel--entity-tabs-copy/script.js +++ /dev/null @@ -1,102 +0,0 @@ -app.component('panel--entity-tabs-copy', { - template: $TEMPLATES['panel--entity-tabs-copy'], - emits: [], - - setup(props, { slots }) { - const hasSlot = name => !!slots[name] - return { hasSlot } - }, - - created() { - }, - - data() { - let query = { - '@order': 'updateTimestamp DESC', - '@permissions': 'view' - }; - if (this.user) { - query.user = `EQ(${this.user})` - } - - return { - description: $DESCRIPTIONS[this.type], - queries: { - publish: { status: 'GTE(1)', ...query }, - draft: { status: 'EQ(0)', ...query }, - granted: { ...query, '@permissions': '@control', status: 'GTE(0)', user: '!EQ(@me)' }, - trash: { status: 'EQ(-10)', ...query }, - archived: { status: 'EQ(-2)', ...query }, - models: { status: 'GTE(1)', ...query }, - }, - showPrivateKey: false, - - } - }, - computed: { - - }, - - props: { - type: String, - user: { - type: [String, Number], - default: '@me' - }, - select: { - type: String, - default: 'id,status,name,type,createTimestamp,terms,files.avatar,currentUserPermissions' - }, - tabs: { - type: String, - default: "publish,draft,granted,models,trash,archived" - }, - - }, - - methods: { - - showTab(status) { - const tabs = this.tabs.split(','); - - if (tabs.indexOf(status) === -1) { - return false; - } - - if (status == 'publish' || status =='models') { - return true; - } else if (typeof this.description?.status == 'undefined') { - return false; - } else if (typeof this.description?.status?.options[status] != 'undefined') { - return true; - } else if (status == 'granted' && this.description.__agentRelations) { - return true; - } else { - return false; - } - }, - - async moveEntity(entity, event) { - await event.promise; - const lists = useEntitiesLists(); - const status = `${entity.status}`; - - const listnames = { - '1': `${this.type}:publish`, - '1': `${this.type}:models`, - '-10': `${this.type}:trash`, - '-2': `${this.type}:archived`, - '0': `${this.type}:draft`, - }; - - const list = lists.fetch(listnames[status]); - - entity.removeFromLists([list]); - - if (list instanceof Array) { - list.push(entity); - entity.$LISTS.push(list); - } - } - }, -}); diff --git a/src/modules/Panel/components/panel--entity-tabs-copy/template.php b/src/modules/Panel/components/panel--entity-tabs-copy/template.php deleted file mode 100644 index 99feb130c4..0000000000 --- a/src/modules/Panel/components/panel--entity-tabs-copy/template.php +++ /dev/null @@ -1,123 +0,0 @@ -import(' - mc-entities - mc-tab - mc-tabs - panel--entity-card - registration-card -'); - -$tabs = $tabs ?? [ - 'publish' => i::esc_attr__('Publicados'), - 'draft' => i::esc_attr__('Em rascunho'), - 'granted' => i::esc_attr__('Com permissão'), - 'models' => i::esc_attr__('Meus modelos'), - 'archived' => i::esc_attr__('Arquivados'), - 'trash' => i::esc_attr__('Lixeira'), -]; - -$this->applyComponentHook('.tabs', [&$tabs]); - -$sort_options = [ - 'name ASC' => i::__('Ordem alfabética'), - 'createTimestamp DESC' => i::__('Mais recentes primeiro'), - 'createTimestamp ASC' => i::__('Mais antigas primeiro'), - 'updateTimestamp DESC' => i::__('Modificadas recentemente'), - 'updateTimestamp ASC' => i::__('Modificadas há mais tempo'), -]; - -$this->applyComponentHook('.sortOptions', [&$tabs]); - -?> - - applyComponentHook('begin') ?> - - $label): ?> - applyComponentHook($status, 'before') ?> - - applyComponentHook($status, 'begin') ?> - - - - - - applyComponentHook($status, 'end') ?> - - applyComponentHook($status, 'after') ?> - - applyComponentHook('end') ?> - \ No newline at end of file diff --git a/src/modules/Panel/components/panel--entity-tabs/script.js b/src/modules/Panel/components/panel--entity-tabs/script.js index b44507b86a..fbd8ea3503 100644 --- a/src/modules/Panel/components/panel--entity-tabs/script.js +++ b/src/modules/Panel/components/panel--entity-tabs/script.js @@ -6,23 +6,6 @@ app.component('panel--entity-tabs', { const hasSlot = name => !!slots[name] return { hasSlot } }, - - created() { - fetch('/opportunity/findOpportunitiesModels') - .then(response => { - if (!response.ok) { - throw new Error('Network response was not ok'); - } - return response.json(); - }) - .then(data => { - this.models = data; - }) - .catch(error => { - console.error('There was a problem with the fetch operation:', error); - }); - }, - data() { let query = {}; @@ -57,8 +40,6 @@ app.component('panel--entity-tabs', { archived: { status: 'EQ(-2)', ...query }, }, showPrivateKey: false, - models: [], - } }, computed: { diff --git a/src/modules/Panel/components/panel--entity-tabs/template.php b/src/modules/Panel/components/panel--entity-tabs/template.php index 92f04ef440..f972634526 100644 --- a/src/modules/Panel/components/panel--entity-tabs/template.php +++ b/src/modules/Panel/components/panel--entity-tabs/template.php @@ -11,8 +11,8 @@ mc-tab mc-tabs panel--entity-card + panel--entity-models-card registration-card - opportunity-create-based-model '); $tabs = $tabs ?? [ @@ -77,68 +77,44 @@ applyComponentHook($status, 'end') ?>