Идеи по реализации комментариев в стиле переполнения стека - PullRequest
7 голосов
/ 27 декабря 2008

Мне очень нравится пользовательский интерфейс комментариев Stack Overflow, и я пытаюсь реализовать то же самое на своем собственном веб-сайте. Я посмотрел на код, и похоже, что основным инструментом здесь является WMD , а JQuery TextArea Resizer играет вспомогательную роль.

WMD преобразует Markdown в HTML на стороне клиента. Это довольно хорошо, потому что это помогает с предварительным просмотром, но я сталкиваюсь с проблемой при отправке этого на сервер. Если есть ошибка проверки (скажем, пользователь ввел неверный адрес электронной почты в какой-то другой части формы комментария, или он, возможно, не ввел свое имя), то сервер отвечает, снова отображая форму с сообщением об ошибке и поля формы предварительно заполнены. Только теперь текст комментария - это HTML, а не Markdown, потому что сервер даже не видел Markdown. Но я бы хотел, чтобы это был Markdown, поскольку именно это вводил пользователь.

Есть идеи здесь?

Я рассмотрел различные идеи:

  • Выполнить на стороне сервера преобразование HTML в Markdown . Не то, чтобы взволнован этой идеей. Кажется, легко снова преобразовать Markdown в HTML обратно в Markdown, и как пользователь я всегда раздражаю, когда программа переформатирует мой текст / код.
  • Проверка на стороне клиента (для усиления проверки на стороне сервера, которую я бы, конечно, сохранил). Похоже, разумное направление, хотя в настоящее время я использую reCAPTCHA в своих формах комментариев, что означает, что мне нужно опубликовать хотя бы часть reCAPTCHA на сервере.
  • Потерять ОМУ и использовать MarkdownJ для преобразования Markdown в HTML на сервере. Мне нужно искать какой-то другой механизм для выполнения функции предварительного просмотра, который я хочу сохранить.

В идеале был бы какой-то способ добраться до версии Markdown текста и отправить ее на сервер в дополнение к HTML, но мне не хватает парня из JavaScript, чтобы понять, реально ли это.

Любые предложения приветствуются.

Ответы [ 3 ]

5 голосов
/ 27 декабря 2008

См. Этот вопрос: Преобразование HTML обратно в Markdown для редактирования в wmd (yay для поля «Related» на правой панели навигации!).

5 голосов
/ 28 декабря 2008

Я бы отправил данные в виде уценки и затем позволил бы серверу преобразовать их в HTML, когда проверки пройдены. WMD имеет возможность указать формат данных, которые он будет отправлять на сервер. Просто добавьте

wmd_options = {
        //Markdown or HTML
        output: "Markdown"
    };

Перед звонком в wmd

3 голосов
/ 27 декабря 2008

Я только взглянул на ОМУ на поверхностном уровне, но отправка текстовой области на сервер кажется довольно простой - на самом деле, я не понимаю, как вы могли бы избежать этого, если текстовая область является частью вашей формы. Насколько я понимаю, ваша текстовая область содержит разметку, и WMD преобразует ее в HTML для отображения в другой части вашей страницы. Просто включите текстовое поле в форму, которая будет отправлена, и вы должны увидеть ее на стороне сервера.

...