version: '3.1'
services:
- fluidbook-v3-httpd:
- container_name: fluidbook-v3-httpd
- build: './images/httpd'
- working_dir: /application
- volumes:
- - './www/:/usr/local/apache2/htdocs'
- - './www/:/application/'
- - './config/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf'
- environment:
- VIRTUAL_HOST: www.fluidbook.com,en.fluidbook.com,fluidbook.com,elearning.fluidbook.com,fr.elearning.fluidbook.com
- LETSENCRYPT_HOST: www.fluidbook.com,en.fluidbook.com,fluidbook.com,elearning.fluidbook.com,fr.elearning.fluidbook.com
- restart: unless-stopped
- networks:
- - nginxproxy
- - fluidbook-v3
+ fluidbook-v3-httpd:
+ container_name: fluidbook-v3-httpd
+ build: './images/httpd'
+ working_dir: /application
+ volumes:
+ - './www/:/usr/local/apache2/htdocs'
+ - './www/:/application/'
+ - './config/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf'
+ environment:
+ VIRTUAL_HOST: www.fluidbook.com,en.fluidbook.com,fluidbook.com,elearning.fluidbook.com,fr.elearning.fluidbook.com
+ LETSENCRYPT_HOST: www.fluidbook.com,en.fluidbook.com,fluidbook.com,elearning.fluidbook.com,fr.elearning.fluidbook.com
+ restart: unless-stopped
+ networks:
+ - nginxproxy
+ - fluidbook-v3
- fluidbook-v3:
- container_name: fluidbook-v3
- hostname: fluidbook-v3
- build: './images/php-fpm'
- working_dir: /application
- volumes:
- # SSH
- - './config/ssh/root/:/root/.ssh/'
- - './config/ssh/user/:/application/.ssh/'
- - './config/ssh/server/:/etc/ssh/'
- # Rsyslog
- - './config/rsyslog/rsyslog.conf:/etc/rsyslog.conf'
- - './config/rsyslog/50-default.conf:/etc/rsyslog.d/50-default.conf'
- # Composer
- - './config/composer/:/root/.config/composer/'
- - './config/composer/:/application/.config/composer/'
- # Sudoers
- - './config/sudoers:/etc/sudoers.d/fluidbook-v3'
- # ImageMagick
- - './config/imagemagick/policy.xml:/etc/ImageMagick-6/policy.xml'
- # Passwords
- - './config/passwords:/root/passwords'
- # Cron
- - './config/cron/crontab:/etc/crontab'
- # PHP
- - './config/php.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini'
- # Web path
- - './www:/application'
- tmpfs:
- - /home/tmp
- - /application/framework/data/temp
- ports:
- - '38840:22'
- restart: unless-stopped
- networks:
- - fluidbook-v3
+ fluidbook-v3:
+ container_name: fluidbook-v3
+ hostname: fluidbook-v3
+ build: './images/php-fpm'
+ working_dir: /application
+ volumes:
+ # SSH
+ - './config/ssh/root/:/root/.ssh/'
+ - './config/ssh/user/:/application/.ssh/'
+ - './config/ssh/server/:/etc/ssh/'
+ # Rsyslog
+ - './config/rsyslog/rsyslog.conf:/etc/rsyslog.conf'
+ - './config/rsyslog/50-default.conf:/etc/rsyslog.d/50-default.conf'
+ # Composer
+ - './config/composer/:/root/.config/composer/'
+ - './config/composer/:/application/.config/composer/'
+ # Sudoers
+ - './config/sudoers:/etc/sudoers.d/fluidbook-v3'
+ # ImageMagick
+ - './config/imagemagick/policy.xml:/etc/ImageMagick-6/policy.xml'
+ # Passwords
+ - './config/passwords:/root/passwords'
+ # Cron
+ - './config/cron/crontab:/etc/crontab'
+ # PHP
+ - './config/php.ini:/etc/php/8.3/fpm/conf.d/99-overrides.ini'
+ # Web path
+ - './www:/application'
+ tmpfs:
+ - /home/tmp
+ - /application/framework/data/temp
+ ports:
+ - '38840:22'
+ restart: unless-stopped
+ networks:
+ - fluidbook-v3
- adminer:
- image: 'adminer:latest'
- container_name: fluidbook-v3-adminer
- restart: unless-stopped
- environment:
- ADMINER_DEFAULT_SERVER: fluidbook-v3-mariadb
- VIRTUAL_HOST: adminer.fluidbook.com
- LETSENCRYPT_HOST: adminer.fluidbook.
- networks:
- - fluidbook-v3
+ adminer:
+ image: 'adminer:latest'
+ container_name: fluidbook-v3-adminer
+ restart: unless-stopped
+ environment:
+ ADMINER_DEFAULT_SERVER: fluidbook-v3-mariadb
+ VIRTUAL_HOST: adminer.fluidbook.com
+ LETSENCRYPT_HOST: adminer.fluidbook.com
+ networks:
+ - fluidbook-v3
+ - nginxproxy
- fluidbook-v3-mariadb:
- container_name: fluidbook-v3-mariadb
- image: 'mariadb:latest'
- restart: unless-stopped
- environment:
- MARIADB_ROOT_PASSWORD: FB8qVD7R0jqsXYNR
- MARIADB_DATABASE: fluidbook-v3
- MARIADB_AUTO_UPGRADE: 1
- volumes:
- - "./database/dump.sql:/docker-entrypoint-initdb.d/dump.sql"
- - "./database/scripts/:/usr/local/bin/scripts/"
- - "./database/data:/var/lib/mysql"
- - './config/mariadb:/etc/mysql/conf.d:z'
- logging:
- driver: json-file
- options:
- max-size: 10M
- max-file: 10
- networks:
- - fluidbook-v3
+ fluidbook-v3-mariadb:
+ container_name: fluidbook-v3-mariadb
+ image: 'mariadb:latest'
+ restart: unless-stopped
+ environment:
+ MARIADB_ROOT_PASSWORD: FB8qVD7R0jqsXYNR
+ MARIADB_DATABASE: fluidbook-v3
+ MARIADB_AUTO_UPGRADE: 1
+ volumes:
+ - "./database/dump.sql:/docker-entrypoint-initdb.d/dump.sql"
+ - "./database/scripts/:/usr/local/bin/scripts/"
+ - "./database/data:/var/lib/mysql"
+ - './config/mariadb:/etc/mysql/conf.d:z'
+ logging:
+ driver: json-file
+ options:
+ max-size: 10M
+ max-file: 10
+ networks:
+ - fluidbook-v3
- mysqlbackup:
- image: selim13/automysqlbackup
- container_name: fluidbook-v3-automysqlbackup
- volumes:
- - "./database/backup:/backup"
- environment:
- USERNAME: root
- PASSWORD: FB8qVD7R0jqsXYNR
- DBHOST: fluidbook-v3-mariadb
- DBEXCLUDE: "performance_schema information_schema"
- CRON_SCHEDULE: "0 0 * * *"
- EXTRA_OPTS: "--single-transaction"
- networks:
- - fluidbook-v3
+ mysqlbackup:
+ image: selim13/automysqlbackup
+ container_name: fluidbook-v3-automysqlbackup
+ volumes:
+ - "./database/backup:/backup"
+ environment:
+ USERNAME: root
+ PASSWORD: FB8qVD7R0jqsXYNR
+ DBHOST: fluidbook-v3-mariadb
+ DBEXCLUDE: "performance_schema information_schema"
+ CRON_SCHEDULE: "0 0 * * *"
+ EXTRA_OPTS: "--single-transaction"
+ networks:
+ - fluidbook-v3
networks:
nginxproxy:
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose build
docker compose down -v
+rm -f ./database/data/tc.log
docker compose up -d
ufw-docker allow fluidbook-v3
\ No newline at end of file
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
- <list default="true" id="530ffb50-16c9-4bb3-ad22-e76f531eb78c" name="Default" comment="wip #7257 @0.75">
+ <list default="true" id="530ffb50-16c9-4bb3-ad22-e76f531eb78c" name="Default" comment="wip #7264 @2">
+ <change beforePath="$PROJECT_DIR$/.docker/production/docker-compose.yml" beforeDir="false" afterPath="$PROJECT_DIR$/.docker/production/docker-compose.yml" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/.docker/production/update" beforeDir="false" afterPath="$PROJECT_DIR$/.docker/production/update" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/framework/application/views/scripts/common/body.phtml" beforeDir="false" afterPath="$PROJECT_DIR$/framework/application/views/scripts/common/body.phtml" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/framework/library/CubeIT/Bootstrap/Db.php" beforeDir="false" afterPath="$PROJECT_DIR$/framework/library/CubeIT/Bootstrap/Db.php" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/framework/application/Bootstrap.php" beforeDir="false" afterPath="$PROJECT_DIR$/framework/application/Bootstrap.php" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/framework/application/configs/application.ini" beforeDir="false" afterPath="$PROJECT_DIR$/framework/application/configs/application.ini" afterDir="false" />
<change beforePath="$PROJECT_DIR$/framework/library/CubeIT/Bootstrap/Navigation.php" beforeDir="false" afterPath="$PROJECT_DIR$/framework/library/CubeIT/Bootstrap/Navigation.php" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/framework/library/Zend/View/Helper/Navigation/Sitemap.php" beforeDir="false" afterPath="$PROJECT_DIR$/framework/library/Zend/View/Helper/Navigation/Sitemap.php" afterDir="false" />
- <change beforePath="$PROJECT_DIR$/framework/library/Zend/Xml/Security.php" beforeDir="false" afterPath="$PROJECT_DIR$/framework/library/Zend/Xml/Security.php" afterDir="false" />
+ <change beforePath="$PROJECT_DIR$/less/104-nav.less" beforeDir="false" afterPath="$PROJECT_DIR$/less/104-nav.less" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
- <component name="PropertiesComponent"><![CDATA[{
- "keyToString": {
- "RunOnceActivity.OpenProjectViewOnStart": "true",
- "RunOnceActivity.git.unshallow": "true",
- "WebServerToolWindowFactoryState": "true",
- "WebServerToolWindowPanel.toolwindow.highlight.mappings": "true",
- "WebServerToolWindowPanel.toolwindow.highlight.symlinks": "true",
- "WebServerToolWindowPanel.toolwindow.show.date": "false",
- "WebServerToolWindowPanel.toolwindow.show.permissions": "false",
- "WebServerToolWindowPanel.toolwindow.show.size": "false",
- "git-widget-placeholder": "master",
- "ignore.virus.scanning.warn.message": "true",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "D:/Works/FluidbookWebV3/framework/library/CubeIT/Bootstrap",
- "node.js.detected.package.eslint": "true",
- "node.js.detected.package.tslint": "true",
- "node.js.selected.package.eslint": "(autodetect)",
- "node.js.selected.package.tslint": "(autodetect)",
- "nodejs_package_manager_path": "npm",
- "project.structure.last.edited": "Project",
- "project.structure.proportion": "0.0",
- "project.structure.side.proportion": "0.2",
- "ruby.rails.projectView.checked": "true",
- "settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
- "vue.rearranger.settings.migration": "true"
+ <component name="PropertiesComponent">{
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.git.unshallow": "true",
+ "WebServerToolWindowFactoryState": "true",
+ "WebServerToolWindowPanel.toolwindow.highlight.mappings": "true",
+ "WebServerToolWindowPanel.toolwindow.highlight.symlinks": "true",
+ "WebServerToolWindowPanel.toolwindow.show.date": "false",
+ "WebServerToolWindowPanel.toolwindow.show.permissions": "false",
+ "WebServerToolWindowPanel.toolwindow.show.size": "false",
+ "git-widget-placeholder": "master",
+ "ignore.virus.scanning.warn.message": "true",
+ "kotlin-language-version-configured": "true",
+ "last_opened_file_path": "D:/Works/FluidbookWebV3/framework/library/CubeIT/Bootstrap",
+ "node.js.detected.package.eslint": "true",
+ "node.js.detected.package.tslint": "true",
+ "node.js.selected.package.eslint": "(autodetect)",
+ "node.js.selected.package.tslint": "(autodetect)",
+ "nodejs_package_manager_path": "npm",
+ "project.structure.last.edited": "Project",
+ "project.structure.proportion": "0.0",
+ "project.structure.side.proportion": "0.2",
+ "ruby.rails.projectView.checked": "true",
+ "settings.editor.selected.configurable": "project.propVCSSupport.DirectoryMappings",
+ "vue.rearranger.settings.migration": "true"
}
-}]]></component>
+}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="D:\Works\FluidbookWebV3\framework\library\CubeIT\Bootstrap" />
<option name="Make" enabled="true" />
</method>
</configuration>
+ <configuration default="true" type="Application" factoryName="Application">
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
<configuration default="true" type="ArquillianJUnit" factoryName="">
<option name="arquillianRunConfiguration">
<value>
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<method v="2" />
</configuration>
+ <configuration default="true" type="JUnit" factoryName="JUnit">
+ <option name="TEST_OBJECT" value="class" />
+ <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+ <configuration default="true" type="TestNG">
+ <option name="TEST_OBJECT" value="CLASS" />
+ <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+ <properties />
+ <listeners />
+ <method v="2">
+ <option name="Make" enabled="true" />
+ </method>
+ </configuration>
+ <configuration default="true" type="js.build_tools.gulp">
+ <node-interpreter>project</node-interpreter>
+ <node-options />
+ <gulpfile />
+ <tasks />
+ <arguments />
+ <pass-parent-envs>true</pass-parent-envs>
+ <method v="2" />
+ </configuration>
<configuration default="true" type="tests" factoryName="Attests">
<option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" />
<workItem from="1728998686616" duration="8507000" />
<workItem from="1731579305063" duration="12263000" />
<workItem from="1739209041347" duration="1137000" />
- <workItem from="1739539005844" duration="4203000" />
+ <workItem from="1739539005844" duration="4288000" />
+ <workItem from="1739788502594" duration="628000" />
+ <workItem from="1739800972227" duration="5782000" />
</task>
<task id="LOCAL-00117" summary="fix #1407 @1">
<created>1494411210038</created>
<option name="project" value="LOCAL" />
<updated>1682409989659</updated>
</task>
- <option name="localTasksCounter" value="174" />
+ <option name="localTasksCounter" value="175" />
<servers>
<Redmine shared="true" url="https://team.cubedesigners.com/redmine">
<option name="APIKey" value="ee454486fcd47aa38e5c99d5a7dc44cff1f65597" />
protected function _makeNavigationOnePage(&$navigation, $r, $t, $isAdmin, $locale = false)
{
+
+ $page = parent::_makeNavigationOnePage($navigation, $r, $t, $isAdmin, $locale);
// Remove all reference of the blog on the english version
if ($r->template === 'blog' && $locale === 'en') {
- if (!$isAdmin) {
- return;
- } else {
- $r->online = false;
- }
+ $page->setMenu(false);
+ $page->setSitemap(false);
}
- $page = parent::_makeNavigationOnePage($navigation, $r, $t, $isAdmin, $locale);
if (!$page) return;
mail.test = APPLICATION_PATH "/../data/email/test"
-compat_ie = 9
-
privacy.dnt = 1
privacy.analytics = 1
profile(__FILE__, __LINE__, 'Make Application navigation');
- $cache = $this->getCoreCache();
-
$isAdmin = $this->isAllowed('administration');
$cacheId = $this->_getNavigationCacheId($isAdmin, $full);
- $mtime = max(filemtime(CubeIT_Util_PHP::getFileDeclaring($this)), filemtime(__FILE__));
- $meta = $cache->getMetadatas($cacheId);
-
- if (!$this->_cacheNavigation || $refresh || !$cache->test($cacheId) || $mtime > $meta['mtime']) {
- $navigation = $this->_createNavigation($isAdmin);
+ $navigation = $this->_createNavigation($isAdmin);
- $r = $this->navRoot;
- if ($full) {
- $r = null;
- }
+ $r = $this->navRoot;
+ if ($full) {
+ $r = null;
+ }
- if ($this->isMultilang()) {
- $this->_makeNavigationMultiLocale($navigation, $isAdmin, $r);
- } else {
- $this->_makeNavigationMonoLocale($navigation, $isAdmin, $r);
- }
+ if ($this->isMultilang()) {
+ $this->_makeNavigationMultiLocale($navigation, $isAdmin, $r);
+ } else {
+ $this->_makeNavigationMonoLocale($navigation, $isAdmin, $r);
+ }
- if (!$isAdmin) {
- foreach ($this->_getNextRedirectionTemplates() as $template) {
- foreach ($navigation->findAllByTemplate($template) as $p) {
- $p->setUri($p->getFinalUri());
- }
- }
- foreach ($navigation->findAllByTemplate('pageredirection') as $p) {
- $p->setUri($p->getFinalUri());
- }
- foreach ($navigation->findAllByTemplate('subredirection') as $p) {
+ if (!$isAdmin) {
+ foreach ($this->_getNextRedirectionTemplates() as $template) {
+ foreach ($navigation->findAllByTemplate($template) as $p) {
$p->setUri($p->getFinalUri());
}
}
- if ($this->_cacheNavigation) {
- $cache->save($navigation, $cacheId, array('navigation'));
- $navigation->archive($this->getDb());
+ foreach ($navigation->findAllByTemplate('pageredirection') as $p) {
+ $p->setUri($p->getFinalUri());
+ }
+ foreach ($navigation->findAllByTemplate('subredirection') as $p) {
+ $p->setUri($p->getFinalUri());
}
- } else {
- $navigation = $cache->load($cacheId, false);
}
+ if ($this->_cacheNavigation) {
+ $navigation->archive($this->getDb());
+ }
+
return $navigation;
}
@import "000-imports";\r
\r
nav {\r
- font-family: @montserrat;\r
- font-weight: 300;\r
- a {\r
- text-transform: uppercase;\r
- text-decoration: none;\r
- font-size: 12px;\r
- color: @color-header-grey;\r
-\r
- &:hover {\r
- color: currentColor;\r
- }\r
- }\r
- ul {\r
- list-style: none;\r
- li {\r
- display: inline-block;\r
- }\r
- }\r
+ font-family: @montserrat;\r
+ font-weight: 300;\r
+\r
+ a {\r
+ text-transform: uppercase;\r
+ text-decoration: none;\r
+ font-size: 12px;\r
+ color: @color-header-grey;\r
+\r
+ &:hover {\r
+ color: currentColor;\r
+ }\r
+ }\r
+\r
+ ul {\r
+ list-style: none;\r
+\r
+ li {\r
+ display: inline-block;\r
+ }\r
+ }\r
+\r
+ li:empty {\r
+ display: none;\r
+ }\r
}\r
\r
nav#menu {\r
- position: absolute;\r
- top: 60px;\r
- left: 44%; // Must be kept in sync with TweenMax value in 101-header.js\r
- transform: translateX(-50%);\r
- margin-left: 36px; // Extra spacing for logo symbol\r
-\r
- @media @m1320 { // Left align menu\r
- transform: none !important;\r
- left: 0 !important;\r
- top: 26px !important;\r
- }\r
-\r
- @media @bp-menu {\r
- display: none;\r
- }\r
-\r
- a {\r
- line-height: 9px;\r
- border: 1px solid transparent;\r
- padding-bottom: 13px;\r
- display: inline-block;\r
- }\r
-\r
- > ul {\r
- > li {\r
-\r
- margin: 0 25px;\r
- position: relative;\r
-\r
- @media @m1280 {\r
- margin: 0 15px;\r
- }\r
-\r
- @media (max-width: 900px) {\r
- margin: 0 7px;\r
- }\r
-\r
- > a {\r
- position: relative;\r
- &:after {\r
- content: "";\r
- height: 1px;\r
- width: 0;\r
- position: absolute;\r
- background-color: @color-header-grey;\r
- left: 0;\r
- bottom: 0;\r
- transition: @transition-time-buttons width;\r
- }\r
- }\r
-\r
- &.active > a, a:hover {\r
- color: @color-header-grey;\r
- &:after {\r
- width: 100%;\r
- }\r
- }\r
- &:hover {\r
- > ul {\r
- display: block;\r
- }\r
- }\r
-\r
- > ul {\r
- position: absolute;\r
- top: 40px;\r
- left: -20px;\r
- background-color: #fff;\r
- box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\r
- white-space: nowrap;\r
- display: none;\r
- &:before {\r
- content: "";\r
- background-color: transparent;\r
- height: 20px;\r
- width: 100%;\r
- top: -20px;\r
- left: 0px;\r
- position: absolute;\r
- }\r
-\r
- > li {\r
- display: block;\r
- text-align: left;\r
-\r
- margin: 10px 20px;\r
-\r
- a {\r
- transition: @transition-time-buttons color;\r
-\r
- header#h.light & {\r
- color: @color-header-grey;\r
- }\r
- }\r
-\r
- &.active a, a:hover {\r
- border-bottom-color: transparent;\r
- color: @color-submenu-hover !important;\r
- }\r
- }\r
- }\r
- }\r
- }\r
+ position: absolute;\r
+ top: 60px;\r
+ left: 44%; // Must be kept in sync with TweenMax value in 101-header.js\r
+ transform: translateX(-50%);\r
+ margin-left: 36px; // Extra spacing for logo symbol\r
+\r
+ @media @m1320 {\r
+ // Left align menu\r
+ transform: none !important;\r
+ left: 0 !important;\r
+ top: 26px !important;\r
+ }\r
+\r
+ @media @bp-menu {\r
+ display: none;\r
+ }\r
+\r
+ a {\r
+ line-height: 9px;\r
+ border: 1px solid transparent;\r
+ padding-bottom: 13px;\r
+ display: inline-block;\r
+ }\r
+\r
+ > ul {\r
+ > li {\r
+\r
+ margin: 0 25px;\r
+ position: relative;\r
+\r
+ @media @m1280 {\r
+ margin: 0 15px;\r
+ }\r
+\r
+ @media (max-width: 900px) {\r
+ margin: 0 7px;\r
+ }\r
+\r
+ > a {\r
+ position: relative;\r
+\r
+ &:after {\r
+ content: "";\r
+ height: 1px;\r
+ width: 0;\r
+ position: absolute;\r
+ background-color: @color-header-grey;\r
+ left: 0;\r
+ bottom: 0;\r
+ transition: @transition-time-buttons width;\r
+ }\r
+ }\r
+\r
+ &.active > a, a:hover {\r
+ color: @color-header-grey;\r
+\r
+ &:after {\r
+ width: 100%;\r
+ }\r
+ }\r
+\r
+ &:hover {\r
+ > ul {\r
+ display: block;\r
+ }\r
+ }\r
+\r
+ > ul {\r
+ position: absolute;\r
+ top: 40px;\r
+ left: -20px;\r
+ background-color: #fff;\r
+ box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2);\r
+ white-space: nowrap;\r
+ display: none;\r
+\r
+ &:before {\r
+ content: "";\r
+ background-color: transparent;\r
+ height: 20px;\r
+ width: 100%;\r
+ top: -20px;\r
+ left: 0px;\r
+ position: absolute;\r
+ }\r
+\r
+ > li {\r
+ display: block;\r
+ text-align: left;\r
+\r
+ margin: 10px 20px;\r
+\r
+ a {\r
+ transition: @transition-time-buttons color;\r
+\r
+ header#h.light & {\r
+ color: @color-header-grey;\r
+ }\r
+ }\r
+\r
+ &.active a, a:hover {\r
+ border-bottom-color: transparent;\r
+ color: @color-submenu-hover !important;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
\r
nav#contactnav {\r
- position: absolute;\r
- right: 0;\r
- bottom: 1px;\r
-\r
- @media @bp-menu {\r
- bottom: -10px;\r
- }\r
-\r
- @media @m768 {\r
- bottom: 5px;\r
- }\r
-\r
- li {\r
- margin-left: 19px;\r
- @media (max-width: 900px ) {\r
- margin-left: 10px;\r
- }\r
- }\r
- a {\r
- .rounded-button();\r
- &.quoteLink {\r
- .background-button-green();\r
- color: #fff;\r
- line-height: 1;\r
- @media @m640 {\r
- display: none;\r
- }\r
-\r
- position: relative;\r
- }\r
- &.agencies {\r
- .border-button-fill(@color-header-grey, #c2c4c7, 5%);\r
- line-height: 1;\r
- @media @bp-menu {\r
- display: none;\r
- }\r
- }\r
- .smallarrow-button(10px, 30px, 10px, 7px);\r
-\r
- @media @m1024 {\r
- padding-left: 15px;\r
- padding-right: 15px;\r
- }\r
-\r
- @media @bp-menu {\r
- padding-left: 29px;\r
- padding-right: 29px;\r
- }\r
-\r
- @media @m768 {\r
- padding-left: 15px;\r
- padding-right: 15px;\r
- }\r
- }\r
+ position: absolute;\r
+ right: 0;\r
+ bottom: 1px;\r
+\r
+ @media @bp-menu {\r
+ bottom: -10px;\r
+ }\r
+\r
+ @media @m768 {\r
+ bottom: 5px;\r
+ }\r
+\r
+ li {\r
+ margin-left: 19px;\r
+ @media (max-width: 900px ) {\r
+ margin-left: 10px;\r
+ }\r
+ }\r
+\r
+ a {\r
+ .rounded-button();\r
+\r
+ &.quoteLink {\r
+ .background-button-green();\r
+ color: #fff;\r
+ line-height: 1;\r
+ @media @m640 {\r
+ display: none;\r
+ }\r
+\r
+ position: relative;\r
+ }\r
+\r
+ &.agencies {\r
+ .border-button-fill(@color-header-grey, #c2c4c7, 5%);\r
+ line-height: 1;\r
+ @media @bp-menu {\r
+ display: none;\r
+ }\r
+ }\r
+\r
+ .smallarrow-button(10px, 30px, 10px, 7px);\r
+\r
+ @media @m1024 {\r
+ padding-left: 15px;\r
+ padding-right: 15px;\r
+ }\r
+\r
+ @media @bp-menu {\r
+ padding-left: 29px;\r
+ padding-right: 29px;\r
+ }\r
+\r
+ @media @m768 {\r
+ padding-left: 15px;\r
+ padding-right: 15px;\r
+ }\r
+ }\r
}\r
\r
.macaron {\r
- box-sizing: border-box;\r
- display: inline-block;\r
- position: absolute;\r
- top: -22px;\r
- right: -25px;\r
- width: 45px;\r
- height: 45px;\r
- border-radius: 50%;\r
- background-color: #f7807e;\r
- color: #fff;\r
- font-family: "Times New Roman", "Times", serif;\r
- font-size: 19px;\r
- text-align: center;\r
- padding-top: 13px;\r
- sup {\r
- font-size: 50%;\r
- }\r
- z-index: 1;\r
-\r
- @media @m1024 {\r
- width: 35px;\r
- height: 35px;\r
- font-size: 17px;\r
- padding-top: 8px;\r
- top: -12px;\r
- right: -18px;\r
- line-height:17px;\r
- }\r
-\r
- @media @m640 {\r
- position: absolute;\r
- top: 12px;\r
- right: auto;\r
- margin-left:20px;\r
- padding-top:6px;\r
- }\r
+ box-sizing: border-box;\r
+ display: inline-block;\r
+ position: absolute;\r
+ top: -22px;\r
+ right: -25px;\r
+ width: 45px;\r
+ height: 45px;\r
+ border-radius: 50%;\r
+ background-color: #f7807e;\r
+ color: #fff;\r
+ font-family: "Times New Roman", "Times", serif;\r
+ font-size: 19px;\r
+ text-align: center;\r
+ padding-top: 13px;\r
+\r
+ sup {\r
+ font-size: 50%;\r
+ }\r
+\r
+ z-index: 1;\r
+\r
+ @media @m1024 {\r
+ width: 35px;\r
+ height: 35px;\r
+ font-size: 17px;\r
+ padding-top: 8px;\r
+ top: -12px;\r
+ right: -18px;\r
+ line-height: 17px;\r
+ }\r
+\r
+ @media @m640 {\r
+ position: absolute;\r
+ top: 12px;\r
+ right: auto;\r
+ margin-left: 20px;\r
+ padding-top: 6px;\r
+ }\r
}\r
\r
#nav-icon {\r
- width: 31px;\r
- height: 26px;\r
- position: fixed;\r
- transform: rotate(0deg);\r
- cursor: pointer;\r
- top: 36px;\r
- left: 50px;\r
- display: none;\r
- z-index: 12;\r
-\r
- @media @bp-menu {\r
- display: block;\r
- }\r
-\r
- @media @m768 {\r
- width: 18px;\r
- height: 18px;\r
- top: 25px;\r
- left: 25px;\r
- }\r
-\r
- &.light {\r
- span {\r
- background: #fff;\r
- .mm-opening & {\r
- background: #2a3743;\r
- }\r
- }\r
- }\r
-\r
- span {\r
- display: block;\r
- position: absolute;\r
- height: 2px;\r
- width: 100%;\r
- background: #2a3743;\r
- border-radius: 0px;\r
- opacity: 1;\r
- left: 0;\r
- transform: rotate(0deg);\r
- transition: .25s ease-in-out;\r
-\r
- &:nth-child(1) {\r
- top: 0px;\r
- }\r
- &:nth-child(2) {\r
- top: 12px;\r
- @media @m768 {\r
- top: 8px;\r
- }\r
- }\r
-\r
- &:nth-child(3) {\r
- top: 26px;\r
- @media @m768 {\r
- top: 16px;\r
- }\r
- }\r
- }\r
-\r
- .mm-opened & {\r
- span {\r
- &:nth-child(1) {\r
- top: 12px;\r
- transform: rotate(135deg);\r
- @media @m768 {\r
- top: 8px;\r
- }\r
- }\r
- &:nth-child(2) {\r
- opacity: 0;\r
- left: -30px;\r
- }\r
- &:nth-child(3) {\r
- top: 12px;\r
- transform: rotate(-135deg);\r
- @media @m768 {\r
- top: 8px;\r
- }\r
- }\r
- }\r
- }\r
+ width: 31px;\r
+ height: 26px;\r
+ position: fixed;\r
+ transform: rotate(0deg);\r
+ cursor: pointer;\r
+ top: 36px;\r
+ left: 50px;\r
+ display: none;\r
+ z-index: 12;\r
+\r
+ @media @bp-menu {\r
+ display: block;\r
+ }\r
+\r
+ @media @m768 {\r
+ width: 18px;\r
+ height: 18px;\r
+ top: 25px;\r
+ left: 25px;\r
+ }\r
+\r
+ &.light {\r
+ span {\r
+ background: #fff;\r
+\r
+ .mm-opening & {\r
+ background: #2a3743;\r
+ }\r
+ }\r
+ }\r
+\r
+ span {\r
+ display: block;\r
+ position: absolute;\r
+ height: 2px;\r
+ width: 100%;\r
+ background: #2a3743;\r
+ border-radius: 0px;\r
+ opacity: 1;\r
+ left: 0;\r
+ transform: rotate(0deg);\r
+ transition: .25s ease-in-out;\r
+\r
+ &:nth-child(1) {\r
+ top: 0px;\r
+ }\r
+\r
+ &:nth-child(2) {\r
+ top: 12px;\r
+ @media @m768 {\r
+ top: 8px;\r
+ }\r
+ }\r
+\r
+ &:nth-child(3) {\r
+ top: 26px;\r
+ @media @m768 {\r
+ top: 16px;\r
+ }\r
+ }\r
+ }\r
+\r
+ .mm-opened & {\r
+ span {\r
+ &:nth-child(1) {\r
+ top: 12px;\r
+ transform: rotate(135deg);\r
+ @media @m768 {\r
+ top: 8px;\r
+ }\r
+ }\r
+\r
+ &:nth-child(2) {\r
+ opacity: 0;\r
+ left: -30px;\r
+ }\r
+\r
+ &:nth-child(3) {\r
+ top: 12px;\r
+ transform: rotate(-135deg);\r
+ @media @m768 {\r
+ top: 8px;\r
+ }\r
+ }\r
+ }\r
+ }\r
}\r
\r
header#h.light {\r
- nav#menu {\r
- a {\r
- color: #fff;\r
- }\r
-\r
- > ul > li > a:after {\r
- background-color: #fff;\r
- }\r
-\r
- }\r
- nav#contactnav {\r
- a {\r
- &.agencies {\r
- .border-button(#fff, #fff);\r
- }\r
- }\r
- }\r
+ nav#menu {\r
+ a {\r
+ color: #fff;\r
+ }\r
+\r
+ > ul > li > a:after {\r
+ background-color: #fff;\r
+ }\r
+\r
+ }\r
+\r
+ nav#contactnav {\r
+ a {\r
+ &.agencies {\r
+ .border-button(#fff, #fff);\r
+ }\r
+ }\r
+ }\r
}\r
\r
@import "105-mmenu";\r