Added article writers to exported articles

This commit is contained in:
sairaj mote 2021-12-31 01:30:07 +05:30
parent 0441960eb9
commit 1b726fa9d2
4 changed files with 58 additions and 18 deletions

View File

@ -1156,6 +1156,10 @@ sm-copy {
width: min(45ch, calc(100% - 2rem)); width: min(45ch, calc(100% - 2rem));
} }
.formatting-button {
padding: 0.5rem;
}
.hide-on-mobile { .hide-on-mobile {
display: none; display: none;
} }

2
css/main.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -1002,6 +1002,9 @@ sm-copy {
flex-shrink: 0; flex-shrink: 0;
width: min(45ch, calc(100% - 2rem)); width: min(45ch, calc(100% - 2rem));
} }
.formatting-button{
padding: 0.5rem;
}
.hide-on-mobile { .hide-on-mobile {
display: none; display: none;
} }

View File

@ -1467,7 +1467,8 @@
const sectionID = contentCard.closest('.article-section').dataset.sectionId const sectionID = contentCard.closest('.article-section').dataset.sectionId
const content = DOMPurify.sanitize(contentCard.querySelector('.content__area').innerHTML.split('\n').map(v => v.trim()).filter(v => v).join('\n'), { FORBID_ATTR: ['style'] }) const content = DOMPurify.sanitize(contentCard.querySelector('.content__area').innerHTML.split('\n').map(v => v.trim()).filter(v => v).join('\n'), { FORBID_ATTR: ['style'] })
.replace(/b>/gi, 'strong>').replace(/i>/gi, 'em>') .replace(/b>/gi, 'strong>').replace(/i>/gi, 'em>')
selectedContent.set(contentID, { content, sectionID }) const contributors = Object.keys(getIterationDetails(contentID).contributors)
selectedContent.set(contentID, { content, sectionID, contributors })
} }
const animOptions = { const animOptions = {
duration: 150, duration: 150,
@ -1496,6 +1497,13 @@
animateTo(getRef('article_name_wrapper'), slideInRight, animOptions) animateTo(getRef('article_name_wrapper'), slideInRight, animOptions)
} }
} }
} else if (e.target.classList.contains('heading')) {
floGlobals.appObjects[floGlobals.currentArticle.id].sections[e.target.dataset.index].title = e.target.value.trim()
floCloudAPI.updateObjectData(floGlobals.currentArticle.id)
.then((res) => {
notify('Updated heading', 'success')
})
.catch(err => console.error(err))
} }
}) })
@ -1595,6 +1603,18 @@
bodyTemplate.querySelector('#exported_title').textContent = articleTitle bodyTemplate.querySelector('#exported_title').textContent = articleTitle
bodyTemplate.querySelector('#exported_time').textContent = `Exported on ${getFormattedTime(Date.now())}` bodyTemplate.querySelector('#exported_time').textContent = `Exported on ${getFormattedTime(Date.now())}`
bodyTemplate.querySelector('#export_body').innerHTML = getCleanExportContent() bodyTemplate.querySelector('#export_body').innerHTML = getCleanExportContent()
let allContributors = new Set()
selectedContent.forEach(({ contributors }) => {
contributors.forEach(id => allContributors.add(id))
});
const frag = document.createDocumentFragment()
allContributors.forEach(id => {
frag.append(createElement('div', {
textContent: id,
className: 'contributor'
}))
})
bodyTemplate.querySelector('#article_contributors').append(frag)
const readingTime = getReadingTime(bodyTemplate.querySelector('#export_body').textContent) const readingTime = getReadingTime(bodyTemplate.querySelector('#export_body').textContent)
bodyTemplate.querySelector('#reading_time').textContent = `${readingTime} min read` bodyTemplate.querySelector('#reading_time').textContent = `${readingTime} min read`
let bodyAttributes = '' let bodyAttributes = ''
@ -1637,12 +1657,17 @@
} }
function sharePreview() { function sharePreview() {
if (isSubAdmin) { if (isSubAdmin) {
let allContributors = new Set()
selectedContent.forEach(({ contributors }) => {
contributors.forEach(id => allContributors.add(id))
});
if (floGlobals.appObjects[pagesData.params.articleID]?.preview?.id) { if (floGlobals.appObjects[pagesData.params.articleID]?.preview?.id) {
floGlobals.appObjects[pagesData.params.articleID].preview.content = DOMPurify.sanitize(getRef('preview__body').innerHTML) floGlobals.appObjects[pagesData.params.articleID].preview.content = DOMPurify.sanitize(getRef('preview__body').innerHTML)
} else { } else {
floGlobals.appObjects[pagesData.params.articleID].preview = { floGlobals.appObjects[pagesData.params.articleID].preview = {
uid: floCrypto.randString(16, true), uid: floCrypto.randString(16, true),
content: DOMPurify.sanitize(getRef('preview__body').innerHTML) content: DOMPurify.sanitize(getRef('preview__body').innerHTML),
contributors: [...allContributors]
} }
} }
floCloudAPI.updateObjectData(pagesData.params.articleID) floCloudAPI.updateObjectData(pagesData.params.articleID)
@ -1737,16 +1762,6 @@
}) })
.catch(err => console.error(err)) .catch(err => console.error(err))
}) })
getRef('article_wrapper').addEventListener("change", e => {
if (e.target.classList.contains('heading')) {
floGlobals.appObjects[floGlobals.currentArticle.id].sections[e.target.dataset.index].title = e.target.value.trim()
floCloudAPI.updateObjectData(floGlobals.currentArticle.id)
.then((res) => {
notify('Updated heading', 'success')
})
.catch(err => console.error(err))
}
})
getRef('article_wrapper').addEventListener("focusin", e => { getRef('article_wrapper').addEventListener("focusin", e => {
if (e.target.closest('.content__area')) { if (e.target.closest('.content__area')) {
const target = e.target.closest('.content__area') const target = e.target.closest('.content__area')
@ -12414,17 +12429,22 @@
} }
article { article {
position: relative;
padding-bottom: 3rem; padding-bottom: 3rem;
gap: 1rem gap: 1rem
} }
article::after { #export_body {
position: relative;
margin-bottom: 1rem;
padding-bottom: 1.5rem;
}
#export_body::after {
justify-self: center; justify-self: center;
position: absolute; position: absolute;
bottom: 0; bottom: 0;
content: ""; content: "";
width: 4rem; width: 3rem;
height: .3rem; height: .3rem;
border-radius: .5rem; border-radius: .5rem;
background-color: rgba(var(--text-color), 0.5) background-color: rgba(var(--text-color), 0.5)
@ -12497,6 +12517,19 @@
margin-left: auto margin-left: auto
} }
#article_contributors {
flex-wrap: wrap;
gap: 0.3rem;
margin: 0.5rem 0 1rem 0;
}
.contributor {
font-size: 0.8rem;
background-color: rgba(var(--text-color), 0.06);
border-radius: 0.3rem;
padding: 0.3rem 0.5rem;
}
.upvote { .upvote {
display: grid; display: grid;
grid-template-columns: auto 1fr; grid-template-columns: auto 1fr;
@ -12647,7 +12680,7 @@
<section id="export_body" class="grid gap-1"></section> <section id="export_body" class="grid gap-1"></section>
<section> <section>
<h4>Article by -</h4> <h4>Article by -</h4>
<div id="article_contributors"></div> <div id="article_contributors" class="flex"></div>
<span>created with RanchiMall Content collaboration app</span> <span>created with RanchiMall Content collaboration app</span>
</section> </section>
</article> </article>
@ -12843,7 +12876,7 @@
<path <path
d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" /> d="M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z" />
</svg> </svg>
<div id="like_count"></div> <div id="like_count">Loading...</div>
</button> </button>
</footer> </footer>
<sm-popup id="sign_in_popup"> <sm-popup id="sign_in_popup">