Compare commits

...

11 Commits

32 changed files with 950 additions and 83 deletions

View File

@ -0,0 +1,2 @@
[PHP]
xdebug.client_port=9000

View File

@ -5,11 +5,10 @@ session:
url:
source: path_prefix
prefixes:
en: ''
en: en
sl: sl
hr: hr
sr: sr
'': null
domains:
en: ''
sl: ''

View File

@ -1,3 +1,21 @@
<script setup="setup">
const { $i18n } = useNuxtApp()
const nastavitveStore = useNastavitveStore()
const { izbraniJezik } = storeToRefs(nastavitveStore)
// Nastavi locale ko se jezik spremeni
watch(izbraniJezik, jezik => {
$i18n.setLocale(jezik)
})
// V store nastavi prvotno stanje
nastavitveStore.izberiJezik($i18n.locale.value)
</script>
<template>
<section class="yufu">
<Glava />
@ -48,6 +66,7 @@
}
a.gumb {
text-transform: uppercase;
text-decoration: underline;
font-size: 3rem;
position: relative;

View File

@ -3,7 +3,8 @@
const route = useRoute()
const pot = computed(() => route.path)
const naManifestu = computed(() => route.path.indexOf('/manifest') === 0)
const naManifestu = computed(() => route.name.indexOf('manifest') === 0
|| route.name.indexOf('pojem') === 0)
const { baseUrl } = useRuntimeConfig().public
@ -13,15 +14,20 @@ const { baseUrl } = useRuntimeConfig().public
<section class="glava" :class="{ manifest: naManifestu }">
<ul class="meni">
<li>
<NuxtLink to="/">
Domov
<NuxtLink :to="localePath('index')">
{{ $t('domov') }}
</NuxtLink>
</li>
<li>
<NuxtLink to="/manifest">
Manifest
<NuxtLink :to="localePath('manifest')">
{{ $t('manifest') }}
</NuxtLink>
</li>
<li>
<a @click.prevent>
<IzborJezika />
</a>
</li>
<li>
<NuxtLink :to="baseUrl + '/user'" class="posivljen" target="_blank">
admin
@ -31,8 +37,8 @@ const { baseUrl } = useRuntimeConfig().public
<img src="/images/zvezda.png">
<h1 v-if="naManifestu">MANIFEST</h1>
<h1 v-else>JUGOFUTURIZEM</h1>
<h1 v-if="naManifestu">{{ $t('manifest') }}</h1>
<h1 v-else>{{ $t('jugofuturizem') }}</h1>
</section>
</template>
@ -53,6 +59,7 @@ h1 {
font-family: Trailers;
font-size: 16rem;
z-index: 50;
text-transform: uppercase;
}
@media screen and (max-width: 1090px) {
@ -84,8 +91,6 @@ img {
}
}
.meni {
position: absolute;
top: 0;

View File

@ -0,0 +1,52 @@
<script setup="setup">
const store = useNastavitveStore()
const izbraniJezik = computed(() => store.izbraniJezik)
const kodeJezikov = computed(() => Object.keys(store.mozniJeziki))
const kodeDrugihJezikov = computed(() => kodeJezikov.value.filter(
(jezik) => jezik !== store.izbraniJezik
))
const slikaJezika = (jezik) => `/images/jezik_${jezik}.png`
console.log('izbrani jezik!', izbraniJezik.value)
const izbor = ref(false)
</script>
<template>
<div class="izbor">
<div class="jezik" @click="izbor = !izbor">
<img :src="slikaJezika(izbraniJezik)" /> {{ store.mozniJeziki[izbraniJezik] }}
</div>
<div class="drugiJeziki" v-if="izbor">
<div class="jezik" v-for="jezik in kodeDrugihJezikov" @click="() => { store.izberiJezik(jezik); izbor = false }">
<img :src="slikaJezika(jezik)" /> {{ store.mozniJeziki[jezik] }}
</div>
</div>
</div>
</template>
<style>
.izbor {
width: 10rem;
cursor: pointer;
}
.jezik {
display: flex;
align-items: center;
}
.drugiJeziki > div {
margin-top: 5px;
}
img {
margin-right: 5px;
}
</style>

View File

@ -6,16 +6,23 @@ const { etherFetch } = useEtherpadApi()
const { poskrolaj } = useUi()
const store = usePojmiStore()
const nastavitveStore = useNastavitveStore()
const route = useRoute()
const { izbraniJezik } = storeToRefs(nastavitveStore)
const props = defineProps({
naslov: String
})
if (props.naslov && !(props.naslov in store.pojmi)) {
await store.naloziPojme()
await store.naloziPojme(izbraniJezik.value)
}
watch(izbraniJezik, jezik => {
store.naloziPojme(jezik)
})
const pojem = computed(() => store.pojmi[props.naslov])
const revisionId = computed(() => pojem.value ? pojem.value.id : null)
@ -58,7 +65,7 @@ onUpdated(() => {
<template>
<section ref="container">
<div v-if="!urejanje" class="gumb" @click="urediPojem">Uredi</div>
<div v-if="!urejanje" class="gumb" @click="urediPojem">{{ $t('Uredi')}}</div>
<div v-if="pojem" class="pojem">
<h2>{{ naslov }}</h2>
<div class="tekst" v-html="pojem.tekst" />

View File

@ -45,13 +45,14 @@ const oddajPredlog = async data => {
// @TODO tole raje v pojmi.vue oz nov_pojem.vue - page!
const etherNalozen = ev => {
if (props.pojem.nov) {
navigateTo('/manifest/dodaj/' + props.revisionId, {
navigateTo(localePath({ name: 'pojem_dodaj', params: { guid: revisionId }}), {
replace: true
})
} else {
navigateTo('/manifest/' + encodeURIComponent(props.pojem.naslov) + '/uredi/' + props.revisionId, {
replace: true
})
navigateTo(localePath({ name: 'pojem_uredi', params: {
naslov: encodeURIComponent(props.pojem.naslov),
guid: props.revisionId
}}), { replace: true })
}
//window.location.hash = props.revisionId
}
@ -60,17 +61,17 @@ const etherNalozen = ev => {
<template>
<form class="pojem" @submit.prevent>
<input name="naslov" type="text" placeholder="Naslov" v-model="naslov">
<input name="naslov" type="text" placeholder="Naslov" v-model="naslov" @keydown.enter.prevent>
<EtherpadTextarea :onLoad="etherNalozen" :revisionId="props.revisionId" />
<input name="email" type="email" placeholder="E-poštni naslov" v-model="email">
<input name="email" type="email" placeholder="E-poštni naslov" v-model="email" @keydown.enter="oddajPredlog">
<div class="gumbi">
<button class="gumb" @click="props.onZapri">
{{ props.zapriLabel ?? 'Zapri' }}
{{ props.zapriLabel ?? $t('Zapri') }}
</button>
<button class="gumb oddaj" @click="oddajPredlog">
Predlagaj
{{ $t("Predlagaj") }}
</button>
</div>

View File

@ -1,9 +1,18 @@
import jsonapi from 'jsonapi-serializer'
function idmap(arr, idattr = 'id') {
if (!arr) { return {} }
return arr.reduce((vse, i) => {
const id = i[idattr]
vse[id] = i
return vse
}, {})
}
export const useApi = () => {
const { baseUrl, jsonapiPath } = useRuntimeConfig().public
const apiBaseUrl = `${baseUrl}${jsonapiPath}`
const headers = {
'Content-Type': 'application/vnd.api+json'
}
@ -16,20 +25,18 @@ export const useApi = () => {
return idmap(ds.map(mapfun), idAttr)
}
const jsonApiUrl = jezik => {
if (!jezik) {
jezik = 'sl'
}
return `${baseUrl}/${jezik}${jsonapiPath}`
}
return {
baseUrl: baseUrl,
jsonApiUrl: apiBaseUrl,
jsonApiUrl,
headers,
deserialize
}
}
export const idmap = (arr, idattr = 'id') => {
if (!arr) { return {} }
return arr.reduce((vse, i) => {
const id = i[idattr]
vse[id] = i
return vse
}, {})
}

View File

@ -3,7 +3,6 @@
export const useUi = () => ({
poskrolaj: (sekcija, timeout = 50) => {
setTimeout(() => {
console.log('UI SKROL!', sekcija)
if (sekcija && sekcija.scrollIntoView) {
sekcija.scrollIntoView({ behavior: 'smooth' })
}

11
nuxt/lang/en.json 100644
View File

@ -0,0 +1,11 @@
{
"domov": "home",
"jugofuturizem": "yugofuturism",
"manifest": "manifesto",
"Nazaj": "Back",
"Vsak lahko prispeva k vsebinam manifesta. Predlaga lahko nov pojem ali ureja, dopolni ali predela obstoječe.": "Anyone can add content to the manifesto. You can suggest a new concept or edit, amend or adjust an existing one.",
"Dodaj nov pojem": "Add new concept",
"Uredi": "Edit",
"Predlagaj": "Suggest",
"Zapri": "Close"
}

View File

@ -0,0 +1,9 @@
{
"domov": "naslovnica",
"jugofuturizem": "jugofuturizam",
"Nazaj": "Nazad",
"Vsak lahko prispeva k vsebinam manifesta. Predlaga lahko nov pojem ali ureja, dopolni ali predela obstoječe.": "Svatko može pridonijeti sadržaju manifesta. Predložiti može novi koncept ili urediti, dopuniti ili revidirati postojeće koncepte.",
"Dodaj nov pojem": "Dodajte novi koncept",
"Zapri": "Zatvori",
"Predlagaj": "Predloži"
}

View File

@ -0,0 +1,3 @@
{
"jugofuturizem": "jugofuturizem"
}

View File

@ -0,0 +1,21 @@
import { defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
setup(moduleOptions, nuxt) {
nuxt.hook('pages:extend', pages => {
pages.push({
name: 'pojem_poglej',
path: '/manifest/:naslov',
file: '~/pages/manifest/pojem.vue'
}, {
name: 'pojem_uredi',
path: '/manifest/:naslov/uredi/:guid',
file: '~/pages/manifest/pojem.vue'
}, {
name: 'pojem_dodaj',
path: '/manifest/dodaj/:guid',
file: '~/pages/manifest/dodaj.vue'
})
})
}
})

View File

@ -19,7 +19,9 @@ export default defineNuxtConfig({
dirs: ['stores']
},
modules: [
['@pinia/nuxt', { autoImports: ['defineStore', 'acceptHMRUpdate']}]
['@pinia/nuxt', { autoImports: ['defineStore', 'acceptHMRUpdate']}],
'./modules/yufu-strani/module',
'@nuxtjs/i18n'
//'nuxt-proxy'
],
proxy: {
@ -38,21 +40,19 @@ export default defineNuxtConfig({
etherpadPrefix: process.env.ETHERPAD_PREFIX
}
},
hooks: {
'pages:extend' (pages) {
pages.push({
name: 'poglej_pojem',
path: '/manifest/:naslov',
file: '~/pages/manifest/pojem.vue'
}, {
name: 'uredi_pojem',
path: '/manifest/:naslov/uredi/:guid',
file: '~/pages/manifest/pojem.vue'
}, {
name: 'nov_pojem_guid',
path: '/manifest/dodaj/:guid',
file: '~/pages/manifest/dodaj.vue'
})
}
i18n: {
locales: [{
code: 'sl',
file: 'sl.json'
}, {
code: 'en',
file: 'en.json'
}, {
code: 'hr',
file: 'hr.json'
}],
langDir: 'lang',
defaultLocale: 'sl',
fallbackLocale: 'sl'
}
})

703
nuxt/package-lock.json generated
View File

@ -15,6 +15,7 @@
"devDependencies": {
"@nuxtjs/eslint-config": "^6.0.1",
"@nuxtjs/eslint-module": "^3.0.2",
"@nuxtjs/i18n": "^8.0.0",
"@pinia/nuxt": "^0.5.1",
"nuxt": "^3.8.2"
}
@ -1135,6 +1136,186 @@
"dev": true,
"peer": true
},
"node_modules/@intlify/bundle-utils": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/@intlify/bundle-utils/-/bundle-utils-7.5.1.tgz",
"integrity": "sha512-UovJl10oBIlmYEcWw+VIHdKY5Uv5sdPG0b/b6bOYxGLln3UwB75+2dlc0F3Fsa0RhoznQ5Rp589/BZpABpE4Xw==",
"dev": true,
"dependencies": {
"@intlify/message-compiler": "^9.4.0",
"@intlify/shared": "^9.4.0",
"acorn": "^8.8.2",
"escodegen": "^2.1.0",
"estree-walker": "^2.0.2",
"jsonc-eslint-parser": "^2.3.0",
"magic-string": "^0.30.0",
"mlly": "^1.2.0",
"source-map-js": "^1.0.1",
"yaml-eslint-parser": "^1.2.2"
},
"engines": {
"node": ">= 14.16"
},
"peerDependenciesMeta": {
"petite-vue-i18n": {
"optional": true
},
"vue-i18n": {
"optional": true
}
}
},
"node_modules/@intlify/bundle-utils/node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"dev": true
},
"node_modules/@intlify/core": {
"version": "9.10.2",
"resolved": "https://registry.npmjs.org/@intlify/core/-/core-9.10.2.tgz",
"integrity": "sha512-t/RVemtM3bTE/wa7zqR+zkumy4dda5skVhxAh+3oYbOyJRw1y3B0FWiuB2Awa1HgoYC0DuPYrsAsQoeLy2eQPQ==",
"dev": true,
"dependencies": {
"@intlify/core-base": "9.10.2",
"@intlify/shared": "9.10.2"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/core-base": {
"version": "9.10.2",
"resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.10.2.tgz",
"integrity": "sha512-HGStVnKobsJL0DoYIyRCGXBH63DMQqEZxDUGrkNI05FuTcruYUtOAxyL3zoAZu/uDGO6mcUvm3VXBaHG2GdZCg==",
"dev": true,
"dependencies": {
"@intlify/message-compiler": "9.10.2",
"@intlify/shared": "9.10.2"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/h3": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/@intlify/h3/-/h3-0.5.0.tgz",
"integrity": "sha512-cgfrtD3qu3BPJ47gfZ35J2LJpI64Riic0K8NGgid5ilyPXRQTNY7mXlT/B+HZYQg1hmBxKa5G5HJXyAZ4R2H5A==",
"dev": true,
"dependencies": {
"@intlify/core": "^9.8.0",
"@intlify/utils": "^0.12.0"
},
"engines": {
"node": ">= 18"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/message-compiler": {
"version": "9.10.2",
"resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.10.2.tgz",
"integrity": "sha512-ntY/kfBwQRtX5Zh6wL8cSATujPzWW2ZQd1QwKyWwAy5fMqJyyixHMeovN4fmEyCqSu+hFfYOE63nU94evsy4YA==",
"dev": true,
"dependencies": {
"@intlify/shared": "9.10.2",
"source-map-js": "^1.0.2"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/shared": {
"version": "9.10.2",
"resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.10.2.tgz",
"integrity": "sha512-ttHCAJkRy7R5W2S9RVnN9KYQYPIpV2+GiS79T4EE37nrPyH6/1SrOh3bmdCRC1T3ocL8qCDx7x2lBJ0xaITU7Q==",
"dev": true,
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/unplugin-vue-i18n": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-2.0.0.tgz",
"integrity": "sha512-1oKvm92L9l2od2H9wKx2ZvR4tzn7gUtd7bPLI7AWUmm7U9H1iEypndt5d985ypxGsEs0gToDaKTrytbBIJwwSg==",
"dev": true,
"dependencies": {
"@intlify/bundle-utils": "^7.4.0",
"@intlify/shared": "^9.4.0",
"@rollup/pluginutils": "^5.0.2",
"@vue/compiler-sfc": "^3.2.47",
"debug": "^4.3.3",
"fast-glob": "^3.2.12",
"js-yaml": "^4.1.0",
"json5": "^2.2.3",
"pathe": "^1.0.0",
"picocolors": "^1.0.0",
"source-map-js": "^1.0.2",
"unplugin": "^1.1.0"
},
"engines": {
"node": ">= 14.16"
},
"peerDependencies": {
"petite-vue-i18n": "*",
"vue-i18n": "*",
"vue-i18n-bridge": "*"
},
"peerDependenciesMeta": {
"petite-vue-i18n": {
"optional": true
},
"vue-i18n": {
"optional": true
},
"vue-i18n-bridge": {
"optional": true
}
}
},
"node_modules/@intlify/unplugin-vue-i18n/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/@intlify/unplugin-vue-i18n/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/@intlify/utils": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@intlify/utils/-/utils-0.12.0.tgz",
"integrity": "sha512-yCBNcuZQ49iInqmWC2xfW0rgEQyNtCM8C8KcWKTXxyscgUE1+48gjLgZZqP75MjhlApxwph7ZMWLqyABkSgxQA==",
"dev": true,
"engines": {
"node": ">= 18"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@ioredis/commands": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz",
@ -1258,9 +1439,9 @@
}
},
"node_modules/@jridgewell/set-array": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
"engines": {
"node": ">=6.0.0"
}
@ -1295,12 +1476,12 @@
"integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.17",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
"integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
"version": "0.3.25",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
"dependencies": {
"@jridgewell/resolve-uri": "3.1.0",
"@jridgewell/sourcemap-codec": "1.4.14"
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
}
},
"node_modules/@kwsites/file-exists": {
@ -1363,6 +1544,19 @@
"node": ">= 6"
}
},
"node_modules/@miyaneee/rollup-plugin-json5": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@miyaneee/rollup-plugin-json5/-/rollup-plugin-json5-1.2.0.tgz",
"integrity": "sha512-JjTIaXZp9WzhUHpElrqPnl1AzBi/rvRs065F71+aTmlqvTMVkdbjZ8vfFl4nRlgJy+TPBw69ZK4pwFdmOAt4aA==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.1.0",
"json5": "^2.2.3"
},
"peerDependencies": {
"rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
}
},
"node_modules/@netlify/functions": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-2.4.0.tgz",
@ -2575,6 +2769,172 @@
"eslint": ">=7"
}
},
"node_modules/@nuxtjs/i18n": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/@nuxtjs/i18n/-/i18n-8.0.0.tgz",
"integrity": "sha512-h436bYKJ9a8NpLoY5kc5QyM6WTsuFU2IGtSErm+iRgWBinguLg/gp0cvgji35WgVlRUAhocYkxOqTSpZiUZyYA==",
"dev": true,
"dependencies": {
"@intlify/h3": "^0.5.0",
"@intlify/shared": "^9.8.0",
"@intlify/unplugin-vue-i18n": "^2.0.0",
"@intlify/utils": "^0.12.0",
"@miyaneee/rollup-plugin-json5": "^1.1.2",
"@nuxt/kit": "^3.7.4",
"@rollup/plugin-yaml": "^4.1.2",
"@vue/compiler-sfc": "^3.3.4",
"debug": "^4.3.4",
"defu": "^6.1.2",
"estree-walker": "^3.0.3",
"is-https": "^4.0.0",
"knitwork": "^1.0.0",
"magic-string": "^0.30.4",
"mlly": "^1.4.2",
"pathe": "^1.1.1",
"sucrase": "^3.34.0",
"ufo": "^1.3.1",
"unplugin": "^1.5.0",
"vue-i18n": "^9.8.0",
"vue-i18n-routing": "^1.2.0"
},
"engines": {
"node": "^14.16.0 || >=16.11.0"
}
},
"node_modules/@nuxtjs/i18n/node_modules/@intlify/vue-i18n-bridge": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@intlify/vue-i18n-bridge/-/vue-i18n-bridge-1.1.0.tgz",
"integrity": "sha512-yBwGpr70Rc56pjsPdtvNRi/ju0P9h3670EkCOuxAzKKR5OH61uF9LprLUGmph/Uy2TXBO2DKqpnJBFXyXJQKeg==",
"dev": true,
"hasInstallScript": true,
"bin": {
"vue-i18n-fix": "bin/fix.js",
"vue-i18n-switch": "bin/switch.js"
},
"engines": {
"node": ">= 12"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue-i18n": "^8.26.1 || >=9.2.0",
"vue-i18n-bridge": ">=9.2.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue-i18n": {
"optional": true
},
"vue-i18n-bridge": {
"optional": true
}
}
},
"node_modules/@nuxtjs/i18n/node_modules/@intlify/vue-router-bridge": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@intlify/vue-router-bridge/-/vue-router-bridge-1.1.0.tgz",
"integrity": "sha512-EX+KndT9VS3muMdZWFmc99D8nUaWTOXr322a8zNf5HnMCbpbogdifWYW8hat+nVE73St/gcDbPz6u5smVUPoQg==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
"vue-demi": ">=0.13.5 < 1.0.0"
},
"bin": {
"vue-router-fix": "bin/fix.js",
"vue-router-switch": "bin/switch.js"
},
"engines": {
"node": ">= 12"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue-router": "^4.0.0-0 || ^3.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue-router": {
"optional": true
}
}
},
"node_modules/@nuxtjs/i18n/node_modules/vue-demi": {
"version": "0.14.7",
"resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz",
"integrity": "sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==",
"dev": true,
"hasInstallScript": true,
"bin": {
"vue-demi-fix": "bin/vue-demi-fix.js",
"vue-demi-switch": "bin/vue-demi-switch.js"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/antfu"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^3.0.0-0 || ^2.6.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
}
}
},
"node_modules/@nuxtjs/i18n/node_modules/vue-i18n-routing": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/vue-i18n-routing/-/vue-i18n-routing-1.2.0.tgz",
"integrity": "sha512-pn+bIFRMX5BN1BVQJ5rn05dYVnBhU/QnkxhjEJAe9HnYtJhDubetvoY+yfgDNWwesNWfHbbvsilsgSGL6DJyeA==",
"dev": true,
"dependencies": {
"@intlify/shared": "^9.4.1",
"@intlify/vue-i18n-bridge": "^1.1.0",
"@intlify/vue-router-bridge": "^1.1.0",
"ufo": "^1.2.0",
"vue-demi": ">=0.13.5 < 1.0.0"
},
"engines": {
"node": ">= 14.6"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"@vue/composition-api": "^1.0.0-rc.1",
"vue": "^2.6.14 || ^2.7.0 || ^3.2.0",
"vue-i18n": "^8.26.1 || >=9.2.0",
"vue-i18n-bridge": ">=9.2.0",
"vue-router": "^3.5.3 || ^3.6.0 || ^4.0.0"
},
"peerDependenciesMeta": {
"@vue/composition-api": {
"optional": true
},
"vue": {
"optional": true
},
"vue-i18n": {
"optional": true
},
"vue-i18n-bridge": {
"optional": true
},
"vue-router": {
"optional": true
}
}
},
"node_modules/@nuxtjs/proxy": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@nuxtjs/proxy/-/proxy-2.1.0.tgz",
@ -3112,6 +3472,46 @@
}
}
},
"node_modules/@rollup/plugin-yaml": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/@rollup/plugin-yaml/-/plugin-yaml-4.1.2.tgz",
"integrity": "sha512-RpupciIeZMUqhgFE97ba0s98mOFS7CWzN3EJNhJkqSv9XLlWYtwVdtE6cDw6ASOF/sZVFS7kRJXftaqM2Vakdw==",
"dev": true,
"dependencies": {
"@rollup/pluginutils": "^5.0.1",
"js-yaml": "^4.1.0",
"tosource": "^2.0.0-alpha.3"
},
"engines": {
"node": ">=14.0.0"
},
"peerDependencies": {
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
},
"peerDependenciesMeta": {
"rollup": {
"optional": true
}
}
},
"node_modules/@rollup/plugin-yaml/node_modules/argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
"node_modules/@rollup/plugin-yaml/node_modules/js-yaml": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
"dev": true,
"dependencies": {
"argparse": "^2.0.1"
},
"bin": {
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/@rollup/pluginutils": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
@ -4320,6 +4720,12 @@
"node": ">=4"
}
},
"node_modules/any-promise": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
"dev": true
},
"node_modules/anymatch": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
@ -6386,6 +6792,46 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/escodegen": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
"integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
"dev": true,
"dependencies": {
"esprima": "^4.0.1",
"estraverse": "^5.2.0",
"esutils": "^2.0.2"
},
"bin": {
"escodegen": "bin/escodegen.js",
"esgenerate": "bin/esgenerate.js"
},
"engines": {
"node": ">=6.0"
},
"optionalDependencies": {
"source-map": "~0.6.1"
}
},
"node_modules/escodegen/node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/escodegen/node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"optional": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/eslint": {
"version": "7.32.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
@ -7230,7 +7676,6 @@
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
"dev": true,
"peer": true,
"bin": {
"esparse": "bin/esparse.js",
"esvalidate": "bin/esvalidate.js"
@ -8631,6 +9076,12 @@
"node": ">=0.10.0"
}
},
"node_modules/is-https": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/is-https/-/is-https-4.0.0.tgz",
"integrity": "sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg==",
"dev": true
},
"node_modules/is-inside-container": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz",
@ -9054,6 +9505,53 @@
"node": ">=0.12"
}
},
"node_modules/jsonc-eslint-parser": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz",
"integrity": "sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==",
"dev": true,
"dependencies": {
"acorn": "^8.5.0",
"eslint-visitor-keys": "^3.0.0",
"espree": "^9.0.0",
"semver": "^7.3.5"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
}
},
"node_modules/jsonc-eslint-parser/node_modules/eslint-visitor-keys": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/jsonc-eslint-parser/node_modules/espree": {
"version": "9.6.1",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
"eslint-visitor-keys": "^3.4.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/jsonc-parser": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
@ -9839,6 +10337,17 @@
"integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==",
"dev": true
},
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dev": true,
"dependencies": {
"any-promise": "^1.0.0",
"object-assign": "^4.0.1",
"thenify-all": "^1.0.0"
}
},
"node_modules/nanoid": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz",
@ -11325,6 +11834,15 @@
}
}
},
"node_modules/pirates": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
"integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true,
"engines": {
"node": ">= 6"
}
},
"node_modules/pkg-types": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz",
@ -13387,6 +13905,88 @@
"postcss": "^8.2.15"
}
},
"node_modules/sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
"integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
"dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0",
"glob": "^10.3.10",
"lines-and-columns": "^1.1.6",
"mz": "^2.7.0",
"pirates": "^4.0.1",
"ts-interface-checker": "^0.1.9"
},
"bin": {
"sucrase": "bin/sucrase",
"sucrase-node": "bin/sucrase-node"
},
"engines": {
"node": ">=16 || 14 >=14.17"
}
},
"node_modules/sucrase/node_modules/@jridgewell/gen-mapping": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
"@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/sucrase/node_modules/commander": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"dev": true,
"engines": {
"node": ">= 6"
}
},
"node_modules/sucrase/node_modules/glob": {
"version": "10.3.10",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
"integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
"dev": true,
"dependencies": {
"foreground-child": "^3.1.0",
"jackspeak": "^2.3.5",
"minimatch": "^9.0.1",
"minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
"path-scurry": "^1.10.1"
},
"bin": {
"glob": "dist/esm/bin.mjs"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/sucrase/node_modules/minimatch": {
"version": "9.0.3",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=16 || 14 >=14.17"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@ -13619,6 +14219,27 @@
"dev": true,
"peer": true
},
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dev": true,
"dependencies": {
"any-promise": "^1.0.0"
}
},
"node_modules/thenify-all": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dev": true,
"dependencies": {
"thenify": ">= 3.1.0 < 4"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/tiny-invariant": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz",
@ -13663,6 +14284,15 @@
"node": ">=0.6"
}
},
"node_modules/tosource": {
"version": "2.0.0-alpha.3",
"resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz",
"integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==",
"dev": true,
"engines": {
"node": ">=10"
}
},
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
@ -13678,6 +14308,12 @@
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"dev": true
},
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
"dev": true
},
"node_modules/tsconfig-paths": {
"version": "3.14.2",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
@ -15197,6 +15833,26 @@
"semver": "bin/semver.js"
}
},
"node_modules/vue-i18n": {
"version": "9.10.2",
"resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.10.2.tgz",
"integrity": "sha512-ECJ8RIFd+3c1d3m1pctQ6ywG5Yj8Efy1oYoAKQ9neRdkLbuKLVeW4gaY5HPkD/9ssf1pOnUrmIFjx2/gkGxmEw==",
"dev": true,
"dependencies": {
"@intlify/core-base": "9.10.2",
"@intlify/shared": "9.10.2",
"@vue/devtools-api": "^6.5.0"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/vue-router": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.5.tgz",
@ -15531,6 +16187,35 @@
"node": ">= 14"
}
},
"node_modules/yaml-eslint-parser": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz",
"integrity": "sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==",
"dev": true,
"dependencies": {
"eslint-visitor-keys": "^3.0.0",
"lodash": "^4.17.21",
"yaml": "^2.0.0"
},
"engines": {
"node": "^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://github.com/sponsors/ota-meshi"
}
},
"node_modules/yaml-eslint-parser/node_modules/eslint-visitor-keys": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/yargs": {
"version": "17.7.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",

View File

@ -11,6 +11,7 @@
"devDependencies": {
"@nuxtjs/eslint-config": "^6.0.1",
"@nuxtjs/eslint-module": "^3.0.2",
"@nuxtjs/i18n": "^8.0.0",
"@pinia/nuxt": "^0.5.1",
"nuxt": "^3.8.2"
},

View File

@ -1,12 +1,20 @@
<script setup="setup">
const store = useStraniStore()
const nastavitveStore = useNastavitveStore()
const { izbraniJezik } = storeToRefs(nastavitveStore)
const stran = computed(() => store.strani['YuFu'])
useHead({meta: [{title: "jugofuturizem"}]})
await store.naloziStrani()
</script>
await store.naloziStrani(izbraniJezik.value)
watch(izbraniJezik, jezik => {
store.naloziStrani(jezik)
})
</script>
<template>
<section class="stran" v-html="stran.tekst" />
<section v-if="stran" class="stran" v-html="stran.tekst" />
</template>

View File

@ -3,6 +3,7 @@
const { getRandomUUID } = useCrypto()
const { etherFetch } = useEtherpadApi()
const { poskrolaj } = useUi()
const localePath = useLocalePath()
const route = useRoute()
@ -18,7 +19,7 @@ const resp = await etherFetch('/createPad', {
text: ''
})
const onZapri = () => { navigateTo('/manifest#skrol') }
const onZapri = () => { navigateTo(localePath('manifest') + '#skrol') }
onMounted(() => {
poskrolaj(obrazec.value)
@ -31,7 +32,7 @@ onMounted(() => {
<PojemForm
:pojem="{ nov: true }"
:revisionId="revisionId"
zapriLabel="Nazaj"
:zapriLabel="$t('Nazaj')"
:onZapri="onZapri" />
</section>
</template>

View File

@ -3,6 +3,7 @@
const store = usePojmiStore()
const { poskrolaj } = useUi()
const { getRandomUUID } = useCrypto()
await store.naloziPojme()
@ -17,14 +18,14 @@ onMounted(() => {
</script>
<template>
<h3 class="navodila" ref="navodila">Vsak lahko prispeva k vsebinam manifesta. Predlaga lahko nov pojem ali ureja, dopolni ali predela obstoječe.</h3>
<NuxtLink class="gumb" to="/manifest/dodaj">
Dodaj Nov Pojem
<h3 class="navodila" ref="navodila">{{ $t('Vsak lahko prispeva k vsebinam manifesta. Predlaga lahko nov pojem ali ureja, dopolni ali predela obstoječe.') }}</h3>
<NuxtLink class="gumb" :to="localePath({ name: 'pojem_dodaj', params: { guid: getRandomUUID() }})">
{{ $t('Dodaj nov pojem') }}
</NuxtLink>
<NuxtLink
v-for="pojem in Object.keys(store.pojmi)"
:naslov="pojem"
:to="`/manifest/${encodeURIComponent(pojem)}`"
:to="localePath({ name: 'pojem_poglej', params: { naslov: encodeURIComponent(pojem) }})"
class="okvir">
<h2>{{ pojem }}</h2>
</NuxtLink>

View File

@ -20,11 +20,17 @@ const resp = await $fetch(`${etherpadApiUrl}/createPad?padID=${padId}`)
<Pojem :naslov="naslov" />
</div>
<NuxtLink class="gumb" to="/manifest#skrol">
Manifest
<NuxtLink class="gumb" :to="localePath('manifest') + '#skrol'">
{{ $t('manifest') }}
</NuxtLink>
<br>
<br>
</template>
<style>
a {
text-transform: capitalize;
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 B

View File

@ -0,0 +1,17 @@
export const useNastavitveStore = defineStore('nastavitve', {
state: () => ({
izbraniJezik: 'sl',
mozniJeziki: {
sl: 'Slovensko',
hr: 'Hrvatski',
en: 'English'
}
}),
actions: {
izberiJezik(jezik) {
if (Object.keys(this.mozniJeziki).indexOf(jezik) >= 0) {
this.izbraniJezik = jezik
}
}
}
})

View File

@ -3,10 +3,10 @@ export const usePojmiStore = defineStore('pojmi', {
pojmi: {}
}),
actions: {
async naloziPojme() {
async naloziPojme(jezik) {
const { jsonApiUrl, headers, deserialize } = useApi()
const data = await $fetch(`${jsonApiUrl}/node/concept?sort=-changed`, { headers })
const data = await $fetch(`${jsonApiUrl(jezik)}/node/concept?sort=-changed`, { headers })
this.pojmi = await deserialize(data, s => ({
id: s.id,
naslov: s.title,

View File

@ -3,10 +3,10 @@ export const useStraniStore = defineStore('strani', {
strani: {}
}),
actions: {
async naloziStrani () {
async naloziStrani (jezik) {
const { jsonApiUrl, headers, deserialize } = useApi()
const data = await $fetch(`${jsonApiUrl}/node/page`, { headers })
const data = await $fetch(`${jsonApiUrl(jezik)}/node/page`, { headers })
this.strani = await deserialize(data, s => ({
id: s.id,
naslov: s.title,

View File

@ -91,11 +91,11 @@ class AddConcept extends ResourceBase {
}
/**
* Ustvari nov koncept.
* Ustvari nov ali uredi obstoječ koncept.
*
* Logika:
* 1. Zloadamo uporabnika preko emaila, ce ne obstaja, ga ustvarimo.
* 2. Zloadamo koncept prek uuid, ce ne obstaja, da ustvarimo.
* 2. Zloadamo koncept prek uuid, ce ne obstaja, ga ustvarimo.
* - avtor je zloadan prek maila
*
* @param \Symfony\Component\HttpFoundation\Request;
@ -118,14 +118,21 @@ class AddConcept extends ResourceBase {
throw new MissingDataException('Title, uuid or text missing.');
}
$uid = $this->getUserIdByEmail($data['email'] ?? null);
// @TODO - loudaj zadnjo revizijo in primerjaj z entiteto, je
// razlika?
// Kako dodati revizijo, ki je draft?
if ($concept = $this->getConceptFromUuid($data['uuid'])) {
// Concept exists - create a new revision.
$oldConcept = clone $concept;
$concept->setNewRevision(TRUE);
$concept->setRevisionUserId($uid);
$concept->set('title', $data['title']);
$concept->set('body', $data['text'] ?? $concept->body->value);
$concept->isDefaultRevision(FALSE);
$concept->setRevisionUserId($uid);
//$concept->isDefaultRevision(TRUE);
$concept->setRevisionLogMessage('New revision by concept endpoint.');
//$concept->setRevisionCreationTime(REQUEST_TIME);
$concept->setPublished(FALSE);
$concept->moderation_state->target_id = 'draft';
$concept->save();
$this->logger->notice('New concept @title revision @revid created by uid @uid.', [
@ -133,8 +140,12 @@ class AddConcept extends ResourceBase {
'@revid' => $concept->getRevisionId(),
'@uid' => $uid,
]);
}
else {
/*
$oldConcept->isDefaultRevision(TRUE);
$oldConcept->save();
*/
} else {
// Concept does not exist - create a new node.
$concept = [
'type' => 'concept',

View File

@ -206,14 +206,16 @@ parameters:
# for more information about the topic in general.
# Note: By default the configuration is disabled.
cors.config:
enabled: true
enabled: false
# Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: []
# Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: []
# Configure requests allowed from specific origins. Do not include trailing
# slashes with URLs.
allowedOrigins: ['yufu.kompot.si', 'localhost']
allowedOrigins: ['*']
# Configure requests allowed from origins, matching against regex patterns.
allowedOriginsPatterns: []
# Sets the Access-Control-Expose-Headers header.
exposedHeaders: false
# Sets the Access-Control-Max-Age header.