Merge branch 'master' into mail-obvescanje

pull/42/head
Lio Novelli 2024-03-17 20:41:12 +01:00
commit 25bd29bdc5
52 changed files with 921 additions and 601 deletions

View File

@ -24,6 +24,7 @@
"drupal/core-project-message": "^10.0", "drupal/core-project-message": "^10.0",
"drupal/core-recommended": "^10.0", "drupal/core-recommended": "^10.0",
"drupal/diff": "^1.1", "drupal/diff": "^1.1",
"drupal/core-recommended": "^10.2.4",
"drupal/gin": "^3.0@RC", "drupal/gin": "^3.0@RC",
"drupal/gin_toolbar": "^1.0@RC", "drupal/gin_toolbar": "^1.0@RC",
"drupal/jsonapi_menu_items": "^1.2", "drupal/jsonapi_menu_items": "^1.2",
@ -31,7 +32,7 @@
"drupal/single_content_sync": "^1.3", "drupal/single_content_sync": "^1.3",
"drupal/token": "^1.12", "drupal/token": "^1.12",
"drupal/yaml_content": "^1.0@dev", "drupal/yaml_content": "^1.0@dev",
"drush/drush": "^11.4" "drush/drush": "^12"
}, },
"conflict": { "conflict": {
"drupal/drupal": "*" "drupal/drupal": "*"

1273
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -16,5 +16,6 @@ required: false
translatable: false translatable: false
default_value: { } default_value: { }
default_value_callback: '' default_value_callback: ''
settings: { } settings:
allowed_formats: { }
field_type: text_long field_type: text_long

View File

@ -11,5 +11,6 @@ _core:
default_config_hash: Tdhz-aDHfDoV1Ul9umtItxGTrjkFzoNAkDw8FWXjYA0 default_config_hash: Tdhz-aDHfDoV1Ul9umtItxGTrjkFzoNAkDw8FWXjYA0
id: media.media_library id: media.media_library
label: 'Media library' label: 'Media library'
description: ''
targetEntityType: media targetEntityType: media
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: flXhTcp55yLcyy7ZLOhPGKGZobZQJdkAFVWV3LseiuI default_config_hash: flXhTcp55yLcyy7ZLOhPGKGZobZQJdkAFVWV3LseiuI
id: user.register id: user.register
label: Register label: Register
description: ''
targetEntityType: user targetEntityType: user
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- block - block
id: block.token id: block.token
label: Token label: Token
description: ''
targetEntityType: block targetEntityType: block
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: 4tedlMuvQjDOdvHdw86_e-2Rt78aR7TGFMfOK8Ejppg default_config_hash: 4tedlMuvQjDOdvHdw86_e-2Rt78aR7TGFMfOK8Ejppg
id: block_content.full id: block_content.full
label: Full label: Full
description: ''
targetEntityType: block_content targetEntityType: block_content
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- block_content - block_content
id: block_content.token id: block_content.token
label: Token label: Token
description: ''
targetEntityType: block_content targetEntityType: block_content
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: K7eNlfU7NEUajz01wItywZklr2oaPgL6s1_97fmDXLA default_config_hash: K7eNlfU7NEUajz01wItywZklr2oaPgL6s1_97fmDXLA
id: comment.full id: comment.full
label: 'Full comment' label: 'Full comment'
description: ''
targetEntityType: comment targetEntityType: comment
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- comment - comment
id: comment.token id: comment.token
label: Token label: Token
description: ''
targetEntityType: comment targetEntityType: comment
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- content_moderation - content_moderation
id: content_moderation_state.token id: content_moderation_state.token
label: Token label: Token
description: ''
targetEntityType: content_moderation_state targetEntityType: content_moderation_state
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- file - file
id: file.token id: file.token
label: Token label: Token
description: ''
targetEntityType: file targetEntityType: file
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: 6NBUEuGmlkClK8Fb76tSMMpO2eZ4LWCBdbUk4z7CuP0 default_config_hash: 6NBUEuGmlkClK8Fb76tSMMpO2eZ4LWCBdbUk4z7CuP0
id: media.full id: media.full
label: 'Full content' label: 'Full content'
description: ''
targetEntityType: media targetEntityType: media
cache: true cache: true

View File

@ -11,5 +11,6 @@ _core:
default_config_hash: Tdhz-aDHfDoV1Ul9umtItxGTrjkFzoNAkDw8FWXjYA0 default_config_hash: Tdhz-aDHfDoV1Ul9umtItxGTrjkFzoNAkDw8FWXjYA0
id: media.media_library id: media.media_library
label: 'Media library' label: 'Media library'
description: ''
targetEntityType: media targetEntityType: media
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- media - media
id: media.token id: media.token
label: Token label: Token
description: ''
targetEntityType: media targetEntityType: media
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- menu_link_content - menu_link_content
id: menu_link_content.token id: menu_link_content.token
label: Token label: Token
description: ''
targetEntityType: menu_link_content targetEntityType: menu_link_content
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: ElrtInxGjZd7GaapJ5O9n-ugi2hG2IxFivtgn0tHOsk default_config_hash: ElrtInxGjZd7GaapJ5O9n-ugi2hG2IxFivtgn0tHOsk
id: node.full id: node.full
label: 'Full content' label: 'Full content'
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: vlYzr-rp2f9NMp-Qlr4sFjlqRq-90mco5-afLNGwCrU default_config_hash: vlYzr-rp2f9NMp-Qlr4sFjlqRq-90mco5-afLNGwCrU
id: node.rss id: node.rss
label: RSS label: RSS
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: fVFfJv_GzBRE-wpRHbfD5a3VjnhbEOXG6lvRd3uaccY default_config_hash: fVFfJv_GzBRE-wpRHbfD5a3VjnhbEOXG6lvRd3uaccY
id: node.search_index id: node.search_index
label: 'Search index' label: 'Search index'
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: 6GCOQ-jP2RbdbHA5YWQ6bT8CfGbqrBYKOSC_XY4E3ZM default_config_hash: 6GCOQ-jP2RbdbHA5YWQ6bT8CfGbqrBYKOSC_XY4E3ZM
id: node.search_result id: node.search_result
label: 'Search result highlighting input' label: 'Search result highlighting input'
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4 default_config_hash: Mz9qWr1kUYK0mjRAGDsr5XS6PvtZ24en_7ndt-pyWe4
id: node.teaser id: node.teaser
label: Teaser label: Teaser
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- node - node
id: node.token id: node.token
label: Token label: Token
description: ''
targetEntityType: node targetEntityType: node
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- path_alias - path_alias
id: path_alias.token id: path_alias.token
label: Token label: Token
description: ''
targetEntityType: path_alias targetEntityType: path_alias
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: '-PPKjsNQPvoIDjOuUAvlLocYD976MNjb9Zpgyz5_BWE' default_config_hash: '-PPKjsNQPvoIDjOuUAvlLocYD976MNjb9Zpgyz5_BWE'
id: taxonomy_term.full id: taxonomy_term.full
label: 'Taxonomy term page' label: 'Taxonomy term page'
description: ''
targetEntityType: taxonomy_term targetEntityType: taxonomy_term
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- taxonomy - taxonomy
id: taxonomy_term.token id: taxonomy_term.token
label: Token label: Token
description: ''
targetEntityType: taxonomy_term targetEntityType: taxonomy_term
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: 71CSAr_LNPcgu6D6jI4INl1KATkahmeyUFBETAWya8g default_config_hash: 71CSAr_LNPcgu6D6jI4INl1KATkahmeyUFBETAWya8g
id: user.compact id: user.compact
label: Compact label: Compact
description: ''
targetEntityType: user targetEntityType: user
cache: true cache: true

View File

@ -8,5 +8,6 @@ _core:
default_config_hash: mQIF_foYjmnVSr9MpcD4CTaJE_FpO1AyDd_DskztGhM default_config_hash: mQIF_foYjmnVSr9MpcD4CTaJE_FpO1AyDd_DskztGhM
id: user.full id: user.full
label: 'User account' label: 'User account'
description: ''
targetEntityType: user targetEntityType: user
cache: true cache: true

View File

@ -6,5 +6,6 @@ dependencies:
- user - user
id: user.token id: user.token
label: Token label: Token
description: ''
targetEntityType: user targetEntityType: user
cache: true cache: true

View File

@ -22,4 +22,5 @@ default_value_callback: ''
settings: settings:
display_summary: false display_summary: false
required_summary: false required_summary: false
allowed_formats: { }
field_type: text_with_summary field_type: text_with_summary

View File

@ -19,5 +19,6 @@ required: true
translatable: false translatable: false
default_value: { } default_value: { }
default_value_callback: '' default_value_callback: ''
settings: { } settings:
allowed_formats: { }
field_type: text_long field_type: text_long

View File

@ -22,4 +22,5 @@ default_value_callback: ''
settings: settings:
display_summary: true display_summary: true
required_summary: false required_summary: false
allowed_formats: { }
field_type: text_with_summary field_type: text_with_summary

View File

@ -20,4 +20,5 @@ default_value_callback: ''
settings: settings:
display_summary: true display_summary: true
required_summary: false required_summary: false
allowed_formats: { }
field_type: text_with_summary field_type: text_with_summary

View File

@ -22,4 +22,5 @@ default_value_callback: ''
settings: settings:
display_summary: true display_summary: true
required_summary: false required_summary: false
allowed_formats: { }
field_type: text_with_summary field_type: text_with_summary

View File

@ -0,0 +1,7 @@
filename_sanitization:
transliterate: false
replace_whitespace: false
replace_non_alphanumeric: false
deduplicate_separators: false
lowercase: false
replacement_character: '-'

View File

@ -8,6 +8,12 @@ name: 'Plain text'
format: plain_text format: plain_text
weight: 10 weight: 10
filters: filters:
filter_autop:
id: filter_autop
provider: filter
status: true
weight: 0
settings: { }
filter_html_escape: filter_html_escape:
id: filter_html_escape id: filter_html_escape
provider: filter provider: filter
@ -21,9 +27,3 @@ filters:
weight: 0 weight: 0
settings: settings:
filter_url_length: 72 filter_url_length: 72
filter_autop:
id: filter_autop
provider: filter
status: true
weight: 0
settings: { }

View File

@ -1,6 +1,6 @@
_core: _core:
default_config_hash: PlWtVQXY5oKYZqCMPXh6SPamXagn5BoZqgAI8EY9WsY default_config_hash: PlWtVQXY5oKYZqCMPXh6SPamXagn5BoZqgAI8EY9WsY
icon_base_uri: 'public://media-icons/generic' icon_base_uri: 'public://media-icons/generic'
iframe_domain: '' iframe_domain: null
oembed_providers_url: 'https://oembed.com/providers.json' oembed_providers_url: 'https://oembed.com/providers.json'
standalone_url: false standalone_url: false

View File

@ -2,3 +2,10 @@ _core:
default_config_hash: rYgt7uhPafP2ngaN_ZUPFuyI4KdE0zU868zLNSlzKoE default_config_hash: rYgt7uhPafP2ngaN_ZUPFuyI4KdE0zU868zLNSlzKoE
interface: interface:
default: php_mail default: php_mail
mailer_dsn:
scheme: sendmail
host: default
user: null
password: null
port: null
options: { }

View File

@ -14,4 +14,3 @@ fast_404:
js: js:
preprocess: true preprocess: true
gzip: true gzip: true
stale_file_threshold: 2592000

View File

@ -12,5 +12,5 @@ features:
node_user_picture: false node_user_picture: false
logo: logo:
path: '' path: ''
url: '' url: null
use_default: true use_default: true

View File

@ -4,7 +4,7 @@ check:
disabled_extensions: false disabled_extensions: false
interval_days: 7 interval_days: 7
fetch: fetch:
url: '' url: null
max_attempts: 2 max_attempts: 2
timeout: 30 timeout: 30
notification: notification:

View File

@ -0,0 +1,45 @@
display_extenders: { }
sql_signature: false
ui:
show:
additional_queries: false
advanced_column: false
default_display: false
performance_statistics: false
preview_information: true
sql_query:
enabled: false
where: above
display_embed: false
always_live_preview: true
exposed_filter_any_label: old_any
field_rewrite_elements:
div: DIV
span: SPAN
h1: H1
h2: H2
h3: H3
h4: H4
h5: H5
h6: H6
p: P
header: HEADER
footer: FOOTER
article: ARTICLE
section: SECTION
aside: ASIDE
details: DETAILS
blockquote: BLOCKQUOTE
figure: FIGURE
address: ADDRESS
code: CODE
pre: PRE
var: VAR
samp: SAMP
kbd: KBD
strong: STRONG
em: EM
del: DEL
ins: INS
q: Q
s: S

View File

@ -43,6 +43,9 @@ display:
id: title id: title
table: node_field_data table: node_field_data
field: title field: title
relationship: none
group_type: group
admin_label: ''
entity_type: node entity_type: node
entity_field: title entity_field: title
plugin_id: field plugin_id: field
@ -50,15 +53,57 @@ display:
exclude: false exclude: false
alter: alter:
alter_text: false alter_text: false
text: ''
make_link: false
path: ''
absolute: false
external: false
replace_spaces: false
path_case: none
trim_whitespace: false
alt: ''
rel: ''
link_class: ''
prefix: ''
suffix: ''
target: ''
nl2br: false
max_length: 0
word_boundary: true
ellipsis: true
more_link: false
more_link_text: ''
more_link_path: ''
strip_tags: false
trim: false
preserve_tags: ''
html: false
element_type: ''
element_class: '' element_class: ''
element_label_type: ''
element_label_class: ''
element_label_colon: true
element_wrapper_type: ''
element_wrapper_class: ''
element_default_classes: true element_default_classes: true
empty: '' empty: ''
hide_empty: false hide_empty: false
empty_zero: false empty_zero: false
hide_alter_empty: true hide_alter_empty: true
click_sort_column: value
type: string type: string
settings: settings:
link_to_entity: true link_to_entity: true
group_column: value
group_columns: { }
group_rows: true
delta_limit: 0
delta_offset: 0
delta_reversed: false
delta_first_last: false
multi_type: separator
separator: ', '
field_api_classes: false
type: type:
id: type id: type
table: node_field_data table: node_field_data

View File

@ -915,7 +915,6 @@ display:
default_argument_type: fixed default_argument_type: fixed
default_argument_options: default_argument_options:
argument: '' argument: ''
default_argument_skip_url: false
summary_options: summary_options:
base_path: '' base_path: ''
count: true count: true
@ -1206,7 +1205,6 @@ display:
default_argument_type: fixed default_argument_type: fixed
default_argument_options: default_argument_options:
argument: '' argument: ''
default_argument_skip_url: false
summary_options: summary_options:
base_path: '' base_path: ''
count: true count: true

View File

@ -108,7 +108,6 @@ display:
default_argument_type: fixed default_argument_type: fixed
default_argument_options: default_argument_options:
argument: '' argument: ''
default_argument_skip_url: false
summary_options: summary_options:
base_path: '' base_path: ''
count: true count: true

View File

@ -83,6 +83,7 @@
background: none; background: none;
text-decoration: underline; text-decoration: underline;
width: fit-content; width: fit-content;
z-index: 100;
} }
footer { footer {

View File

@ -1,8 +1,12 @@
<script setup="setup"> <script setup="setup">
const route = useRoute() const route = useRoute()
const pot = computed(() => route.path) const pot = computed(() => route.path)
const naManifestu = computed(() => route.path.indexOf('/manifest') === 0) const naManifestu = computed(() => route.path.indexOf('/manifest') === 0)
const { baseUrl } = useRuntimeConfig().public
</script> </script>
<template> <template>
@ -19,7 +23,7 @@ const naManifestu = computed(() => route.path.indexOf('/manifest') === 0)
</NuxtLink> </NuxtLink>
</li> </li>
<li> <li>
<NuxtLink to="https://yugofuturism.kompot.si/user" target="_blank"> <NuxtLink :to="baseUrl + '/user'" class="posivljen" target="_blank">
admin admin
</NuxtLink> </NuxtLink>
</li> </li>
@ -108,6 +112,10 @@ ul {
width: 100%; width: 100%;
} }
.posivljen {
opacity: 0.5;
}
@media screen and (max-width: 768px) { @media screen and (max-width: 768px) {
.meni { .meni {
display: flex; display: flex;

View File

@ -3,6 +3,8 @@
import { stripHtml } from 'string-strip-html' import { stripHtml } from 'string-strip-html'
const { etherFetch } = useEtherpadApi() const { etherFetch } = useEtherpadApi()
const { poskrolaj } = useUi()
const store = usePojmiStore() const store = usePojmiStore()
const route = useRoute() const route = useRoute()
@ -40,10 +42,15 @@ onMounted(() => {
// Link na editiranje pojma? Poskrolaj nanj + odpri editiranje // Link na editiranje pojma? Poskrolaj nanj + odpri editiranje
if (route.params.guid === revisionId.value) { if (route.params.guid === revisionId.value) {
urejanje.value = true urejanje.value = true
setTimeout(() => obrazec.value.scrollIntoView({ behavior: 'smooth' }), 50)
} else { } else {
// Sicer samo poskrolaj na pojem // Sicer samo poskrolaj na pojem
setTimeout(() => container.value.parentNode.scrollIntoView({ behavior: 'smooth' }), 50) poskrolaj(container.value.parentNode)
}
})
onUpdated(() => {
if (route.params.guid === revisionId.value) {
poskrolaj(obrazec.value)
} }
}) })
@ -56,11 +63,13 @@ onMounted(() => {
<h2>{{ naslov }}</h2> <h2>{{ naslov }}</h2>
<div class="tekst" v-html="pojem.tekst" /> <div class="tekst" v-html="pojem.tekst" />
</div> </div>
<div class="obrazec" ref="obrazec">
<PojemForm v-if="urejanje" <PojemForm v-if="urejanje"
ref="obrazec" ref="obrazec"
:revisionId="revisionId" :revisionId="revisionId"
:pojem="pojem" :pojem="pojem"
:onZapri="() => { urejanje = false; store.naloziPojme() }" /> :onZapri="() => { urejanje = false; store.naloziPojme() }" />
</div>
</section> </section>
</template> </template>
@ -81,9 +90,12 @@ onMounted(() => {
} }
form.pojem { form.pojem {
width: 100%;
}
.obrazec {
width: calc(50% - 32px); width: calc(50% - 32px);
margin-left: 32px; margin-left: 32px;
gap: 1rem;
float: right; float: right;
} }
@ -100,7 +112,14 @@ onMounted(() => {
width: 100%; width: 100%;
} }
.obrazec {
width: 100%;
margin-left: 0;
}
form.pojem { form.pojem {
min-height: 70vh;
width: 100%;
margin-left: 0; margin-left: 0;
min-height: 70vh; min-height: 70vh;
} }

View File

@ -78,6 +78,10 @@ const etherNalozen = ev => {
</template> </template>
<style> <style>
form {
gap: 1rem;
}
.etherpad-textarea { .etherpad-textarea {
width: 100%; width: 100%;
flex-grow: 1; flex-grow: 1;

View File

@ -1,3 +1,4 @@
// @TODO preimenuj v api.js, dodaj helperje se za json fetch / naš api
export const useEtherpadApi = () => { export const useEtherpadApi = () => {
const { baseUrl } = useRuntimeConfig().public const { baseUrl } = useRuntimeConfig().public
const etherpadApiUrl = `${baseUrl}/etherpad-api` const etherpadApiUrl = `${baseUrl}/etherpad-api`

View File

@ -0,0 +1,12 @@
/* uporabne zadeve za vmesnik */
export const useUi = () => ({
poskrolaj: (sekcija, timeout = 50) => {
setTimeout(() => {
console.log('UI SKROL!', sekcija)
if (sekcija && sekcija.scrollIntoView) {
sekcija.scrollIntoView({ behavior: 'smooth' })
}
}, timeout)
}
})

View File

@ -1,8 +1,9 @@
<script setup="setup"> <script setup="setup">
const { getRandomUUID } = useCrypto() const { getRandomUUID } = useCrypto()
const { etherFetch } = useEtherpadApi()
const { poskrolaj } = useUi()
const { etherpadApiUrl } = useEtherpadApi()
const route = useRoute() const route = useRoute()
const revisionId = ref(null) const revisionId = ref(null)
@ -12,17 +13,15 @@ revisionId.value = route.params.guid ? route.params.guid : getRandomUUID()
// Ustvari nov, prazen pad // Ustvari nov, prazen pad
// @TODO parameter za seranje linka? // @TODO parameter za seranje linka?
const padId = revisionId.value const resp = await etherFetch('/createPad', {
const resp = await $fetch(`${etherpadApiUrl}/createPad?padID=${padId}`) padID: revisionId.value,
text: ''
})
const onZapri = () => { navigateTo('/manifest#skrol') } const onZapri = () => { navigateTo('/manifest#skrol') }
onMounted(() => { onMounted(() => {
setTimeout(() => { poskrolaj(obrazec.value)
console.log('element?', obrazec.value)
debugger
obrazec.value.scrollIntoView({ behavior: 'smooth' })
}, 50)
}) })
</script> </script>

View File

@ -1,15 +1,16 @@
<script setup="setup"> <script setup="setup">
const store = usePojmiStore() const store = usePojmiStore()
const { poskrolaj } = useUi()
await store.naloziPojme() await store.naloziPojme()
const navodila = ref(null) const navodila = ref(null)
onMounted(() => { onMounted(() => {
if (location && location.hash == '#skrol') { if (location && location.hash == '#skrol') {
setTimeout(() => { poskrolaj(navodila.value)
navodila.value.scrollIntoView({ behavior: 'smooth' })
}, 50)
} }
}) })