Всплывающая картинка
3.07.2020 22:27:55
А ведь я сделал, чтобы при наведении на ссылку возникало окно с изображением по этой ссылке! Теперь надо только поиграться с его размещением и отфильтровать именно ссылки на изображения.
И оказалось совсем не сложно. Впрочем, это теперь не сложно. А ведь еще неделю назад это было бы совсем по другому!
Лайков: 0
Лайки 4
2.07.2020 22:38:56
Сделал все для обсуждений и блога. Надо было только распространить на остальные контроллеры и шаблоны.
Перенес на сервер. Работает вроде бы.
Вообще, с лайками помучиться пришлось, поизучать js. Зато продвинулся в его изучении. Точнее, в js + jQuery. Получил хороший опыт. И понятно, что скорее всего не оптимально все реализовано. Но оно реализовано, реализовано самостоятельно, и оно работает. Я доволен. Получил гораздо больше опыта, чем при ковырянии в чужом коде imagepool. Хотя не будь его, все было бы сложнее. Некоторые вещи там подсмотрены. Типа передачи ссылки на нужный базовый адрес для скрипта в шаблоне по невидимому идентификатору.
Лайков: 0
Лайки 3
1.07.2020 20:01:16
Много времени потратил на то, чтобы заработало хоть что-то. Синтаксис тот еще у js, а со средствами отладки не шибко знаком. Пришлось по шагам, алертить промежуточные результаты.
И очень долго пытался вытащить атрибут "href" по "id" структуры типа:
<p id='id'><a href='нужный путь'><img scr='путь к картинке'></a></p>
с помощью скрипта вида:
$('#wt').on('click', 'a[href]', function(evt){evt.preventDefault(); alert ($(evt.target).attr('href'));
При нажатии на картинку определяется элемент "img", а не "a[href]", его атрибуты читаются, а "href" нет, он при этом undefined.
Убрал картинку, добавил текст. Все отлично работает. Добавил картинку к тексту, при нажатии на текст работает, на картинку нет.
Решение: ищем "href" ближайшего элемента типа "a".
$('#wt').on('click', 'a[href]', function(evt){evt.preventDefault(); alert ($(evt.target).closest('a').attr('href'));
Такое работает. Видимо, несмотря на поиск элемента типа "a", находится элемент, на который произведен клик - "img". Поэтому он не имеет атрибута "href". И как узнать заранее, что не "a", а "img" выберется? Может быть, я неправильно выбираю объект, но this здесь не работает тоже. Просто не знаю, что еще может быть. Возможно, данное решение не оптимальное, но оно работает. Здесь по крайней мере. Кстати, для текста оно тоже работает.
upd. вечер 01.07.2020. Заставил нормально работать лайки для темы на странице обсуждения темы. Для списка комментариев там же и для списка тем пока не реализовал. Там еще текущий номер сообщения или темы надо получить.
Лайков: 0
Лайки 2
1.07.2020 12:55:51
Сделал модель для хранения данных о лайках пользователя для обсуждений и комментариев. Сделал ограничение на +1/-1 лайк (дизлайк). Сделал разное отображение и поведение картинок лайк/дизлайк при их наличии, чтобы нельзя было повторно лайкать. Начал пытаться написать скрипт для обработки json-ответа.
И тут опять какие-то непонятки пошли. Делаю функцию $("#like_topic").on("click"... для перехвата клика по картинке. А она выполняется сразу при загрузке страницы, причем дважды. В процессе разбирательств упростил скрипт до предела:
$(document).ready(function() {
alert (6);
});
Он выполняется при загрузке страницы дважды!!!
Ссылка в шаблоне на внешний скрипт сделана одна. Я не понимаю, как работает этот... js! Жаль, но внутренний цензор не допускает выражения переполняющих эмоций.
Во всех браузерах так. Явно где-то видимо косяк есть, но вот где? Я же начинал с такого же скрипта, все работало нормально!
upd. Ссылка на скрипт внутри main-блока была, в то время как в базовом шаблоне место для внешних скриптов вне этого блока размещено. Переместил. Теперь один раз запускается.
Но функция .on("click" все равно запускается при загрузке, а не по клику! Ррррр!!!
Лайков: 0
Сбой базы данных
30.06.2020 18:48:51
Сегодня утром произошел сбой базы данных, я заходил с утра, еще работало все. А днем обнаружил, что все умерло и что отладочный режим еще впридачу включен. Ужасно. Сейчас только перезапустил. Потеряно 11 отсчетов метеосервиса.
Лайков: 0
Лайки
29.06.2020 22:35:26
Начал реализацию лайков. Нашел картинки. Вставил в модель тем обсуждений и в комментарии. Можно плюсовать и минусовать. Пока без ограничений по числу, модель юзер-лайков надо будет отдельно сделать. Возврат информации через json, но скрипты для обработки пока не писал. Ну и понятно, это пока на локалхосте. На сервер поедет готовое решение.
Кстати, с картинками гораздо веселее все смотрится. Все же надо дизайнить. Сейчас, после "курса молодого бойца", многие вещи делаются легко и непринужденно. Надо пробовать, я сейчас гораздо подготовленнее, чем был тройку месяцев назад. По крайней мере, те изменения, которые сделал за последние дни раньше ковырял бы втрое дольше.
Лайков: 0
Уведомление об ответах
29.06.2020 19:43:12
Сделал уведомление об ответах в темах обсуждений. Уведомления приходят автору темы. Пока что считаю, что на чужие комментарии после своего комментария для неавторов темы такое делать не нужно. В крайнем случае, на будущее будет ветка развития. Веточка.
Сделал через подсчет в контекст-процессоре и вывод в контекст базового шаблона в инфу пользователя справа вверху.
Проба для п.7 задач на будущее от 20.06.2020: Лох
Скопировал с pythonanywhere, где вставлял ссылки на карты когда-то.
Лайков: 0
Ответы в темах обсуждений
28.06.2020 22:30:42
Сделал, проверил работу на локалхосте. Перенес на сервер, но страница с обсуждениями поломалась, ошибка 500. Некогда разбираться, потом. При этом сами обсуждения доступны.
upd.29.06.2020. Починил. При пустой выборке надо было условие прописать.
Лайков: 0
Сортировка тем обсуждений
27.06.2020 22:24:55
Сделал сортировку. Реализация оказалась не такая, как предполагал. Думал в контроллере сделать список со списком с темами и с временем последнего комментария в теме и отсортировать его по времени и сформировать список тем на основе отсортированного списка. Но django ругается на список, ей queryset подавай. Плюнул, пошел смотреть альтернативы. Как вариант, реализация свойства в модели, которое динамически вытаскивает время последнего комментария и сортировка по этому свойству. Но он мне показался менее понятным, чем реализация обычного поля, в которое заносится время последнего комментария в теме при его создании. И тупое обновление при удалении любого комментария. Запихнул на сервер.
Лайков: 0
Мысли о дальнейших шагах на основе списка задачек несколько постов ниже и не только
27.06.2020 07:36:56
1. Сортировку тем обсуждения можно сделать в контроллере по времени последних комментариев при их наличии. upd. Сделано 27.06.2020.2. Про наличие ответов в темах. Каждому пользователю надо в каждой теме запомнить номер последнего комментария. Это новая модель, многие ко многим. При посещении обсуждений запоминать несуществующие связи, при наличии смотреть число записей темы выше зафиксированного ранее номера. upd. Сделано 29.06.2020.3. В книжке прочитал про фиксирование действий пользователя в специальной модели. Нужно попробовать создать такую модель и прицепить к комментариям.upd. 08.07.2020. Делать не буду4. Нужно опробовать передачу сигналов для подсчета количества комментариев. Чтобы можно было иметь минимодельку с одним числом новых комментариев для отображения в профиле. Это "дешевле" постоянного поиска по всем темам. Но нужно ли это, под вопросом. upd. 29.06.2020. Решил, что не нужно. В контекст загнал.5. Добавить поле "лайк" к моделям комментариев и к модели статей блога. Добавить возможность лайкать через json без обновления страницы. Для того, чтобы лайк или анлайк был один от одного пользователя, сделать модель где хранить данные по лайкам. Опять многие ко многим. upd. Сделано 02.07.2020.6. Сделать возможность смотреть данные по лайкам пользователей. Делать это и кому давать права на это, отдельный вопрос, но подумать над реализацией можно.upd. 08.07.2020. Делать не буду7. Если заработает модель отслеживания действий, можно попробовать прицепить сервис по данному отслеживанию. Чтобы была возможность отбора действий интересного пользователя. Комментарии, лайки. Рейтинг?upd. 08.07.2020. Делать не буду
8. Тут возможна еще подписка с уведомлением по электронной почте. Для этого надо создать такую возможность и разобраться с языком шаблона письма.
9. Сделать возможным выборку статей блога и комментариев по времени, вставить календарик, позволяющий это реализовать.10. Внести возможность поиска, частично она была реализована, надо заново вставить. upd. 08.07.2020. Сделано.
11. Сделать динамически изменяющуюся головную страницу. Вынести туда немного последних записей блога, слайдер с тематическими картинками, может, еще чего-нибудь.
Лайков: 0
Все теги: blog media fun cloud forum vps email astro site dreams tasks all js life users MtG user Meteo pythonanywhere slider euclidea personal_messages django likes search pictures chess math gallery artist watercolor film acril pencil traveling book virus music oil pen gouache