Initial commit

This commit is contained in:
Luka Romih
2022-12-07 04:43:36 +01:00
commit 257f3c354f
496 changed files with 55373 additions and 0 deletions
@@ -0,0 +1,64 @@
extends /layout
mixin sideMenu(meta)
include /common/side-menu-mixin-consultancy
+sideNavigation(meta)
block pageSpecificScipts
script(nonce=cspNonce src="/javascripts/tooltip-helper.js")
script(nonce=cspNonce src="/javascripts/consultancy.js")
script(nonce=cspNonce src="/javascripts/consultancy-search-mechanism.js")
block body
- const specificUserRights = user && (user.hasRole('consultant') || user.hasRole('consultancy admin'))
//- .consultancy-padding-admin.consultancy-container-unique
section#fixed-top-section
include /common/main-navigation
+main-navigation(false)
block config
- const pageTypeObject = { new: true }
- const subHeading = 'Novo'
- const description = 'Seznam vprašanj, ki so jih poslali uporabniki, in še niso bila dodeljena moderatorjem.'
+sideMenu(pageTypeObject)
//-- modals
include dialogs/share
include dialogs/assign
+consultancyAdminShareModal
+consultancyAdminAssignModal
if specificUserRights
include /utilities/consultancy-admin-panel-header
//- const c = { h1: 'Terminološko svetovanje', description: 'Terminološka svetovalnica je namenjena širši strokovni javnosti, ki se sooča s konkretnimi poimenovalnimi problemi, pa naj gre za popolnoma nove pojme, ki jih je v slovenščini šele treba poimenovati, ali že znane pojme, za katere obstaja več poimenovanj, pa strokovnjaki čutijo potrebo po sistemskem poenotenju oz. izbiri najprimernejše rešitve.', buttons: [{ type: 'link', content: 'Zastavi novo vprašanje', url: '/svetovanje/vprasanje/novo' }] }
// - 'Terminološka svetovalnica je namenjena širši strokovni javnosti, ki se sooča s konkretnimi poimenovalnimi problemi, pa naj gre za popolnoma nove pojme, ki jih je v slovenščini šele treba poimenovati, ali že znane pojme, za katere obstaja več poimenovanj.'
- const c = { specificRights: specificUserRights, exportButtonPresent: false, h1: subHeading, h2: 'Administratorska konzola', description: description }
+mainHeader(c)
.content-hold-prerequisites
#offset-main.main-container
include /components/consultancy/admin/consultancy-item-admin
block consultancyContainer
- const section = pageTypeObject
.consultancy-container
if pageTypeObject.new
each entry in entries
+consultancyItem(entry, section)
else
//- - const moderatorList = entries.filter(a => a.isModerator)
each entry in entries
//- -
entry.sharedAuthors = entries.filter(a => {
return !a.isModerator && entry.id === a.id
}).map(a => a.name = `${a.firstName} ${a.lastName}`)
+consultancyItem(entry, section)
else
include /utilities/empty-main-panel-header
+mainHeader
.content-hold-prerequisites.ps-4.pe-4
#offset-main.ps-2.pe-2
p Nimate ustreznih pravic
include ../../../utilities/modal-alert-mixin
+alertModal("deleteModal","Izbriši" ,"Prekliči" , "del-btn", "cancel-btn")
include /common/footer
@@ -0,0 +1,51 @@
//- assign has only one entry
mixin consultancyAdminAssignBody
.assign-dialog-window.w-100
.assign-search-container.mb-3
select#assign-sel.assign-search-consultants.csq(name="assign")
option(value="NONE_SELECTED_PLACEHOLDER")
each user in userList
option(value=user.id) #{ user.first_name } #{ user.last_name } (#{ user.username })
.position-relative
.search-icon-assign
img(src="/images/search_blue.svg" alt="")
mixin consultancyAdminAssignModal
//- button.btn.btn-primary(
type="button"
data-bs-toggle="modal"
data-bs-target="#consultancyModalAssign"
)
| Launch static backdrop modal
// Modal
#consultancyModalAssign.modal.fade(
data-bs-backdrop="static"
data-bs-keyboard="false"
tabindex="-1"
aria-labelledby="consultancyModalLabel"
aria-hidden="true"
)
.modal-dialog
.modal-content
.modal-header.mb-0.pb-0
h5.pt-3.navigation-text-color Dodeli
button.btn-close(
type="button"
data-bs-dismiss="modal"
aria-label="Close"
)
.modal-body
+consultancyAdminAssignBody
.modal-footer
.row.button-modal-size
.col.d-flex.justify-content-start.mb-2
button.btn.btn-secondary.height50(
type="button"
data-bs-dismiss="modal"
) Zapri
.col.d-flex.justify-content-end.mb-2
button#assign-btn.btn.btn-primary.height50(
type="button"
data-bs-dismiss="modal"
) Uporabi
@@ -0,0 +1,60 @@
mixin shareResultsItem(userId, name)
.share-results-item(id=userId)
.row
.col-11
p.mb-0.navigation-text-color.mb0 #{ name }
.col-1
.d-flex.justify-content-end
button.delete-shared-cons.bg-transparent.no-border
img(src="/images/trash-2.svg")
hr.mt-1.mb-1
mixin consultancyAdminShareBody
.share-dialog-window.w-100
.share-search-container.mb-3
select#share-sel.share-search-consultants.csq(name="share")
option(value="NONE_SELECTED_PLACEHOLDER")
each user in userList
option(value=user.id) #{ user.first_name } #{ user.last_name } (#{ user.username })
.position-relative
.search-icon-share
img(src="/images/search_blue.svg" alt="")
.share-results-container
//- +shareResultsItem(1,'Ime priimek')
//- +shareResultsItem(2,'Ime priimek')
mixin consultancyAdminShareModal
//- button.btn.btn-primary(
type="button"
data-bs-toggle="modal"
data-bs-target="#consultancyModalShare"
)
| Launch static backdrop modal
// Modal
#consultancyModalShare.modal.fade(
data-bs-backdrop="static"
data-bs-keyboard="false"
tabindex="-1"
aria-labelledby="consultancyModalLabel"
aria-hidden="true"
)
.modal-dialog
.modal-content
.modal-header.mb-0.pb-0
h5.pt-3.navigation-text-color Deli
button.btn-close(
type="button"
data-bs-dismiss="modal"
aria-label="Close"
)
.modal-body
+consultancyAdminShareBody
.modal-footer
.row.button-modal-size
.col.d-flex.justify-content-start.mb-2
button#close-shared.btn.btn-secondary.height50(
type="button"
data-bs-dismiss="modal"
) Zapri
#add-shared-author.col.d-flex.justify-content-end.mb-2
button.btn.btn-primary.height50(type="button") Dodaj
@@ -0,0 +1,149 @@
extends /layout
mixin sideMenu(meta)
include /common/side-menu-mixin-consultancy
+sideNavigation(meta)
block pageSpecificScipts
script(nonce=cspNonce src="/javascripts/utils.js")
script(nonce=cspNonce src="/javascripts/mixed-content.js")
script(nonce=cspNonce src="/javascripts/consultancy.js")
script(nonce=cspNonce src="/javascripts/consultancy-edit.js")
script(nonce=cspNonce src="/javascripts/comments.js")
script(nonce=cspNonce src="/javascripts/consultancy-handle-unsaved.js")
block body
- const specificUserRights = user && (user.hasRole('consultant') || user.hasRole('consultancy admin'))
section#fixed-top-section
include /common/main-navigation
+main-navigation(false)
block config
- const pageTypeObject = sentFrom
- const subHeading = 'Urejanje'
- const description = 'Dodajte terminološki odgovor in ga utemeljite.'
+sideMenu(pageTypeObject)
include ../../../utilities/mixed-content
include /utilities/consultancy-admin-in-progress-panel-header
//- const c = { h1: 'Terminološko svetovanje', description: 'Terminološka svetovalnica je namenjena širši strokovni javnosti, ki se sooča s konkretnimi poimenovalnimi problemi, pa naj gre za popolnoma nove pojme, ki jih je v slovenščini šele treba poimenovati, ali že znane pojme, za katere obstaja več poimenovanj, pa strokovnjaki čutijo potrebo po sistemskem poenotenju oz. izbiri najprimernejše rešitve.', buttons: [{ type: 'link', content: 'Zastavi novo vprašanje', url: '/svetovanje/vprasanje/novo' }] }
- const c = { noSidebar: true, hrefurl: `/svetovanje/vprasanje/admin/${sentFrom}`, specificRights: specificUserRights, exportButtonPresent: false, h1: 'Urejanje terminološkega odgovora', description: 'Dodajte terminološki odgovor in ga utemeljite.', buttons: [{ form: 'edit-form', type: 'button', content: 'Shrani spremembe', contentDisabled: true }] }
+mainHeader(c)
if specificUserRights
.content-hold-prerequisites
#offset-main.main-container.offset-correction
.row.mt-4.mx-0
.col.g-0
p.text-header-description-gray.mb-2 <b>Datum vprašanja:</b> #{ entry.timeCreated }
p.text-header-description-gray.mt-2.mb-0 <b>Uporabnik:</b> #{ author.firstName }
p.text-header-description-gray.mt-1 <b>E-pošta:</b> #{ author.email }
hr
p.text-header-description-gray.mb-2 <b>Datum objave/spremembe:</b> #{ entry.timePublished }
p.text-header-description-gray.mt-2.mb-0 <b>Avtorji mnenja:</b>
span.text-header-description-gray= ` ${entry.answerAuthors ? entry.answerAuthors.join(`, `) : ''}`
p.text-header-description-gray.mt-1 <b>URL povezava do mnenja:</b> #{ isPublished?`${urlPrefix}/svetovanje/vprasanje/${id}`:'' }
hr
form#edit-form.row(method="put" action="/api/v1/consultancy/entry")
input(type="hidden" name="_method" value="put")
input#entry-id.d-none(type="text" value=id)
.col
h5.navigation-text-color Urejanje
#question-title-field.mt-4
.title.mt-4
.subject-name.col.d-flex.justify-content-between
label.mb-1.smaller-gray-uppercase(for="address") NASLOV*
- const type = 'two'
+mixedContentBtns
.row
.col
textarea#question-title.form-control.explanation-field.mc-field.dispatch-tab(
type="text"
name="address"
) #{ entry.title }
//- .col-sm.d-flex.align-items-center
span.d-md-inline.d-block.smaller-gray-info.ms-xxl-3.ms-md-3 Navodilo k posamičnemu polju. Reprehenderit aliqua quis ut velit eu irure non ad sunt sunt ipsum sunt esse.
.cerif-area.mt-4
.subject-name
label.smaller-gray-uppercase(for="select-cerif") PODROČJE
.row
#cerif
select#select-cerif.select-cerif.name-input.d-inline.form-control(
name="domainPrimary"
required
)
option(value=-1)
each domain in allPrimaryDomains
option(
value=domain.id
selected=domain.id === entry.domainPrimaryId
)= domain.nameSl
#invalid-section.invalid-feedback-selection.hidden-section.mt-3 Nimate izbranega področja CERIF.
//- .col-sm.d-flex.align-items-center
span.d-md-inline.d-block.smaller-gray-info.ms-xxl-3.ms-md-3 Področje, v katero sodi opisani terminološki problem
#question-field.mt-4
.title.mt-4
.subject-name.col.d-flex.justify-content-between
label.mb-1.smaller-gray-uppercase(for="questionTitle") VPRAŠANJE*
+mixedContentBtns(type)
.row
.col
textarea#question.form-control.explanation-field.mc-field.dispatch-tab(
type="text"
name="questionTitle"
) #{ entry.question }
//- .col-sm.d-flex.align-items-center
span.d-md-inline.d-block.smaller-gray-info.ms-xxl-3.ms-md-3 Navodilo k posamičnemu polju. Reprehenderit aliqua quis ut velit eu irure non ad sunt sunt ipsum sunt esse.
#text-editor.mt-4
.subject-name
span.smaller-gray-uppercase MNENJE*
.row
.col
-
let innerHTML = ""
if(!!entry.answer){
innerHTML = entry.answer
} else {
if(entry.institution){
innerHTML += `
<b>Institucija:</b> ${entry.institution}
<br><br>
`
}
if(entry.description){
innerHTML += `
<b>Opis terminološkega problema:</b> ${entry.description}
<br><br>`
}
if(entry.existingSolutions){
innerHTML += `
<b>Obstoječe poimenovalne rešitve:</b> ${entry.existingSolutions}
<br><br>
`
}
if(entry.examplesOfUse){
innerHTML += `
<b>Primeri rabe:</b> ${entry.examplesOfUse}
<br><br><br>
`
}
}
#opinion.summernote !{ innerHTML }
//- .col-sm.d-flex.align-items-center
span.d-md-inline.d-block.smaller-gray-info.ms-xxl-3.ms-md-3 Navodilo k posamičnemu polju. Reprehenderit aliqua quis ut velit eu irure non ad sunt sunt ipsum sunt esse.
.comments-content.col-12.col-md-12.py-md-3.bd-content
include /utilities/comments-with-pager
else
include /utilities/empty-main-panel-header
+mainHeader
.content-hold-prerequisites.ps-4.pe-4
#offset-main.ps-2.pe-2
p Nimate ustreznih pravic
include /utilities/modal-alert-mixin
+alertModal('unsaved-data', 'Shrani', 'Ne', 'modal-save-btn', 'modal-dont-save-btn', 'Imate neshranjene spremebe. Ali jih želite shraniti?')
include /common/footer
@@ -0,0 +1,6 @@
extends /pages/consultancy/admin/consultancy-admin-inheritable-module
block config
- const pageTypeObject = { inProgress: true }
- const subHeading = 'V delu'
- const description = 'Seznam vprašanj, ki so še v urejanju.'
@@ -0,0 +1 @@
extends /pages/consultancy/admin/consultancy-admin-inheritable-module
@@ -0,0 +1,6 @@
extends /pages/consultancy/admin/consultancy-admin-inheritable-module
block config
- const pageTypeObject = { prepared: true }
- const subHeading = 'Pripravljeno'
- const description = 'Seznam urejenih vprašanj, ki čakajo na potrditev dokončne objave.'
@@ -0,0 +1,6 @@
extends /pages/consultancy/admin/consultancy-admin-inheritable-module
block config
- const pageTypeObject = { published: true }
- const subHeading = 'Objavljeno'
- const description = 'Seznam objavljenih vprašanj.'
@@ -0,0 +1,6 @@
extends /pages/consultancy/admin/consultancy-admin-inheritable-module
block config
- const pageTypeObject = { rejected: true }
- const subHeading = 'Zavrnjeno'
- const description = 'Seznam vprašanj, ki so jih moderatorji zavrnili in jih je treba dodeliti nekomu drugemu.'
@@ -0,0 +1,57 @@
extends /layout
mixin sideMenu(meta)
include /common/side-menu-mixin-consultancy
+sideNavigation(meta)
//-
mixin header
.pass
mixin body
.pass
block pageSpecificScipts
script(nonce=cspNonce src="/javascripts/tooltip-helper.js")
script(nonce=cspNonce src="/javascripts/consultancy.js")
block body
- const specificUserRights = user && (user.hasRole('consultant') || user.hasRole('consultancy admin'))
.consultancy-padding-admin.consultancy-container-unique
section#fixed-top-section
include /common/main-navigation
+main-navigation(false)
block config
- const pageTypeObject = { stats: true }
- const subHeading = 'Statistika'
+sideMenu(pageTypeObject)
//-- modals
//- include dialogs/share
//- include dialogs/assign
//- +consultancyAdminShareModal
//- +consultancyAdminAssignModal
if specificUserRights
include /utilities/consultancy-admin-panel-header
//- const c = { h1: 'Terminološko svetovanje', description: 'Terminološka svetovalnica je namenjena širši strokovni javnosti, ki se sooča s konkretnimi poimenovalnimi problemi, pa naj gre za popolnoma nove pojme, ki jih je v slovenščini šele treba poimenovati, ali že znane pojme, za katere obstaja več poimenovanj, pa strokovnjaki čutijo potrebo po sistemskem poenotenju oz. izbiri najprimernejše rešitve.', buttons: [{ type: 'link', content: 'Zastavi novo vprašanje', url: '/svetovanje/vprasanje/novo' }] }
- const c = { specificRights: specificUserRights, exportButtonPresent: false, h1: 'Statistika', description: 'Terminološka svetovalnica je namenjena širši strokovni javnosti, ki se sooča s konkretnimi poimenovalnimi problemi, pa naj gre za popolnoma nove pojme, ki jih je v slovenščini šele treba poimenovati, ali že znane pojme, za katere obstaja več poimenovanj.', buttons: [{ type: 'link', content: 'Zastavi novo vprašanje', url: '/svetovanje/vprasanje/novo' }] }
+mainHeader(c)
.content-hold-prerequisites.ps-4.pe-4
#offset-main.ps-2.pe-2
include /components/consultancy/admin/consultancy-item-admin
block consultancyContainer
- const section = pageTypeObject
.consultancy-container.ps-3
else
include /utilities/empty-main-panel-header
+mainHeader
.content-hold-prerequisites.ps-4.pe-4
#offset-main.ps-2.pe-2
p Nimate ustreznih pravic
//- include ../../../utilities/modal-alert-mixin
//- +alertModal("deleteModal","Izbriši" ,"Prekliči" , "del-btn", "cancel-btn")
include /common/footer
@@ -0,0 +1,103 @@
extends /layout
mixin sideMenu(meta)
include /common/side-menu-mixin-consultancy
+sideNavigation(meta)
//-
mixin header
.pass
mixin body
.pass
block pageSpecificScipts
script(nonce=cspNonce src="/javascripts/utils.js")
script(nonce=cspNonce src="/javascripts/consultancy.js")
//- script(nonce=cspNonce src="/javascripts/tooltips.js")
block body
- const specificUserRights = user && (user.hasRole('consultant') || user.hasRole('consultancy admin'))
section#fixed-top-section
include /common/main-navigation
+main-navigation(false)
block config
- const pageTypeObject = { users: true }
- const subHeading = 'Uporabniki'
+sideMenu(pageTypeObject)
//-- modals
//- include dialogs/share
//- include dialogs/assign
//- +consultancyAdminShareModal
//- +consultancyAdminAssignModal
if specificUserRights
#offset-padding.offset-padding.header-section-root.mx-max-xl-2rem
.d-flex.justify-content-between.flex-wrap.flex-row.row
.header-container-left-side.d-flex.col-sm-10
#chevrons-left.d-flex.w-100
.header-container-divider-left
h2#site-header-title Uporabniki
h1#site-heading Seznam svetovalcev
span#text-description.page-description.pe-0 Na tem mestu lahko dodajate svetovalce, ki so registrirani uporabniki terminološkega portala. Če boste pripisali področje, boste lahko svetovalcu dodeljevali samo vprašanja, ki sodijo na izbrano področje, vsem drugim pa vsa.
.header-container-divider-right.d-flex.justify-content-end.col-sm-2
//- a.btn.btn-primary.header-btn(disabled) Dodaj
hr
.content-hold-prerequisites
#offset-main.main-container.ps-xl-0
.d-flex.justify-content-between
.d-flex.flex-row.mb-4
include /components/search-and-filter/inline-search
.dflex
include /utilities/pager
+pager(1,2,3,1,3,true)
table#all-areas-table.table.areas-table.table-responsive
thead
tr
th(scope="col") Ime
th(scope="col") Področja
th(scope="col")
tbody
each user in users
tr(id=user.id)
input(type="hidden" name="secondaryDomainId" value=user.id)
td.tdata-name= user.username
td.tdata-area= user.domains ? user.domains : ''
td.buttons-group
.table-buttons
button.p-0.table-button-grp.me-3.edit-row-btn
img(src="/images/u_edit-alt.svg" alt="")
button.p-0.table-button-grp.delete-row-btn(
data-bs-target="#alert-modal"
data-bs-toggle="modal"
)
img(src="/images/red-trash-icon.svg" alt="")
.d-flex.justify-content-between.mt-4
.d-flex.flex-row.mb-4
.dflex
//- +pager(1,2,3,1,3,true)
form#insert-consultant(
action="/api/v1/consultancy/add-consultant-by-username"
method="POST"
)
.row.mb-5
.col-sm-3
.subject-name
label.input-name-txt Ime
input#username.form-control(type="text")
.col-sm-3
.subject-name
label.input-name-txt Področja
input#domains.form-control(type="text")
.col.d-flex.align-items-end.mt-2
button#add-area.btn.btn-primary(type="submit") Dodaj
include /utilities/modal-alert
include /common/footer