fixed missing JS functions in Article Editor
This commit is contained in:
		
							parent
							
								
									0d3111647b
								
							
						
					
					
						commit
						bc4a78382c
					
				|  | @ -109,52 +109,6 @@ | |||
| </section> | ||||
| 
 | ||||
| <SectionContent SectionName="scripts"> | ||||
| 	<script> | ||||
| 		window.insertBeforeSelection = function(markdown, startOfLine = false) { | ||||
| 			const target = document.getElementById("tool-target"); | ||||
| 			 | ||||
| 			const start = target.selectionStart; | ||||
| 			const end = target.selectionEnd; | ||||
| 			const value = target.value; | ||||
| 			let doStart = start; | ||||
| 			if (startOfLine) { | ||||
| 				doStart = value.lastIndexOf("\n", start) +1; | ||||
| 			} | ||||
| 			 | ||||
| 			target.focus(); | ||||
| 			target.value = value.substring(0, doStart) + markdown + value.substring(doStart); | ||||
| 
 | ||||
| 			target.selectionStart = start + markdown.length; | ||||
| 			target.selectionEnd = end + markdown.length; | ||||
| 			target.focus(); | ||||
| 			target.dispatchEvent(new Event("input", { bubbles: true })); | ||||
| 		} | ||||
| 
 | ||||
| 		window.insertBeforeAndAfterSelection = function (markdown) { | ||||
| 			const target = document.getElementById("tool-target"); | ||||
| 			 | ||||
| 			while (/\s/.test(target.value[target.selectionStart]) && target.selectionStart < target.value.length) { | ||||
| 				target.selectionStart++; | ||||
| 			} | ||||
| 			while (/\s/.test(target.value[target.selectionEnd-1]) && target.selectionEnd > 0) { | ||||
| 				target.selectionEnd--; | ||||
| 			} | ||||
| 
 | ||||
| 			const start = target.selectionStart; | ||||
| 			const end = target.selectionEnd; | ||||
| 			const value = target.value; | ||||
| 
 | ||||
| 			target.focus(); | ||||
| 			target.value = value.substring(0, start) + | ||||
| 				markdown + value.substring(start, end) + markdown + | ||||
| 				value.substring(end); | ||||
| 
 | ||||
| 			target.selectionStart = start + markdown.length; | ||||
| 			target.selectionEnd = end + markdown.length; | ||||
| 			target.focus(); | ||||
| 			target.dispatchEvent(new Event("input", { bubbles: true })); | ||||
| 		} | ||||
| 	</script> | ||||
| </SectionContent> | ||||
| 
 | ||||
| @code { | ||||
|  |  | |||
|  | @ -44,8 +44,54 @@ | |||
| <CascadingValue Value="UserTheme" Name="UserTheme"> | ||||
| <Routes /> | ||||
| </CascadingValue> | ||||
| <SectionOutlet SectionName="scripts" /> | ||||
| <script src="_framework/blazor.web.js" defer></script> | ||||
| 	<script src="_framework/blazor.web.js" defer></script> | ||||
| 	<SectionOutlet SectionName="scripts" /> | ||||
| 	<script> | ||||
| 		window.insertBeforeSelection = function (markdown, startOfLine = false) { | ||||
| 			const target = document.getElementById("tool-target"); | ||||
| 
 | ||||
| 			const start = target.selectionStart; | ||||
| 			const end = target.selectionEnd; | ||||
| 			const value = target.value; | ||||
| 			let doStart = start; | ||||
| 			if (startOfLine) { | ||||
| 				doStart = value.lastIndexOf("\n", start) + 1; | ||||
| 			} | ||||
| 
 | ||||
| 			target.focus(); | ||||
| 			target.value = value.substring(0, doStart) + markdown + value.substring(doStart); | ||||
| 
 | ||||
| 			target.selectionStart = start + markdown.length; | ||||
| 			target.selectionEnd = end + markdown.length; | ||||
| 			target.focus(); | ||||
| 			target.dispatchEvent(new Event("input", { bubbles: true })); | ||||
| 		} | ||||
| 
 | ||||
| 		window.insertBeforeAndAfterSelection = function (markdown) { | ||||
| 			const target = document.getElementById("tool-target"); | ||||
| 
 | ||||
| 			while (/\s/.test(target.value[target.selectionStart]) && target.selectionStart < target.value.length) { | ||||
| 				target.selectionStart++; | ||||
| 			} | ||||
| 			while (/\s/.test(target.value[target.selectionEnd - 1]) && target.selectionEnd > 0) { | ||||
| 				target.selectionEnd--; | ||||
| 			} | ||||
| 
 | ||||
| 			const start = target.selectionStart; | ||||
| 			const end = target.selectionEnd; | ||||
| 			const value = target.value; | ||||
| 
 | ||||
| 			target.focus(); | ||||
| 			target.value = value.substring(0, start) + | ||||
| 				markdown + value.substring(start, end) + markdown + | ||||
| 				value.substring(end); | ||||
| 
 | ||||
| 			target.selectionStart = start + markdown.length; | ||||
| 			target.selectionEnd = end + markdown.length; | ||||
| 			target.focus(); | ||||
| 			target.dispatchEvent(new Event("input", { bubbles: true })); | ||||
| 		} | ||||
| 	</script> | ||||
| </body> | ||||
| 
 | ||||
| </html> | ||||
|  |  | |||
|  | @ -280,7 +280,7 @@ | |||
| 		} | ||||
| 
 | ||||
| 		// published articles may only be edited my admins or moderators | ||||
| 		if (article.Status is ArticleStatus.Published && roles.Any(r => r is "Admin" or "Reviewer")) { | ||||
| 		if (article.Status is ArticleStatus.Published && roles.Any(r => r is "Admin" or "Moderator")) { | ||||
| 			article.Reviewer = me; // TODO replace with editor or something? | ||||
| 			return; | ||||
| 		} | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue