diff --git a/client/src/app/admin/instance/components/instance-form.component.html b/client/src/app/admin/instance/components/instance-form.component.html index cfed0c6a9f7a37bef86543a6dd5b79fb9cf92c41..ad91ad5da27bb47e327b5cd979594e80cf1070fb 100644 --- a/client/src/app/admin/instance/components/instance-form.component.html +++ b/client/src/app/admin/instance/components/instance-form.component.html @@ -94,25 +94,57 @@ <app-path-select-form-control [form]="form" [disabled]="isFilesPathEmpty()" - [controlName]="'design_logo'" - [controlLabel]="'Logo'" + [controlName]="'design_favicon'" + [controlLabel]="'Favicon'" [files]="files" [filesIsLoading]="filesIsLoading" [filesIsLoaded]="filesIsLoaded" [selectType]="'file'" (loadDirectory)="onChangeFileSelect($event)"> </app-path-select-form-control> + </accordion-group> + <accordion-group heading="Design navbar" [isOpen]="true"> <app-path-select-form-control [form]="form" [disabled]="isFilesPathEmpty()" - [controlName]="'design_favicon'" - [controlLabel]="'Favicon'" + [controlName]="'design_logo'" + [controlLabel]="'Logo'" [files]="files" [filesIsLoading]="filesIsLoading" [filesIsLoaded]="filesIsLoaded" [selectType]="'file'" (loadDirectory)="onChangeFileSelect($event)"> </app-path-select-form-control> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="navbar_background_color_picker">Navbar background color (picker)</label> + <input class="form-control" type="color" id="navbar_background_color_picker" [value]="form.value.navbar_background_color" formControlName="navbar_background_color"> + </div> + <div class="form-group col-md-6"> + <label for="navbar_background_color_input">Navbar background color (value)</label> + <input type="text" class="form-control" id="navbar_background_color_input" [value]="form.value.navbar_background_color" formControlName="navbar_background_color"> + </div> + </div> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="navbar_border_bottom_color_picker">Navbar border bottom color (picker)</label> + <input class="form-control" type="color" id="navbar_border_bottom_color_picker" [value]="form.value.navbar_border_bottom_color" formControlName="navbar_border_bottom_color"> + </div> + <div class="form-group col-md-6"> + <label for="navbar_border_bottom_color_input">Navbar border bottom color (value)</label> + <input type="text" class="form-control" id="navbar_border_bottom_color_input" [value]="form.value.navbar_border_bottom_color" formControlName="navbar_border_bottom_color"> + </div> + </div> + <div class="form-row"> + <div class="form-group col-md-6"> + <label for="navbar_color_href_picker">Navbar color href (picker)</label> + <input class="form-control" type="color" id="navbar_color_href_picker" [value]="form.value.navbar_color_href" formControlName="navbar_color_href"> + </div> + <div class="form-group col-md-6"> + <label for="navbar_color_href_input">Navbar color href (value)</label> + <input type="text" class="form-control" id="navbar_color_href_input" [value]="form.value.navbar_color_href" formControlName="navbar_color_href"> + </div> + </div> </accordion-group> <accordion-group heading="Design family" [isOpen]="true"> <div class="form-row"> diff --git a/client/src/app/admin/instance/components/instance-form.component.ts b/client/src/app/admin/instance/components/instance-form.component.ts index 7bba768b7660ec90d1720c008f1fe2e85d124486..8402d7f00bd46c6a4f97dfd457b17f08249a76eb 100644 --- a/client/src/app/admin/instance/components/instance-form.component.ts +++ b/client/src/app/admin/instance/components/instance-form.component.ts @@ -41,6 +41,9 @@ export class InstanceFormComponent implements OnInit { design_background_color: new UntypedFormControl('#FFFFFF', [Validators.required]), design_logo: new UntypedFormControl(''), design_favicon: new UntypedFormControl(''), + navbar_background_color: new UntypedFormControl('#F8F9FA'), + navbar_border_bottom_color: new UntypedFormControl('#DEE2E6'), + navbar_color_href: new UntypedFormControl('#000000'), family_border_color: new UntypedFormControl('#DFDFDF'), family_header_background_color: new UntypedFormControl('#F7F7F7'), family_title_color: new UntypedFormControl('#007BFF'), diff --git a/client/src/app/instance/components/instance-navbar.component.html b/client/src/app/instance/components/instance-navbar.component.html index 4ebd6d996f46395fa94ab96cf19e86f652fba085..83867b70be23460d49cfc1b8e5f59f4e131effd2 100644 --- a/client/src/app/instance/components/instance-navbar.component.html +++ b/client/src/app/instance/components/instance-navbar.component.html @@ -1,4 +1,4 @@ -<nav class="navbar navbar-light bg-light navbar-expand-md fixed-top border-bottom"> +<nav class="navbar-instance navbar navbar-expand-md fixed-top"> <!-- Logo --> <a [routerLink]="getInstanceBaseHref()" class="navbar-brand"> <img *ngIf="instance.public" [src]="getLogoHref()" alt="Instance logo" /> diff --git a/client/src/app/instance/components/instance-navbar.component.ts b/client/src/app/instance/components/instance-navbar.component.ts index 4b977c8b0f3d54c6737620992753955c250e2dad..ec4cc6a4b3a1639d966971887c24779b76e5e3ed 100644 --- a/client/src/app/instance/components/instance-navbar.component.ts +++ b/client/src/app/instance/components/instance-navbar.component.ts @@ -66,4 +66,12 @@ export class InstanceNavbarComponent { getWebpageListByFamily(webpageFamily) { return this.webpageList.filter(webpage => webpage.id_webpage_family === webpageFamily.id); } + + // getNavbarStyle() { + // return { + // 'background-color': this.instance.navbar_background_color, + // 'border-bottom': `1px solid ${this.instance.navbar_border_bottom_color}`, + // 'color': this.instance.navbar_color + // }; + // } } diff --git a/client/src/app/instance/instance.component.spec.ts b/client/src/app/instance/instance.component.spec.ts index d42a946602dd22cfb3bda516c06f0f3a7489b2b2..8aadba4053bc7089ad75a38d7a0e803bb5bd7549 100644 --- a/client/src/app/instance/instance.component.spec.ts +++ b/client/src/app/instance/instance.component.spec.ts @@ -90,6 +90,9 @@ describe('[Instance] InstanceComponent', () => { design_background_color: 'darker green', design_logo: '/path/to/logo', design_favicon: '/path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', diff --git a/client/src/app/instance/instance.component.ts b/client/src/app/instance/instance.component.ts index bcfc2bba4e4f6005639f42e3469fc6834caabd8e..90fb704abc01417929816d3d9c31da14dc7a6e8e 100644 --- a/client/src/app/instance/instance.component.ts +++ b/client/src/app/instance/instance.component.ts @@ -93,6 +93,18 @@ export class InstanceComponent implements OnInit, OnDestroy { } this.body.style.backgroundColor = instance.design_background_color; if(document.styleSheets.length > 0) { + this.style.setStyles('.navbar-instance', { + 'background-color': instance.navbar_background_color, + 'border-bottom': `1px solid ${instance.navbar_border_bottom_color}` + }); + this.style.setStyle('.navbar-instance a', 'color', instance.navbar_color_href); + this.style.setStyle('.navbar-instance a:hover', 'color', instance.navbar_color_href); + this.style.setStyle('.navbar-instance a.active', 'font-weight', 'bold'); + this.style.setStyles('.navbar-instance #button-basic', { + 'background-color': instance.navbar_background_color, + 'border': 'none' + }); + this.style.setStyle('.panel.card.custom-accordion', 'border-color', instance.family_border_color); this.style.setStyle('.custom-accordion .panel-heading', 'background-color', instance.family_header_background_color); this.style.setStyle('.custom-accordion .panel-heading .btn-link', 'color', instance.family_title_color); diff --git a/client/src/app/instance/search/components/progress-bar.component.spec.ts b/client/src/app/instance/search/components/progress-bar.component.spec.ts index d75a70216454b2b90a4ab4f86f960fdc9aa11baf..e12050d32a045fcdded12b2d4ca661706215f79b 100644 --- a/client/src/app/instance/search/components/progress-bar.component.spec.ts +++ b/client/src/app/instance/search/components/progress-bar.component.spec.ts @@ -63,6 +63,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => { design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', @@ -103,6 +106,9 @@ describe('[Instance][Search][Component] ProgressBarComponent', () => { design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', diff --git a/client/src/app/instance/store/effects/search-multiple.effects.spec.ts b/client/src/app/instance/store/effects/search-multiple.effects.spec.ts index 2879c2003d7561639eae6bab4eccf8c51e7513ff..165b72cc698ed6f1f8b93a4b485e8b99e51853b2 100644 --- a/client/src/app/instance/store/effects/search-multiple.effects.spec.ts +++ b/client/src/app/instance/store/effects/search-multiple.effects.spec.ts @@ -145,6 +145,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => { design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', @@ -228,6 +231,9 @@ describe('[Instance][Store] SearchMultipleEffects', () => { design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', diff --git a/client/src/app/metamodel/models/instance.model.ts b/client/src/app/metamodel/models/instance.model.ts index 88d7093808ff9931347cdeede2ac81d48361bc96..de2d5f2fceb488210682ba40da7baebc32b027ec 100644 --- a/client/src/app/metamodel/models/instance.model.ts +++ b/client/src/app/metamodel/models/instance.model.ts @@ -28,6 +28,9 @@ export interface Instance { design_background_color: string; design_logo: string; design_favicon: string; + navbar_background_color: string; + navbar_border_bottom_color: string; + navbar_color_href: string; family_border_color: string; family_header_background_color: string; family_title_color: string; diff --git a/client/src/test-data.ts b/client/src/test-data.ts index 2ee794d54f722c112bb46820759fca00b8ef7eae..bfb466852a1cf774195bec357928e263cd1ac023 100644 --- a/client/src/test-data.ts +++ b/client/src/test-data.ts @@ -60,6 +60,9 @@ export const INSTANCE_LIST: Instance[] = [ design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', @@ -94,6 +97,9 @@ export const INSTANCE_LIST: Instance[] = [ design_background_color: 'darker green', design_logo: 'path/to/logo', design_favicon: 'path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', @@ -130,6 +136,9 @@ export const INSTANCE: Instance = { design_background_color: 'darker green', design_logo: '/path/to/logo', design_favicon: '/path/to/favicon', + navbar_background_color: '#F8F9FA', + navbar_border_bottom_color: '#DEE2E6', + navbar_color_href: '#000000', family_border_color: '#DFDFDF', family_header_background_color: '#F7F7F7', family_title_color: '#007BFF', diff --git a/conf-dev/create-db.sh b/conf-dev/create-db.sh index d2f41d2a1ef29d9c6b283935fd13273cf3c4d03c..1387a3cb4dbbfe11eedaa896f58df52ed7c9590d 100644 --- a/conf-dev/create-db.sh +++ b/conf-dev/create-db.sh @@ -8,7 +8,7 @@ set -e curl -d '{"label":"Test","dbname":"anis_test","dbtype":"pdo_pgsql","dbhost":"db","dbport":5432,"dblogin":"anis","dbpassword":"anis"}' --header 'Content-Type: application/json' -X POST http://localhost/database # Add default instance -curl -d '{"name":"default","label":"Default instance","description":"Instance for the test","scientific_manager":"M. Durand","instrument":"Multiple","wavelength_domain":"Visible imaging / Spectroscopy","display":10,"data_path":"\/DEFAULT","files_path":"\/INSTANCE_FILES","public":true,"portal_logo":"","design_color":"#7AC29A","design_background_color":"#ffffff","design_logo":"/logo.png","design_favicon":"/favicon.ico","family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_color":"#212529","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance +curl -d '{"name":"default","label":"Default instance","description":"Instance for the test","scientific_manager":"M. Durand","instrument":"Multiple","wavelength_domain":"Visible imaging / Spectroscopy","display":10,"data_path":"\/DEFAULT","files_path":"\/INSTANCE_FILES","public":true,"portal_logo":"","design_color":"#7AC29A","design_background_color":"#ffffff","design_logo":"/logo.png","design_favicon":"/favicon.ico","navbar_background_color":"#F8F9FA","navbar_border_bottom_color":"#DEE2E6","navbar_color_href":"#000000","family_border_color":"#DFDFDF","family_header_background_color":"#F7F7F7","family_title_color":"#007BFF","family_title_bold":false,"family_color":"#212529","samp_enabled":true,"back_to_portal":true,"user_menu_enabled":true,"search_by_criteria_allowed":true,"search_by_criteria_label":"Search","search_multiple_allowed":false,"search_multiple_label":"Search multiple","search_multiple_all_datasets_selected":false,"documentation_allowed":false,"documentation_label":"Documentation"}' --header 'Content-Type: application/json' -X POST http://localhost/instance # Add dataset families curl -d '{"label":"Default dataset family","display":10,"opened":true}' --header 'Content-Type: application/json' -X POST http://localhost/instance/default/dataset-family diff --git a/server/doctrine-proxy/__CG__AppEntityInstance.php b/server/doctrine-proxy/__CG__AppEntityInstance.php index 4a88f09ac8c33c827e70775cfc54376f53ffa696..ea18298b7f78c7a94a83a05895caf211d840388e 100644 --- a/server/doctrine-proxy/__CG__AppEntityInstance.php +++ b/server/doctrine-proxy/__CG__AppEntityInstance.php @@ -67,10 +67,10 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy public function __sleep() { if ($this->__isInitialized__) { - return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; + return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; } - return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; + return ['__isInitialized__', 'name', 'label', 'description', 'scientificManager', 'instrument', 'wavelengthDomain', 'display', 'dataPath', 'filesPath', 'public', 'portalLogo', 'designColor', 'designBackgroundColor', 'designLogo', 'designFavicon', 'navbarBackgroundColor', 'navbarBorderBottomColor', 'navbarColorHref', 'familyBorderColor', 'familyHeaderBackgroundColor', 'familyTitleColor', 'familyTitleBold', 'familyColor', 'sampEnabled', 'backToPortal', 'userMenuEnabled', 'searchByCriteriaAllowed', 'searchByCriteriaLabel', 'searchMultipleAllowed', 'searchMultipleLabel', 'searchMultipleAllDatasetsSelected', 'documentationAllowed', 'documentationLabel', 'datasetFamilies']; } /** @@ -500,6 +500,72 @@ class Instance extends \App\Entity\Instance implements \Doctrine\ORM\Proxy\Proxy return parent::setDesignFavicon($designFavicon); } + /** + * {@inheritDoc} + */ + public function getNavbarBackgroundColor() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarBackgroundColor', []); + + return parent::getNavbarBackgroundColor(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarBackgroundColor($navbarBackgroundColor) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarBackgroundColor', [$navbarBackgroundColor]); + + return parent::setNavbarBackgroundColor($navbarBackgroundColor); + } + + /** + * {@inheritDoc} + */ + public function getNavbarBorderBottomColor() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarBorderBottomColor', []); + + return parent::getNavbarBorderBottomColor(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarBorderBottomColor($navbarBorderBottomColor) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarBorderBottomColor', [$navbarBorderBottomColor]); + + return parent::setNavbarBorderBottomColor($navbarBorderBottomColor); + } + + /** + * {@inheritDoc} + */ + public function getNavbarColorHref() + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'getNavbarColorHref', []); + + return parent::getNavbarColorHref(); + } + + /** + * {@inheritDoc} + */ + public function setNavbarColorHref($navbarColorHref) + { + + $this->__initializer__ && $this->__initializer__->__invoke($this, 'setNavbarColorHref', [$navbarColorHref]); + + return parent::setNavbarColorHref($navbarColorHref); + } + /** * {@inheritDoc} */ diff --git a/server/src/Action/InstanceAction.php b/server/src/Action/InstanceAction.php index 269a4c5b7e3896e780a2df548e41af3e5a8c429f..52ef946e470cd583f7e2cce9513ab40da19813be 100644 --- a/server/src/Action/InstanceAction.php +++ b/server/src/Action/InstanceAction.php @@ -78,6 +78,9 @@ final class InstanceAction extends AbstractAction 'design_background_color', 'design_logo', 'design_favicon', + 'navbar_background_color', + 'navbar_border_bottom_color', + 'navbar_color_href', 'family_border_color', 'family_header_background_color', 'family_title_color', @@ -142,6 +145,9 @@ final class InstanceAction extends AbstractAction $instance->setDesignBackgroundColor($parsedBody['design_background_color']); $instance->setDesignLogo($parsedBody['design_logo']); $instance->setDesignFavicon($parsedBody['design_favicon']); + $instance->setNavbarBackgroundColor($parsedBody['navbar_background_color']); + $instance->setNavbarBorderBottomColor($parsedBody['navbar_border_bottom_color']); + $instance->setNavbarColorHref($parsedBody['navbar_color_href']); $instance->setFamilyBorderColor($parsedBody['family_border_color']); $instance->setFamilyHeaderBackgroundColor($parsedBody['family_header_background_color']); $instance->setFamilyTitleColor($parsedBody['family_title_color']); diff --git a/server/src/Action/InstanceListAction.php b/server/src/Action/InstanceListAction.php index c1e94a2da765c2a2d9d44f47ba23f7d637fc52d8..34f9cee57266aa16e015d54831e8fc65dc90c4cf 100644 --- a/server/src/Action/InstanceListAction.php +++ b/server/src/Action/InstanceListAction.php @@ -78,6 +78,9 @@ final class InstanceListAction extends AbstractAction 'design_background_color', 'design_logo', 'design_favicon', + 'navbar_background_color', + 'navbar_border_bottom_color', + 'navbar_color_href', 'family_border_color', 'family_header_background_color', 'family_title_color', @@ -136,6 +139,9 @@ final class InstanceListAction extends AbstractAction $instance->setDesignBackgroundColor($parsedBody['design_background_color']); $instance->setDesignLogo($parsedBody['design_logo']); $instance->setDesignFavicon($parsedBody['design_favicon']); + $instance->setNavbarBackgroundColor($parsedBody['navbar_background_color']); + $instance->setNavbarBorderBottomColor($parsedBody['navbar_border_bottom_color']); + $instance->setNavbarColorHref($parsedBody['navbar_color_href']); $instance->setFamilyBorderColor($parsedBody['family_border_color']); $instance->setFamilyHeaderBackgroundColor($parsedBody['family_header_background_color']); $instance->setFamilyTitleColor($parsedBody['family_title_color']); diff --git a/server/src/Entity/Instance.php b/server/src/Entity/Instance.php index e320d1e971fa59e11287673f480ee14295aa3fe8..17becc0a60257b0574b257f241e13af3edd0d873 100644 --- a/server/src/Entity/Instance.php +++ b/server/src/Entity/Instance.php @@ -129,6 +129,27 @@ class Instance implements \JsonSerializable */ protected $designFavicon; + /** + * @var string + * + * @Column(type="string", name="navbar_background_color", nullable=false, options={"default" : "#F8F9FA"}) + */ + protected $navbarBackgroundColor; + + /** + * @var string + * + * @Column(type="string", name="navbar_border_bottom_color", nullable=false, options={"default" : "#DEE2E6"}) + */ + protected $navbarBorderBottomColor; + + /** + * @var string + * + * @Column(type="string", name="navbar_color_href", nullable=false, options={"default" : "#000000"}) + */ + protected $navbarColorHref; + /** * @var string * @@ -393,6 +414,36 @@ class Instance implements \JsonSerializable $this->designFavicon = $designFavicon; } + public function getNavbarBackgroundColor() + { + return $this->navbarBackgroundColor; + } + + public function setNavbarBackgroundColor($navbarBackgroundColor) + { + $this->navbarBackgroundColor = $navbarBackgroundColor; + } + + public function getNavbarBorderBottomColor() + { + return $this->navbarBorderBottomColor; + } + + public function setNavbarBorderBottomColor($navbarBorderBottomColor) + { + $this->navbarBorderBottomColor = $navbarBorderBottomColor; + } + + public function getNavbarColorHref() + { + return $this->navbarColorHref; + } + + public function setNavbarColorHref($navbarColorHref) + { + $this->navbarColorHref = $navbarColorHref; + } + public function getFamilyBorderColor() { return $this->familyBorderColor; @@ -575,6 +626,9 @@ class Instance implements \JsonSerializable 'design_background_color' => $this->getDesignBackgroundColor(), 'design_logo' => $this->getDesignLogo(), 'design_favicon' => $this->getDesignFavicon(), + 'navbar_background_color' => $this->getNavbarBackgroundColor(), + 'navbar_border_bottom_color' => $this->getNavbarBorderBottomColor(), + 'navbar_color_href' => $this->getNavbarColorHref(), 'family_border_color' => $this->getFamilyBorderColor(), 'family_header_background_color' => $this->getFamilyHeaderBackgroundColor(), 'family_title_color' => $this->getFamilyTitleColor(), diff --git a/server/tests/Action/InstanceActionTest.php b/server/tests/Action/InstanceActionTest.php index 1f4fececdfad5e9e8a66879ac25acc13bf39cff4..eee2914e16ec365a4bedb67e6a1da78a8406a098 100644 --- a/server/tests/Action/InstanceActionTest.php +++ b/server/tests/Action/InstanceActionTest.php @@ -92,6 +92,9 @@ final class InstanceActionTest extends TestCase 'design_background_color' => '#FFFFFF', 'design_logo' => 'logo.png', 'design_favicon' => 'favicon.ico', + 'navbar_background_color' => '#F8F9FA', + 'navbar_border_bottom_color' => '#DEE2E6', + 'navbar_color_href' => '#000000', 'family_border_color' => '#DFDFDF', 'family_header_background_color' => '#F7F7F7', 'family_title_color' => '#007BFF', diff --git a/server/tests/Action/InstanceListActionTest.php b/server/tests/Action/InstanceListActionTest.php index f631169924673b8827cb3572f489c85db039abe0..21a2ec5eb64a3691278d7dd9f9afc3f52d48c87b 100644 --- a/server/tests/Action/InstanceListActionTest.php +++ b/server/tests/Action/InstanceListActionTest.php @@ -76,6 +76,9 @@ final class InstanceListActionTest extends TestCase 'design_background_color' => '#FFFFFF', 'design_logo' => 'logo.png', 'design_favicon' => 'favicon.ico', + 'navbar_background_color' => '#F8F9FA', + 'navbar_border_bottom_color' => '#DEE2E6', + 'navbar_color_href' => '#000000', 'family_border_color' => '#DFDFDF', 'family_header_background_color' => '#F7F7F7', 'family_title_color' => '#007BFF',