gitea源码

combomarkdowneditor.tmpl 6.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. {{/* Template Attributes:
  2. * CustomInit: do not initialize the editor automatically
  3. * ContainerId: id attribute for the container element
  4. * ContainerClasses: additional classes for the container element
  5. * MarkdownPreviewInRepo: the repo to preview markdown
  6. * MarkdownPreviewContext: preview context (the related url path when rendering) for the preview tab, eg: repo link or user home link
  7. * MarkdownPreviewMode: content mode for the editor, eg: wiki, comment or default
  8. * TextareaName: name attribute for the textarea
  9. * TextareaContent: content for the textarea
  10. * TextareaMaxLength: maxlength attribute for the textarea
  11. * TextareaPlaceholder: placeholder attribute for the textarea
  12. * TextareaAriaLabel: aria-label attribute for the textarea
  13. * DropzoneParentContainer: container for file upload (leave it empty if no upload)
  14. * DisableAutosize: whether to disable automatic height resizing
  15. */}}
  16. {{$ariaLabel := or .TextareaAriaLabel .TextareaPlaceholder}}
  17. {{$repo := .MarkdownPreviewInRepo}}
  18. {{$previewContext := .MarkdownPreviewContext}}
  19. {{$previewMode := .MarkdownPreviewMode}}
  20. {{$previewUrl := print AppSubUrl "/-/markup"}}
  21. {{if $repo}}
  22. {{$previewUrl = print $repo.Link "/markup"}}
  23. {{end}}
  24. {{$supportEasyMDE := or (eq $previewMode "comment") (eq $previewMode "wiki")}}
  25. <div {{if .ContainerId}}id="{{.ContainerId}}"{{end}} class="combo-markdown-editor {{if .CustomInit}}custom-init{{end}} {{.ContainerClasses}}"
  26. data-dropzone-parent-container="{{.DropzoneParentContainer}}"
  27. data-content-mode="{{$previewMode}}"
  28. data-support-easy-mde="{{$supportEasyMDE}}"
  29. data-preview-url="{{$previewUrl}}"
  30. data-preview-context="{{$previewContext}}"
  31. >
  32. <div class="ui top tabular menu">
  33. <a class="active item" data-tab-for="markdown-writer">{{template "shared/misc/tabtitle" (ctx.Locale.Tr "write")}}</a>
  34. <a class="item" data-tab-for="markdown-previewer">{{template "shared/misc/tabtitle" (ctx.Locale.Tr "preview")}}</a>
  35. </div>
  36. <div class="ui tab active" data-tab-panel="markdown-writer">
  37. <markdown-toolbar>
  38. <div class="markdown-toolbar-group">
  39. <md-header class="markdown-toolbar-button" level="1" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.heading.tooltip"}}">{{svg "octicon-heading"}}</md-header>
  40. <md-header class="markdown-toolbar-button" level="2" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.heading.tooltip"}}">{{svg "octicon-heading"}}</md-header>
  41. <md-header class="markdown-toolbar-button" level="3" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.heading.tooltip"}}">{{svg "octicon-heading"}}</md-header>
  42. </div>
  43. <div class="markdown-toolbar-group">
  44. <md-bold class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.bold.tooltip"}}">{{svg "octicon-bold"}}</md-bold>
  45. <md-italic class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.italic.tooltip"}}">{{svg "octicon-italic"}}</md-italic>
  46. </div>
  47. <div class="markdown-toolbar-group">
  48. <md-quote class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.quote.tooltip"}}">{{svg "octicon-quote"}}</md-quote>
  49. <md-code class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.code.tooltip"}}">{{svg "octicon-code"}}</md-code>
  50. <md-link class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.link.tooltip"}}">{{svg "octicon-link"}}</md-link>
  51. </div>
  52. <div class="markdown-toolbar-group">
  53. <md-unordered-list class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.list.unordered.tooltip"}}">{{svg "octicon-list-unordered"}}</md-unordered-list>
  54. <md-ordered-list class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.list.ordered.tooltip"}}">{{svg "octicon-list-ordered"}}</md-ordered-list>
  55. <md-task-list class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.list.task.tooltip"}}">{{svg "octicon-tasklist"}}</md-task-list>
  56. <button class="markdown-toolbar-button markdown-button-table-add" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.table.add.tooltip"}}">{{svg "octicon-table"}}</button>
  57. </div>
  58. {{if eq $previewMode "comment"}}
  59. <div class="markdown-toolbar-group">
  60. <md-mention class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.mention.tooltip"}}">{{svg "octicon-mention"}}</md-mention>
  61. <md-ref class="markdown-toolbar-button" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.ref.tooltip"}}">{{svg "octicon-cross-reference"}}</md-ref>
  62. </div>
  63. {{end}}
  64. <div class="markdown-toolbar-group">
  65. <button class="markdown-toolbar-button markdown-switch-monospace" role="switch" data-enable-text="{{ctx.Locale.Tr "editor.buttons.enable_monospace_font"}}" data-disable-text="{{ctx.Locale.Tr "editor.buttons.disable_monospace_font"}}">{{svg "octicon-typography"}}</button>
  66. {{if $supportEasyMDE}}
  67. <button class="markdown-toolbar-button markdown-switch-easymde" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.switch_to_legacy.tooltip"}}">{{svg "octicon-arrow-switch"}}</button>
  68. {{end}}
  69. </div>
  70. </markdown-toolbar>
  71. <text-expander keys=": @ #" multiword="#" suffix="">
  72. <textarea class="markdown-text-editor"
  73. {{if .TextareaName}}name="{{.TextareaName}}"{{end}} {{if .TextareaMaxLength}}maxlength="{{.TextareaMaxLength}}"{{end}}
  74. {{if .TextareaPlaceholder}}placeholder="{{.TextareaPlaceholder}}"{{end}} {{if $ariaLabel}}aria-label="{{$ariaLabel}}"{{end}}
  75. {{if .DisableAutosize}}data-disable-autosize="{{.DisableAutosize}}"{{end}}
  76. >{{.TextareaContent}}</textarea>
  77. </text-expander>
  78. <script>
  79. if (localStorage?.getItem('markdown-editor-monospace') === 'true') {
  80. document.querySelector('.markdown-text-editor').classList.add('tw-font-mono');
  81. }
  82. </script>
  83. </div>
  84. <div class="ui tab" data-tab-panel="markdown-previewer">
  85. {{ctx.Locale.Tr "loading"}}
  86. </div>
  87. <div class="markdown-add-table-panel tippy-target">
  88. <div class="ui form tw-p-4 flex-text-block">
  89. <input type="number" name="rows" min="1" value="3" size="3" class="tw-w-24" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.table.rows"}}">
  90. x
  91. <input type="number" name="cols" min="1" value="3" size="3" class="tw-w-24" data-tooltip-content="{{ctx.Locale.Tr "editor.buttons.table.cols"}}">
  92. <button class="ui button primary" type="button">{{ctx.Locale.Tr "editor.buttons.table.add.insert"}}</button>
  93. </div>
  94. </div>
  95. </div>