dhilt / dharmadict

MIT License
1 stars 2 forks source link

Translators Info #39

Closed dhilt closed 6 years ago

dhilt commented 6 years ago

Пришел запрос на добавление данных о двух переводчиках

Проблема номер один заключается в том, что Кугявичус в настоящее время существует в сдвоенной ипостаси (А. Кугявичус и А.А. Терентьев).

Проблема номер два – ужасный внешний вид страниц Переводчиков.

dhilt commented 6 years ago

Таким образом нам позарез нужны Страницы на сайте, чтобы мы могли отделить Translators Info от самих Translators. Сейчас описание Переводчиков хранится в поле description, надо чтобы оно хранилось в новом типе эластик-документов, Pages. Я создал отдельное issue – https://github.com/dhilt/dharmadict/issues/40.

@khajjit Что ты об этом думаешь?

dyuvzhenko commented 6 years ago

@dhilt Если зайти на dharmadict.ru и найти страницу описания Хопкинса, то можно увидеть что у него уже есть в точности такое же описание, как в приложенном файле.

А что делать с переводом от пары А. Кугявичус - А.А. Терентьев? Допустим, мы можем разбить на Кугявичуса и Терентьева, но что делать с их переводами? Просто сделать копии и первому, и второму? Или же мы создаем Страницы на сайте, у Кугявичуса и Терентьева появляется своя уникальная страница с информацией о переводчике, но при этом их переводы сосуществует вместе (и может в дальнейшем еще будут переводы и по отдельности)?

Но меня больше всего интересует как мы будем менять базу данных. Нам ведь нужно будет взять бд с сервера и с ней уже проводить все манипуляции (ну и при этом все должно быть так, чтобы не было возможности вводить/менять данные со стороны пользователей, пока эти манипуляции идут). У меня на уме только два варианта:

  1. Для этого надо будет как-то модифицировать ./prod/db/reset.js, допустим перед началом уже готовых скриптов добавить новые, которые будут скачивать переводы во временные файлы и далее в скрипте add_translations будут браться переводы из временные файлов. Также нужен будет скрипт add_pages. И надо скорректировать add_users, удалить поле description оттуда, и разделить там Кугявичуса и Терентьева на отдельных пользователей (если нужно).
  2. Либо это должен быть некий одноразовый скрипт, который сможет удалить description у таблицы Users, далее добавить Pages и залить туда информацию о переводчиках.

Ну и еще давным давно была речь о неком новом db-migrate для базы данных - https://github.com/dhilt/dharmadict/issues/37.

dyuvzhenko commented 6 years ago

А что насчет ужасного внешнего вида страниц пользователей? Нужно уменьшить ширину серого прямоугольника, либо убрать его? Либо же надо как-то переосмыслить в целом внешний вид страницы и проявить эдакую дизайнерскую смекалку?)

dhilt commented 6 years ago

Я попробую ответить на все моменты разом.

  1. Переводчиков на уровне Translator-документов не разделяем. Описания не трогаем. Эта часть БД остается неизменной.

  2. Появляется новый тип документов, Page. С тремя основными полями (url, title, text). Создаем ряд Страниц: это О проекте и страницы Переводчиков, повторяющие существующие описания.

  3. Описание для Хопкинса я задал через интерфейс сайта.

  4. Пока по-прежнему можно не беспокоиться о данных, с их стороны не было сделано ни одной правки.

  5. В prod/db/scripts/ надо положить новый скрипт, который создаст Страницы.

  6. Текст Страницы может (и должен) включать в себя html, нужно привести это в удобоваримый вид. У меня нет представлений на этот счет, надо просто пробовать.

  7. Потребуется новый route для просмотра списка всех страниц (dharmadict.ru/pages), route для отдельно взятой страницы (dharmadict.ru/pages/:pageUrl), где :pageUrl, это значение поля url) и route для редактирования 1 страницы, доступный только админу dharmadict.ru/pages/:pageUrl/edit.

dyuvzhenko commented 6 years ago

@dhilt Почти всё сделал (результаты в бранче pages). Осталось только разобраться как сохранять html-страницы, а скорее всего разобраться в том, как бы из строки, содержащей верстку, воспроизводить эту верстку. Ну и добавить описания всех переводчиков для заполнения в базу данных.

И касательно страницы для переводчика - мы ведь вряд ли сможем провести локализацию для строки "Язык переводов: ".

dyuvzhenko commented 6 years ago

@dhilt И два вопроса есть.

  1. Насчет Pages, надо ли создавать возможность добавлять новую страницу и удалять существующую?
  2. И какие роуты с присущими им компонентами надо будет убирать - '/translator/:id/edit' и '/translator/:id'?
dhilt commented 6 years ago

@khajjit В этом ключе я предлагаю следующее решение. Мы оставляем прежний механизм по отображению страниц вида http://dharmadict.ru/translator/DON, которые локализуются, но вместо существующего описания даем ссылку на страницу из Pages (http://dharmadict.ru/pages/don), которая не локализуется. В разделе "О проекте" мы даем ссылки на нелокализуемые Pages, а в самих переводах даем ссылки первого типа (http://dharmadict.ru/translator/DON). Впоследствии мы сможем добавить произвольное кол-во страниц на любом языке (http://dharmadict.ru/pages/don_en и т.п.), добавляя ссылки в действующие описания Переводчиков.

Соответственно роут /translator/:id остается. и роут /translator/:id/edit тоже, т.к. там можно менять описание, пароль, имя...

dhilt commented 6 years ago

@khajjit И на счет функционала:

Для текста там должна быть одна большая textarea, куда можно писать html. Этот html нужно выводить as is при выводе /pages/:pageUrl.

dyuvzhenko commented 6 years ago

@dhilt Так, вроде все готово. На сервере все запросы для создания/редактирования/удаления страниц есть. На клиенте компоненты для реализации этих возможностей тоже есть, нужно только наверное для кнопки удаления страницы сделать всплывающее окошко для подтверждения действия.

Существующие описания переводчиков добавил в скрипт add_pages, и прикрепленного Кугявичуса тоже (под инициалами "AK", может надо другие инициалы, не знаю). И теперь можно в описание переводчика вносить html-элементы и это все отобразится как часть верстки.

И есть следующие вопросы/предложения:

  1. Компонент About теперь надо удалить и вместо него сделать ссылку на '/pages/about'?
  2. И есть один упущенный момент. Переводчик может менять description у документа users, но эти данные нигде не отображаются сейчас.
  3. Надо бы наверное где-то на первоначальной странице сделать ссылку, ведущую на роут /pages.
dyuvzhenko commented 6 years ago

@dhilt И еще один вопрос. Сейчас я сделал так, что при создании новой страницы можно вводить url самому. Быть может, надо было сделать только два поля - title и text, а на сервере создавать url из приходящего title?

dhilt commented 6 years ago

@khajjit Спасибо!

Момент 1, да, /pages/about это то, что там должно быть.

Момент 2 не играет большой роли, но можно это UI поле (с описанием) показывать только суперадмину (можно даже API не защищать ролью, а только авторизацией).

Момент 3 предлагаю опустить, главное дать ссылки на страницы Переводчиков внутри /pages/about.

Момент 4, я думаю, что это хорошо, что url задается админом! Ты предлагаешь хорошую идею, но не будем пытаться облегчить себе жизнь, тем более, что для СЕО-дел (не знаю, насколько это актуально в данном проекте, но все же) всегда дается возможность ручного указания url. Да, можно было бы имплементировать default, генерирующий транслит из title, но совершенно точно должна быть возможность задания url вручную.

dhilt commented 6 years ago

@khajjit Я хотел созвониться в скайпе, ты увидишь пропущенный... У меня возникла идея на тему одного нового проекта, в котором ты, как мне кажется, мог бы принять участие. Задача этого взаимодействия – облегчить жизнь команде, состоящей из меня и еще одного человека. Сроки там полтора месяца, и я готов платить какие-то деньги, зависящие от объема твоего участия. Скажи пожалуйста, рассматриваешь ли ты подобную историю? если да, нужно созвониться и попробовать проговорить основные моменты.

dyuvzhenko commented 6 years ago

@dhilt Круто, я бы с большим удовольствием поучаствовал. Только не шибко уверен насчет количества пользы, которой смогу принести - но я бы постарался. Если что, теперь доступен в скайпе.

dyuvzhenko commented 6 years ago

@dhilt Убрал компонент About, сделал ссылку на страницу /pages/about - https://github.com/dhilt/dharmadict/commit/472dd094d07de1332651e6b17cf02912ec5c66db. На этом вроде всё.

dhilt commented 6 years ago

@khajjit я БУДУ это смотреть

Скажи, пожалуйста, какой твой email? Сегодня мы работали над черновиком требований к front end для нового проекта, приблизительная картина должна сложиться, прикрепляю к сообщению –

Untitled document (1).pdf

И посмотри автономно в режиме пассивного исследования вопросы по интеграции NodeJS сервера с RabitMQ, а также использование socket.io (тоже на стороне NodeJS).

dyuvzhenko commented 6 years ago

@dhilt Мой email - yuvzhenko@inbox.ru