editor-modal-editorselect.vue 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template lang='pug'>
  2. v-dialog(v-model='isShown', persistent, max-width='700', no-click-animation)
  3. v-btn(fab, fixed, bottom, right, color='grey darken-3', dark, @click='goBack', style='width: 50px;'): v-icon mdi-undo-variant
  4. v-card.radius-7(color='blue darken-3', dark)
  5. v-card-text.text-center.py-4
  6. .subtitle-1.white--text {{$t('editor:select.title')}}
  7. v-container(grid-list-lg, fluid)
  8. v-layout(row, wrap, justify-center)
  9. v-flex(xs4)
  10. v-hover
  11. template(v-slot:default='{ hover }')
  12. v-card.radius-7.primary.animated.fadeInUp(
  13. hover
  14. light
  15. ripple
  16. )
  17. v-card-text.text-center(@click='')
  18. img(src='/svg/editor-icon-api.svg', alt='API', style='width: 36px; opacity: .5;')
  19. .body-2.blue--text.mt-2.text--lighten-2 API Docs
  20. .caption.blue--text.text--lighten-1 REST / GraphQL
  21. v-fade-transition
  22. v-overlay(
  23. v-if='hover'
  24. absolute
  25. color='primary'
  26. opacity='.8'
  27. )
  28. .body-2.mt-7 Coming Soon
  29. v-flex(xs4)
  30. v-hover
  31. template(v-slot:default='{ hover }')
  32. v-card.radius-7.primary.animated.fadeInUp.wait-p1s(
  33. hover
  34. light
  35. ripple
  36. )
  37. v-card-text.text-center(@click='')
  38. img(src='/svg/editor-icon-wikitext.svg', alt='WikiText', style='width: 36px; opacity: .5;')
  39. .body-2.blue--text.mt-2.text--lighten-2 Blog
  40. .caption.blue--text.text--lighten-1 Timeline of Posts
  41. v-fade-transition
  42. v-overlay(
  43. v-if='hover'
  44. absolute
  45. color='primary'
  46. opacity='.8'
  47. )
  48. .body-2.mt-7 Coming Soon
  49. v-flex(xs4)
  50. v-card.radius-7.animated.fadeInUp.wait-p2s(
  51. hover
  52. light
  53. ripple
  54. )
  55. v-card-text.text-center(@click='selectEditor("code")')
  56. img(src='/svg/editor-icon-code.svg', alt='Code', style='width: 36px;')
  57. .body-2.primary--text.mt-2 Code
  58. .caption.grey--text Raw HTML
  59. v-flex(xs4)
  60. v-card.radius-7.animated.fadeInUp.wait-p1s(
  61. hover
  62. light
  63. ripple
  64. )
  65. v-card-text.text-center(@click='selectEditor("markdown")')
  66. img(src='/svg/editor-icon-markdown.svg', alt='Markdown', style='width: 36px;')
  67. .body-2.primary--text.mt-2 Markdown
  68. .caption.grey--text Plain Text Formatting
  69. v-flex(xs4)
  70. v-hover
  71. template(v-slot:default='{ hover }')
  72. v-card.radius-7.primary.animated.fadeInUp.wait-p2s(
  73. hover
  74. light
  75. ripple
  76. )
  77. v-card-text.text-center(@click='')
  78. img(src='/svg/editor-icon-tabular.svg', alt='Tabular', style='width: 36px; opacity: .5;')
  79. .body-2.blue--text.mt-2.text--lighten-2 Tabular
  80. .caption.blue--text.text--lighten-1 Excel-like
  81. v-fade-transition
  82. v-overlay(
  83. v-if='hover'
  84. absolute
  85. color='primary'
  86. opacity='.8'
  87. )
  88. .body-2.mt-7 Coming Soon
  89. v-flex(xs4)
  90. v-card.radius-7.animated.fadeInUp.wait-p3s(
  91. hover
  92. light
  93. ripple
  94. )
  95. v-card-text.text-center(@click='selectEditor("ckeditor")')
  96. img(src='/svg/editor-icon-ckeditor.svg', alt='Visual Editor', style='width: 36px;')
  97. .body-2.mt-2.primary--text Visual Editor
  98. .caption.grey--text Rich-text WYSIWYG
  99. .caption.blue--text.text--lighten-2 {{$t('editor:select.cannotChange')}}
  100. v-card.radius-7.mt-2(color='teal darken-3', dark)
  101. v-card-text.text-center.py-4
  102. .subtitle-1.white--text {{$t('editor:select.customView')}}
  103. v-container(grid-list-lg, fluid)
  104. v-layout(row, wrap, justify-center)
  105. v-flex(xs4)
  106. v-hover
  107. template(v-slot:default='{ hover }')
  108. v-card.radius-7.animated.fadeInUp(
  109. hover
  110. light
  111. ripple
  112. )
  113. v-card-text.text-center(@click='fromTemplate')
  114. img(src='/svg/icon-cube.svg', alt='From Template', style='width: 42px; opacity: .5;')
  115. .body-2.mt-1.teal--text From Template
  116. .caption.grey--text Use an existing page...
  117. v-flex(xs4)
  118. v-hover
  119. template(v-slot:default='{ hover }')
  120. v-card.radius-7.animated.fadeInUp.wait-p1s(
  121. hover
  122. light
  123. ripple
  124. )
  125. v-card-text.text-center(@click='selectEditor("redirect")')
  126. img(src='/svg/icon-route.svg', alt='Redirection', style='width: 42px; opacity: .5;')
  127. .body-2.mt-1.teal--text Redirection
  128. .caption.grey--text Redirect the user to...
  129. v-flex(xs4)
  130. v-hover
  131. template(v-slot:default='{ hover }')
  132. v-card.radius-7.teal.animated.fadeInUp.wait-p2s(
  133. hover
  134. light
  135. ripple
  136. )
  137. v-card-text.text-center(@click='')
  138. img(src='/svg/icon-sewing-patch.svg', alt='Code', style='width: 42px; opacity: .5;')
  139. .body-2.mt-1.teal--text.text--lighten-2 Embed
  140. .caption.teal--text.text--lighten-1 Include external pages
  141. v-fade-transition
  142. v-overlay(
  143. v-if='hover'
  144. absolute
  145. color='teal'
  146. opacity='.8'
  147. )
  148. .body-2.mt-7 Coming Soon
  149. v-hover
  150. template(v-slot:default='{ hover }')
  151. v-card.radius-7.mt-2(color='indigo darken-3', dark)
  152. v-toolbar(dense, flat, color='light-green darken-3')
  153. v-spacer
  154. .caption.mr-1 or convert from
  155. v-btn.mx-1.animated.fadeInUp(depressed, color='light-green darken-2', @click='', disabled)
  156. v-icon(left) mdi-alpha-a-circle
  157. .body-2.text-none AsciiDoc
  158. v-btn.mx-1.animated.fadeInUp.wait-p1s(depressed, color='light-green darken-2', @click='', disabled)
  159. v-icon(left) mdi-alpha-c-circle
  160. .body-2.text-none CREOLE
  161. v-btn.mx-1.animated.fadeInUp.wait-p2s(depressed, color='light-green darken-2', @click='', disabled)
  162. v-icon(left) mdi-alpha-t-circle
  163. .body-2.text-none Textile
  164. v-btn.mx-1.animated.fadeInUp.wait-p3s(depressed, color='light-green darken-2', @click='', disabled)
  165. v-icon(left) mdi-alpha-w-circle
  166. .body-2.text-none WikiText
  167. v-spacer
  168. v-fade-transition
  169. v-overlay(
  170. v-if='hover'
  171. absolute
  172. color='light-green darken-3'
  173. opacity='.8'
  174. )
  175. .body-2 Coming Soon
  176. page-selector(mode='select', v-model='templateDialogIsShown', :open-handler='fromTemplateHandle', :path='path', :locale='locale', must-exist)
  177. </template>
  178. <script>
  179. import _ from 'lodash'
  180. import { sync, get } from 'vuex-pathify'
  181. export default {
  182. props: {
  183. value: {
  184. type: Boolean,
  185. default: false
  186. }
  187. },
  188. data() {
  189. return {
  190. templateDialogIsShown: false
  191. }
  192. },
  193. computed: {
  194. isShown: {
  195. get() { return this.value },
  196. set(val) { this.$emit('input', val) }
  197. },
  198. currentEditor: sync('editor/editor'),
  199. locale: get('page/locale'),
  200. path: get('page/path')
  201. },
  202. methods: {
  203. selectEditor (name) {
  204. this.currentEditor = `editor${_.startCase(name)}`
  205. this.isShown = false
  206. },
  207. goBack () {
  208. window.history.go(-1)
  209. },
  210. fromTemplate () {
  211. this.templateDialogIsShown = true
  212. },
  213. fromTemplateHandle ({ id }) {
  214. this.templateDialogIsShown = false
  215. this.isShown = false
  216. this.$nextTick(() => {
  217. window.location.assign(`/e/${this.locale}/${this.path}?from=${id}`)
  218. })
  219. }
  220. }
  221. }
  222. </script>
  223. <style lang='scss'>
  224. </style>