summaryrefslogtreecommitdiff
path: root/src/org_ckons_cljs/form
diff options
context:
space:
mode:
authorckonstanski <carlos.konstanski@olo.com>2023-12-23 18:58:54 -0700
committerckonstanski <carlos.konstanski@olo.com>2023-12-23 18:58:54 -0700
commit2e53ea1e633d39d5d841625826c2eda10929585b (patch)
tree162c6fa575973e656ae42e6c27fe25a6da0ce77f /src/org_ckons_cljs/form
parentd528f7321adc5c39580afe2157178a95cc9168a8 (diff)
ckeditor
Diffstat (limited to 'src/org_ckons_cljs/form')
-rw-r--r--src/org_ckons_cljs/form/core.cljs119
1 files changed, 119 insertions, 0 deletions
diff --git a/src/org_ckons_cljs/form/core.cljs b/src/org_ckons_cljs/form/core.cljs
index 025c963..31486ff 100644
--- a/src/org_ckons_cljs/form/core.cljs
+++ b/src/org_ckons_cljs/form/core.cljs
@@ -2,8 +2,114 @@
(:require-macros [hiccups.core :as hiccups :refer [html]]
[clojure.string :as str]))
+(declare editor-init)
(declare template-generic-form)
+(def ckeditor-config (js->clj (js/JSON.parse "{
+ \"toolbar\": {
+ \"items\": [
+ \"exportPDF\", \"exportWord\", \"|\",
+ \"findAndReplace\", \"selectAll\", \"|\",
+ \"heading\", \"|\",
+ \"bold\", \"italic\", \"strikethrough\", \"underline\", \"code\", \"subscript\", \"superscript\", \"removeFormat\", \"|\",
+ \"bulletedList\", \"numberedList\", \"todoList\", \"|\",
+ \"outdent\", \"indent\", \"|\",
+ \"undo\", \"redo\",
+ \"-\",
+ \"fontSize\", \"fontFamily\", \"fontColor\", \"fontBackgroundColor\", \"highlight\", \"|\",
+ \"alignment\", \"|\",
+ \"link\", \"insertImage\", \"blockQuote\", \"insertTable\", \"mediaEmbed\", \"codeBlock\", \"htmlEmbed\", \"|\",
+ \"specialCharacters\", \"horizontalLine\", \"pageBreak\", \"|\",
+ \"textPartLanguage\", \"|\",
+ \"sourceEditing\"
+ ],
+ \"shouldNotGroupWhenFull\": true
+ },
+ \"list\": {
+ \"properties\": {
+ \"styles\": true,
+ \"startIndex\": true,
+ \"reversed\": true
+ }
+ },
+ \"heading\": {
+ \"options\": [
+ { \"model\": \"paragraph\", \"title\": \"Paragraph\", \"class\": \"ck-heading_paragraph\" },
+ { \"model\": \"heading1\", \"view\": \"h1\", \"title\": \"Heading 1\", \"class\": \"ck-heading_heading1\" },
+ { \"model\": \"heading2\", \"view\": \"h2\", \"title\": \"Heading 2\", \"class\": \"ck-heading_heading2\" },
+ { \"model\": \"heading3\", \"view\": \"h3\", \"title\": \"Heading 3\", \"class\": \"ck-heading_heading3\" },
+ { \"model\": \"heading4\", \"view\": \"h4\", \"title\": \"Heading 4\", \"class\": \"ck-heading_heading4\" },
+ { \"model\": \"heading5\", \"view\": \"h5\", \"title\": \"Heading 5\", \"class\": \"ck-heading_heading5\" },
+ { \"model\": \"heading6\", \"view\": \"h6\", \"title\": \"Heading 6\", \"class\": \"ck-heading_heading6\" }
+ ]
+ },
+ \"fontFamily\": {
+ \"options\": [
+ \"default\",
+ \"Arial, Helvetica, sans-serif\",
+ \"Courier New, Courier, monospace\",
+ \"Georgia, serif\",
+ \"Lucida Sans Unicode, Lucida Grande, sans-serif\",
+ \"Tahoma, Geneva, sans-serif\",
+ \"Times New Roman, Times, serif\",
+ \"Trebuchet MS, Helvetica, sans-serif\",
+ \"Verdana, Geneva, sans-serif\"
+ ],
+ \"supportAllValues\": true
+ },
+ \"fontSize\": {
+ \"options\": [10, 12, 14, \"default\", 18, 20, 22],
+ \"supportAllValues\": true
+ },
+ \"htmlSupport\": {
+ \"allow\": [
+ {
+ \"name\": \"/.*/\",
+ \"attributes\": true,
+ \"classes\": true,
+ \"styles\": true
+ }
+ ]
+ },
+ \"htmlEmbed\": {
+ \"showPreviews\": true
+ },
+ \"link\": {
+ \"decorators\": {
+ \"addTargetToExternalLinks\": true,
+ \"defaultProtocol\": \"https://\",
+ \"toggleDownloadable\": {
+ \"mode\": \"manual\",
+ \"label\": \"Downloadable\",
+ \"attributes\": {
+ \"download\": \"file\"
+ }
+ }
+ }
+ },
+ \"removePlugins\": [
+ \"CKBox\",
+ \"CKFinder\",
+ \"EasyImage\",
+ \"RealTimeCollaborativeComments\",
+ \"RealTimeCollaborativeTrackChanges\",
+ \"RealTimeCollaborativeRevisionHistory\",
+ \"PresenceList\",
+ \"Comments\",
+ \"TrackChanges\",
+ \"TrackChangesData\",
+ \"RevisionHistory\",
+ \"Pagination\",
+ \"WProofreader\",
+ \"MathType\"
+ ]
+}")))
+
+(defn editor-init [elem]
+ (-> js/ClassicEditor
+ (.create elem ckeditor-config)
+ (.catch (fn [err] (js/console (.error err))))))
+
(hiccups/defhtml template-generic-form [jsonobj namespace]
[:div {:id "form-errormsg"}]
[:form {:name (get jsonobj "name")
@@ -72,6 +178,19 @@
:rows "10"
:cols "80"}
(get form-field "value")]]]
+ (= (get form-field "fieldType") "ckeditor")
+ [:div {:class "form-group row"}
+ (when (get form-field "label")
+ [:label {:for (get form-field "name")
+ :class "col-form-label col-sm-2"
+ :style "text-align: right"}
+ (get form-field "label")
+ (when (get form-field "required")
+ " *")])
+ [:div {:class "col-sm-10"}
+ [:textarea {:name (get form-field "name")
+ :id (get form-field "name")}
+ (get form-field "value")]]]
(= (get form-field "fieldType") "datetime-local")
[:div {:class "form-group row"}
(when (get form-field "label")