Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (671)
Showing with 534 additions and 3641 deletions
VUE_APP_ODA_PROD = 'https://oda.uib.no/opal/prod/'
VUE_APP_ODA_DEV = 'https://oda.uib.no/opal/dev/'
VUE_APP_ODD_PROD = 'https://odd.uib.no/opal/prod/'
VUE_APP_ODD_DEV = 'https://odd.uib.no/opal/dev/'
VUE_APP_IDA_DEV = 'https://ida.uib.no/opal/dev/'
VUE_APP_IDA_PROD = 'https://ida.uib.no/opal/prod/'
\ No newline at end of file
NODE_ENV=production
VUE_APP_ARTICLE_ENDPOINT='https://oda.uib.no/opal/dev/'
VUE_APP_SEARCH_ENDPOINT='https://oda.uib.no/opal/dev/api/'
VUE_APP_ENDPOINT='odd_prod'
VUE_APP_FALLBACK_ENDPOINT='odd_dev'
VUE_APP_VERSION_LABEL=DEVELOPMENT
VUE_APP_ARTICLE_ENDPOINT='https://oda.uib.no/opal/dev/'
VUE_APP_SEARCH_ENDPOINT='https://oda.uib.no/opal/dev/api/'
VUE_APP_ENDPOINT='odd_prod'
VUE_APP_FALLBACK_ENDPOINT='odd_dev'
VUE_APP_VERSION_LABEL=LOCAL
VUE_APP_RELEASE=test
NODE_ENV=production
VUE_APP_VERSION_LABEL=Beta
VUE_APP_ARTICLE_ENDPOINT='https://oda.uib.no/opal/prod/'
VUE_APP_SEARCH_ENDPOINT='https://oda.uib.no/opal/prod/api/'
VUE_APP_VERSION_LABEL=Prod
VUE_APP_ENDPOINT='oda_prod'
VUE_APP_FALLBACK_ENDPOINT='odd_prod'
......@@ -13,7 +13,7 @@ workflow:
build-dev:
image: node:16
tags:
- spraaksamlingene_01
- group_runner_spraaksamlingene_01
stage: build
rules:
- if: $CI_COMMIT_TAG != null
......@@ -22,14 +22,15 @@ build-dev:
when: manual
- when: on_success
script:
- |-
- |-
if [[ $CI_PIPELINE_SOURCE == "merge_request_event" ]]; then
echo "VUE_APP_RELEASE=MERGE $CI_MERGE_REQUEST_SOURCE_BRANCH_NAME ($CI_COMMIT_SHORT_SHA)" >> .env.dev_server
else
else
echo "VUE_APP_RELEASE=BRANCH $CI_COMMIT_BRANCH ($CI_COMMIT_SHORT_SHA)" >> .env.dev_server
fi
- npm install --progress=false
- npm run build -- --mode dev_server
- 'echo -e "\nDisallow: /" >> dist/robots.txt'
artifacts:
expire_in: 1 week
paths:
......@@ -38,7 +39,7 @@ build-dev:
build-prod:
image: node:16
tags:
- spraaksamlingene_01
- group_runner_spraaksamlingene_01
stage: build
only:
- /^release_.*$/
......@@ -51,10 +52,35 @@ build-prod:
paths:
- dist
.build-sitemap:
tags:
- group_runner_spraaksamlingene_01
image: "python:3.9"
stage: "build"
script:
- curl "https://ord.uib.no/bm/fil/lemma.json" > "bm_lemma.json"
- curl "https://ord.uib.no/nn/fil/lemma.json" > "nn_lemma.json"
- python3 src/sitemap/sitemap.py
artifacts:
expire_in: 1 week
paths:
- src/sitemap/xml
build-sitemap-dev:
extends: .build-sitemap
when: manual
build-sitemap-prod:
extends: .build-sitemap
needs: [build-prod]
only:
- /^release_.*$/
deploy-dev:
image: uibit/awscli:latest
tags:
- spraaksamlingene_01
- group_runner_spraaksamlingene_01
stage: deploy
rules:
- if: $CI_COMMIT_TAG != null
......@@ -76,7 +102,7 @@ deploy-dev:
"AltDomainName=dev.ordbok.uib.no"
"DomainName=beta.ordbok-dev.aws.uib.no"
"ZoneDomainName=ordbok-dev.aws.uib.no"
"PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_DEV_ACCOUNT}:function:rewrite_request:6"
"PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_DEV_ACCOUNT}:function:rewrite_request:12"
"OrdbokCacheOriginDomain=8mwl23g34a.execute-api.eu-west-1.amazonaws.com"
"OrdbokCacheStage=DEV"
--no-fail-on-empty-changeset
......@@ -93,11 +119,12 @@ deploy-dev:
deploy-prod:
image: uibit/awscli:latest
tags:
- spraaksamlingene_01
- group_runner_spraaksamlingene_01
stage: deploy
only:
- /^release_.*$/
script:
- cp src/sitemap/xml/* dist
- rm -rf ~/.aws
- mv .aws ~/
- export AWS_ACCESS_KEY_ID=$AWS_PROD_ACCESS_KEY_ID
......@@ -107,7 +134,7 @@ deploy-prod:
- aws cloudformation deploy --stack-name ${STACK_NAME}
--template-file "aws/beta.ordbok.uib.no_stack.yaml"
--parameter-overrides "CertificateArn=${CERT_ARN}"
"PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_PROD_ACCOUNT}:function:path_rewrite:14"
"PathRewriteLambdaARN=arn:aws:lambda:us-east-1:${AWS_PROD_ACCOUNT}:function:path_rewrite:18"
"OrdbokCacheOriginDomain=n5speug9cl.execute-api.eu-west-1.amazonaws.com"
"OrdbokCacheStage=PROD"
--no-fail-on-empty-changeset
......
This diff is collapsed.
......@@ -48,18 +48,11 @@ p {
<div id="main">
<h1>Ordbok-API</h1>
<h3>Hva er dette?</h3>
<p>Gjennom denne tjenesten kan man gjøre oppslag i alle ord registrert i Bokmåls- og Nynorskordboka. Man trenger en API-nøkkel for å bruke tjenesten. Denne sendes ut
etter avtale, kontakt <a href="mailto:ordbokene@uib.no">ordbokene@uib.no</a> for mer informasjon. API-et er todelt, en åpen del som kan brukes av alle som har en API-nøkkel,
og en lukket del for redigering som kun er tilgjengelig for godkjente redaktører.
<p>Gjennom denne ord.uib.no kan man gjøre oppslag i alle ord registrert i Bokmåls- og Nynorskordboka. Vi tilbyr foreløpig interaktiv dokumentasjon på engelsk og en mer omfattende brukerveiledning på norsk.
</p>
<h3>Hva kan du forvente av denne tjenesten?</h3>
<p>Tjenesten er foreløpig i Beta. Selv om vi etterstreber å gjøre alle endringer inkrementelle vil det kunne forekomme strukturelle endringer i denne fasen.</p>
<p>Tjenesten er overvåket innenfor vanlig arbeidstid, og vil normalt være tilgjengelig hele døgnet. Dersom tjenesten skulle bli utilgjengelig på ettermiddag eller kveld
vil dette blir løst så fort som mulig neste arbeidsdag.</p>
<div id="link-container">
<div class="link"><a target="_blank" href ="/api/swagger-ui.html"><img src="https://unpkg.com/swagger-ui-dist@3.23.5/favicon-32x32.png"> Utforsk REST-API-en</a></div>
<div class="link"> <a href="/api/guide.html">Brukerveiledning</a> </div>
<div class="link"><a href="https://git.app.uib.no/spraksamlingane/api.ordbok.uib.no/-/blob/master/resources/swagger.json">Intern API</a> (velg den absolutte URLen fra menyen "servers")</div>
<div class="link"> <a href="https://ord.uib.no/">Brukerveiledning</a> </div>
<div class="link"><a target="_blank" href ="/api/swagger-ui.html"><img src="https://unpkg.com/swagger-ui-dist@3.23.5/favicon-32x32.png" aria-hidden="true"> Explore the REST-API</a></div>
</div>
</div>
<div> </div>
......
......@@ -3,9 +3,9 @@
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@3.33.0/swagger-ui.css" >
<link rel="icon" type="image/png" href="https://unpkg.com/swagger-ui-dist@3.33.0/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="https://unpkg.com/swagger-ui-dist@3.33.0/favicon-16x16.png" sizes="16x16" />
<link rel="stylesheet" type="text/css" href="https://unpkg.com/swagger-ui-dist@4/swagger-ui.css" >
<link rel="icon" type="image/png" href="https://unpkg.com/swagger-ui-dist@4/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="https://unpkg.com/swagger-ui-dist@4/favicon-16x16.png" sizes="16x16" />
<style>
html
{
......@@ -32,13 +32,13 @@
<body>
<div id="swagger-ui"></div>
<script src="https://unpkg.com/swagger-ui-dist@3.33.0/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="https://unpkg.com/swagger-ui-dist@3.33.0/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script src="https://unpkg.com/swagger-ui-dist@4/swagger-ui-bundle.js" charset="UTF-8"> </script>
<script src="https://unpkg.com/swagger-ui-dist@4/swagger-ui-standalone-preset.js" charset="UTF-8"> </script>
<script>
window.onload = function() {
// Begin Swagger UI call region
const ui = SwaggerUIBundle({
url: "./swagger.json",
url: "./swagger.yml",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
......
{
"openapi": "3.0.1",
"info": {
"title": "Ordbok API",
"description": "This API is developed by the University of Bergen. Its purpose is to serve the new national dictionary website wich is under development. API keys are available upon request. No warranty.",
"version": "beta"
},
"servers": [
{
"url": "/api"
}
],
"paths": {
"/dict/{dict_id}": {
"get": {
"summary": "Dictionary metadata",
"description": "Returns metadata for a dictionary, including all entities used in article text",
"parameters": [
{
"name": "dict_id",
"in": "path",
"required": true,
"description": "Dictionary code, 'bob' for bokmål, 'nob' for nynorsk",
"schema": {
"type": "string"
},
"example": "bob"
}
],
"security": [
{
"api_key": []
}
],
"responses": {
"200": {
"description": "bla bla",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
},
"/dict/{dict_id}/article/{art_id}": {
"get": {
"summary": "Article lookup",
"description": "Returns an article with a specific numeric ID",
"parameters": [
{
"name": "dict_id",
"in": "path",
"required": true,
"description": "Dictionary code, 'bob' for bokmål, 'nob' for nynorsk",
"schema": {
"type": "string"
},
"example": "bob"
},
{
"name": "art_id",
"in": "path",
"required": true,
"description": "The numeric ID of an article",
"schema": {
"type": "integer"
},
"example": 15544
}
],
"security": [
{
"api_key": []
}
],
"responses": {
"200": {
"description": "bla bla",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
},
"/dict/{dict_id}/article/search": {
"get": {
"summary": "Search for a word",
"description": "Search for words as an article lemmas, or words occurring in certain article elements. For instance, old norse _fljúga_ will match the article for modern Norwegian verb _fly_ (meaning to fly)",
"parameters": [
{
"name": "dict_id",
"description": "Dictionary to search, 'bob' for bokmål, 'nob' for nynorsk, 'bob,nob' for both",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "q",
"description": "Query string",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"api_key": []
}
],
"responses": {
"200": {
"description": "bla bla",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
},
"/dict/{dict_id}/article/suggest": {
"get": {
"summary": "Get autocomplete suggestions for a prefix",
"description": "Returns articles for words that begin with the prefix specified in query string 'q'",
"parameters": [
{
"name": "dict_id",
"description": "Dictionary to search, 'bob' for bokmål, 'nob' for nynorsk, 'bob,bob' for both",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "q",
"description": "Query string: prefix for autocomplete",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"security": [
{
"api_key": []
}
],
"responses": {
"200": {
"description": "bla bla",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
},
"securitySchemes": {
"api_key": {
"type": "apiKey",
"name": "x-api-key",
"in": "header"
}
}
}
}
openapi: 3.0.1
info:
title: Ordbok API
description: This API is developed by the University of Bergen. Its purpose is to serve the new national dictionary website wich is under development. No warranty.
version: 1.0.0
servers:
- url: https://ord.uib.no
paths:
/api/suggest:
get:
summary: Autocomplete
description: Suggests search keywords.
parameters:
- name: q
in: query
required: true
description: The search string
schema:
type: string
example: test
- name: dict
in: query
required: true
description: Dictionary code, 'bm' for bokmål, 'nn' for nynorsk, 'bm,nn' for both
schema:
type: string
example: bm,nn
- name: wc
in: query
description: "Filter by word class (part of speech tags: https://universaldependencies.org/u/pos/index.html). "
schema:
type: string
example: NOUN
- name: n
in: query
description: Number of results to return
schema:
type: integer
example: 4
- name: include
in: query
description: "Choose what types of suggestions you want to be included in the response. The parameter should be a concatenation of any of the following characters: e (exact lemma), f (full-text search), i (inflected forms), s (similar - fuzzy search)"
schema:
type: string
example: eis
- name: dform
in: query
description: "dfomr=int turns dictionary codes in the response into integers: 1 = bm, 2 = nn and 3 = bm,nn"
schema:
type: string
example: int
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
/api/articles:
get:
summary: Article search
description: Search for articles. Returns lists of article IDs.
parameters:
- name: w
in: query
required: true
description: Word (Query string)
schema:
type: string
example: test
- name: dict
in: query
required: true
description: Dictionary code, 'bm' for bokmål, 'nn' for nynorsk, 'bm,nn' for both
schema:
type: string
example: bm,nn
- name: wc
in: query
description: "Filter by word class (part of speech tags: https://universaldependencies.org/u/pos/index.html). "
schema:
type: string
example: NOUN
- name: scope
in: query
description: "Define the scope of your query. The parameter should be a concatenation of any of the following characters: e (exact lemma), f (full-text search), i (inflected forms)"
schema:
type: string
example: eif
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
/{dict}/article/{article_id}.json:
get:
summary: Article lookup
description: Returns an article with a specific numeric ID
parameters:
- name: dict
in: path
required: true
description: Dictionary code, 'bm' for bokmål, 'nn' for nynorsk, 'bm,nn' for both
schema:
type: string
example: bm
- name: article_id
in: path
required: true
description: The numeric ID of an article
schema:
type: integer
example: 54131
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
......@@ -24,7 +24,7 @@ Parameters:
AltDomainName:
Type: String
Description: The domain name.
Default: 'beta.ordbok.uib.no'
Default: 'ordbokene.no'
AllowedPattern: (?!-)[a-zA-Z0-9-.]{1,63}(?<!-)
ConstraintDescription: must be a valid DNS zone name
......
This diff is collapsed.
......@@ -3,22 +3,22 @@
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"serve": "vue-cli-service serve --port 8081",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"i18n:report": "vue-cli-service i18n:report --src \"./src/**/*.?(js|vue)\" --locales \"./src/locales/**/*.json\""
},
"dependencies": {
"axios": "^0.21.1",
"axios-cache-adapter": "^2.7.3",
"core-js": "~3.6.5",
"debounce": "^1.2.1",
"inflection-table": "https://git.app.uib.no/api/v4/projects/16442/jobs/artifacts/0.2.45/raw/module.tar.gz?job=publish",
"inflection-table": "https://git.app.uib.no/api/v4/projects/16442/jobs/artifacts/1.1.6/raw/module.tar.gz?job=publish",
"vue": "^2.6.12",
"vue-i18n": "^8.26.7",
"vue-i18n-bridge": "^9.2.0-beta.10",
"vue-material-design-icons": "^4.11.0",
"vue-plausible": "^1.1.4",
"vue-meta": "^2.4.0",
"vue-plausible": "^1.3.1",
"vue-router": "^3.5.1",
"vuetify": "^2.5.8",
"vuex": "^3.6.2"
......@@ -33,6 +33,7 @@
"babel-eslint": "^10.1.0",
"eslint": "^5.16.0",
"eslint-plugin-vue": "^5.0.0",
"mark.js": "^8.11.1",
"material-design-icons-iconfont": "^6.1.0",
"sass": "^1.38.0",
"sass-loader": "^10.0.0",
......
public/favicon.ico

16.6 KiB | W: 64px | H: 64px

public/favicon.ico

21.6 KiB | W: 256px | H: 256px

public/favicon.ico
public/favicon.ico
public/favicon.ico
public/favicon.ico
  • 2-up
  • Swipe
  • Onion skin
public/favicon_old.ico

16.6 KiB

google-site-verification=i2hk16Pgpgw1Ld_XeejQrFttyZcKtEDwsdSa_oGs_Ms
\ No newline at end of file
......@@ -6,14 +6,35 @@
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="apple-touch-icon" href="<%= BASE_URL %>touch-icon.png">
<meta name="robots" content="noindex" />
<title>Ordbøkene</title>
<meta property="og:title" content="Ordbøkene.no - Bokmålsordboka og Nynorskordboka" />
<meta property="twitter:title" content="Ordbøkene.no - Bokmålsordboka og Nynorskordboka" />
<meta property="og:type" content="website" />
<meta property="og:url" content="ordbokene.no" />
<meta property="og:description" content="Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene." />
<meta property="twitter:description" content="Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene." />
<meta property="og:image" content="<%= BASE_URL %>logo.png" />
<meta property="og:image:width" content="256px" />
<meta property="og:image:height" content="256px" />
<meta property="twitter:image" content="<%= BASE_URL %>logo.png" />
<meta property="description" content="Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene." />
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/fC1lPYxPY3rXxEndZJAzN3Srdy0.0ad9c62f.woff2" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/fC14PYxPY3rXxEndZJAzN3wQUjjCjl0.2712a85c.woff2" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/NotoSansParen.967bb7ff.woff" type="font/woff" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/o-0IIpQlx3QUlC5A4PNr5TRA.df7d440a.woff2" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/o-0NIpQlx3QUlC5A4PNjXhFVZNyBx2pqPA.887e23ab.woff2" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/o-0OIpQlx3QUlC5A4PNr4ARCQ_k.6816e3a8.woff2" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/MaterialIcons-Regular.51cf1d64.ttf" type="font/ttf" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/MaterialIcons-Regular.84a37de8.woff" type="font/woff" crossorigin="anonymous"/>
<link rel="preload" as="font" href="<%= BASE_URL %>fonts/MaterialIcons-Regular.703cf8f2.woff2" type="font/woff2" crossorigin="anonymous"/>
<title>Ordbøkene.no - Bokmålsordboka og Nynorskordboka</title>
</head>
<body>
<noscript>
<strong>Slå på JavaScript for å få portalen Ordbøkene til å fungere.</strong>
Bokmålsordboka og Nynorskordboka viser skrivemåte og bøying i tråd med norsk rettskriving. Språkrådet og Universitetet i Bergen står bak ordbøkene.
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
public/logo.png

4.96 KiB

# Disable search engine indexing
User-agent: *
Disallow: /
\ No newline at end of file
<template>
<v-app id="app">
<div v-if="no_locale">
<v-dialog overlay-opacity="1" overlay-color="tertiary" persistent max-width="600px" v-if="!this.$store.state.currentLocale" v-model="no_locale">
<v-card>
<v-toolbar elevation="0" color="primary" text>
<v-toolbar-title class="language-dialog-title">Ordbøkene</v-toolbar-title></v-toolbar>
<v-card-text class="text--primary">
<v-list three-line>
<v-list-item link v-on:click="choose_locale('eng')">
<v-list-item-content>
<v-list-item-title>English</v-list-item-title>
<v-list-item-subtitle>Choose English as display language for headings, buttons and menus</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item link v-on:click="choose_locale('nno')">
<v-list-item-content>
<v-list-item-title>Norsk (nynorsk)</v-list-item-title>
<v-list-item-subtitle>Vis overskrifter, knappar og menyar på nynorsk</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
<v-list-item link v-on:click="choose_locale('nob')">
<v-list-item-content>
<v-list-item-title>Norsk (bokmål)</v-list-item-title>
<v-list-item-subtitle>Vis overskrifter, knapper og menyer på bokmål</v-list-item-subtitle>
</v-list-item-content>
</v-list-item>
</v-list>
</v-card-text>
</v-card>
</v-dialog>
</div>
<router-link ref="skip_link" to="#main" class="skip-link" @click.native="focus_main">{{$t('accessibility.main_content')}}</router-link>
<header>
<div>
<TopBar/>
</header>
<div class = "banner" aria-hidden="true" :class="$vuetify.breakpoint">
<div>
<h1 tabindex="-1"><a :class="$vuetify.breakpoint.name" href="/">Ordbøkene</a></h1>
<p tabindex="-1" class="sub-title"><a href="/">{{$t("sub_title")}}</a></p>
</div>
</div>
<router-view></router-view>
<footer>
<div :class="$vuetify.breakpoint.xs?'sm':'lg'">
<div>
<img id="srlogo" src="./assets/Sprakradet_logo_neg.png" alt="">
</div>
<div>
<img id="uiblogo" src="./assets/uib-logo.svg" alt="">
<div v-if="$route.name!='about'" class = "banner" :class="$vuetify.breakpoint">
<div v-if="show_banner_text">
<a href="/">
<h1 :class="$vuetify.breakpoint.name">Ordbøkene</h1></a>
<p class="sub-title">{{$t("sub_title")}}</p>
</div>
</div>
<router-view ref="router_view"></router-view>
<footer :class="$vuetify.breakpoint.name">
<div id="photo-attribution" aria-hidden="true" v-if="!$route.name && $vuetify.breakpoint.mdAndUp">{{$t('photo')}}</div>
<div class="footer-row">
<div class="logos" :class="$vuetify.breakpoint.xs?'sm':'lg'">
<img id="srlogo" src="./assets/Sprakradet_logo_neg.png" alt="Språkrådet, logo">
<img id="uiblogo" src="./assets/uib-logo.svg" alt="Universitetet i Bergen, logo">
</div>
<div class="footer-text"><em>{{$t('dicts.bm')}}</em>{{$t('and')}}<em>{{$t('dicts.nn')}}</em>{{$t('footer_description')}}
</div>
<div>{{$t('footer_description')}} <a href="mailto:ordbok-beta@uib.no">ordbok-beta@uib.no</a>.</div>
<FooterMenu />
<div></div></div>
<div class="accessibility-declaration"><a href="https://uustatus.no/nb/erklaringer/publisert/b2a6f8d0-3a16-4716-8bc8-46ac3c161935" target="_blank">{{$t('accessibility_statement')}}</a><v-icon color="white" small>open_in_new</v-icon></div>
</footer>
</v-app>
</template>
<script>
import TopBar from './components/TopBar.vue'
import FooterMenu from './components/FooterMenu.vue'
export default {
metaInfo() {
return { htmlAttrs: {lang: {nob: "nb", nno: "nn", eng: "en", ukr: "uk"}[this.$i18n.locale]}}
},
computed: {
no_locale: function() {
return !this.$store.state.locale
show_banner_text: function() {
return !this.$route.name || (window.innerHeight > 800 && this.$route.name != 'about' )
}
},
mounted: function(){
if (!this.no_locale) {
this._i18n.locale = this.$store.state.locale
components: {
TopBar,
FooterMenu
},
data: function() {
return {
contact_dialog: false,
help_dialog: false,
announcement: localStorage.getItem('app_info') == 'false' ? false : true,
announce_test: localStorage.getItem('beta_info') == 'false' ? false : true
}
document.title = 'Ordbøkene - ' + process.env.VUE_APP_VERSION_LABEL
},
methods: {
choose_locale: function(locale) {
this.locale_chosen = true
this.$store.commit("setLocale", {value: locale, i18n: this._i18n})
}
close_announcement: function() {
localStorage.setItem('app_info', 'false')
this.announcement = false
},
components: {
TopBar
close_test_announcement: function() {
localStorage.setItem('beta_info', 'false')
this.announce_test = false
},
focus_main: function() {
this.$refs.router_view.$refs.main.focus();
}
}
}
</script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@font-face {
font-family: NotoParen;
font-style: italic;
src: url('./assets/NotoSansParen.woff') format('woff');
unicode-range: U+28-29;
}
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,400;0,700;1,400;1,700&family=Noto+Sans:ital,wght@0,400;0,700;1,400;1,700&display=swap');
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('./assets/o-0NIpQlx3QUlC5A4PNjXhFVZNyBx2pqPA.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inria Serif';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('./assets/fC1lPYxPY3rXxEndZJAzN3Srdy0.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inria Serif';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url('./assets/fC14PYxPY3rXxEndZJAzN3wQUjjCjl0.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url('./assets/o-0IIpQlx3QUlC5A4PNr5TRA.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Noto Sans';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url('./assets/o-0OIpQlx3QUlC5A4PNr4ARCQ_k.woff2') format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: NotoParen;
font-style: italic;
src: url('./assets/NotoSansParen.woff') format('woff');
unicode-range: U+28-29;
}
#app {
......@@ -104,9 +141,7 @@ import TopBar from './components/TopBar.vue'
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
color: var(--v-text-base);
display: flex;
flex-direction: column;
height: 100%;
background-color: var(--v-tertiary-base)
}
......@@ -114,39 +149,59 @@ html, body {
height: 100%
}
body {
margin: 0px;
main {
flex: 1;
}
h1 {
h1, .article h3 {
font-family: Inria Serif;
padding-left: 15px;
color: var(--v-primary-base)
}
.banner h1 a {
p a, .article a, .search_notification a, .did_you_mean a, .info-card a {
color: var(--v-text-base) !important;
text-decoration: none;
border-bottom: 1px solid var(--v-anchor-base);
}
p a:hover, .article a:hover, .search_notification a:hover, .info-card a:hover {
color: var(--v-anchor-base) !important;
}
a.article_header {
border: none;
}
.banner h1 {
font-size: 48px;
}
h1 > a.xs, h1 > a.sm {
h1.xs, h1.sm {
font-size: 36px;
}
.banner {
margin-top: 48px;
padding-top: 10px;
}
.v-list-item__title {
word-break: break-all;
overflow-wrap: break-word;
}
.banner p {
padding-bottom: 10px;
padding-top: 0;
padding-left: 18px;
}
.banner a {
......@@ -167,16 +222,6 @@ h1 > a.xs, h1 > a.sm {
}
footer {
position: relative;
padding-left: calc((100vw - 1200px) / 2);
padding-right: calc((100vw - 1200px) / 2);
}
footer a {
color: #ffffff !important;
}
.top-bar .v-toolbar__content {
padding-left: calc((100vw - 1200px) / 2) !important;
padding-right: calc((100vw - 1200px) / 2) !important;
......@@ -200,40 +245,71 @@ footer a {
font-size: 18px;
margin: 0px;
margin-bottom: 0px !important;
}
.sub-title a {
.sub-title {
color: var(--v-primary-base) !important;
}
footer a, .notification a {
color: #ffffff !important;
}
footer {
padding-left: calc((100vw - 1200px) / 2);
padding-right: calc((100vw - 1200px) / 2);
font-size: smaller;
display: table;
flex-direction: row;
background-color: var(--v-primary-base);
color: #ffffff;
padding-bottom: 10px;
}
footer > div {
display: table-cell;
vertical-align: middle;
.logos {
display: flex;
align-items: center;
flex-direction: row !important;
gap: 10px;
padding: 10px;
padding-left: 24px;
}
footer > div.lg > div {
padding: 0;
display: table-cell;
vertical-align: middle;
padding: 10px;
.accessibility-declaration {
text-align: center;
padding-top: 10px;
}
footer > div.sm > div {
vertical-align: middle;
text-align: center;
padding: 10px;
.footer-row {
display: flex;
flex-direction: rows;
align-content: center;
align-items:center;
padding-top: 24px;
gap: 10px;
}
footer.sm .footer-row, footer.xs .footer-row{
display: flex;
flex-direction: column;
padding-left: 24px;
gap: 10px;
}
footer.sm div, footer.xs div {
justify-content: center;
justify-items: center;
}
#srlogo {
height: 20px;
}
......@@ -242,12 +318,24 @@ footer > div.sm > div {
height: 60px;
}
/*
.v-btn {
font-weight: bold !important;
}
.article .v-btn:focus, .v-dialog .v-btn:focus {
outline: solid 2px var(--v-primary-base) !important;
}
/* all inflection-table css shoud be moved to beta.ordbok */
.infl-table caption {
position: absolute !important;
height: 1px; width: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
}
td[class="infl-group"] {
background-color: var(--v-button-base) !important;
color: var(--v-text-base) !important;
......@@ -270,7 +358,55 @@ th[class="infl-group"] {
}
.theme--light.v-label, .theme--light.v-subheader, .transparent-text{
color: rgba(0, 0, 0, 0.7)
color: var(--v-text-base)
}
#photo-attribution {
position: absolute;
right: 0px;
width: 100%;
text-align: right;
padding-right: 6px;
padding-top: 1px;
padding-right: 6px;
color: white;
font-size: smaller;
}
.article h5, .about h3 {
color: var(--v-primary-base);
font-size: 14px;
padding-left: 12px;
padding-top: 6px;
}
.article h4, .monthly-title h2, .about h2, .v-dialog h2 {
font-size: 1.17em;
color: var(--v-primary-base);
font-variant: all-small-caps;
}
.skip-link {
position: absolute;
top: -10
}
.skip-link:focus {
position: unset;
top: unset;
text-align: center;
padding: 10px;
width: 100%;
color: white;
background-color: var(--v-secondary-base)
}
.v-alert {
border-radius: 0px !important;
}
</style>