Практически добил (дописал, сейчас усиленно тестирую) новый функционал в движке Blog Micro, теперь есть возможность делать отложенные записи и черновики. Кроме того, стало возможным менять дату поста - раньше такая фича отсутствовала в принципе, но раз уж связался с черновиками, решил и с изменением даты публикации решить вопрос.
Для удобства работы с датами прицепил календарик на JavaScript. На то было две причины, во-первых, хотелось чтобы было удобно. А в во-вторых, и это наверное главное, нужно было избежать вечной путаницы при вбивании даты - всегда забываешь, в каком формате нужно писать и через какой разделитель. Можно конечно заморачиваться, и писать всякие там проверки, но очень хотелось этого избежать. Так что - полез искать удобный date picker на яваскрипте. Как водится, пришлось перебрать кучу скриптов, хотелось что-то удобное и симпатичное.
В итоге нашлось два, которые мне понравились. Это Date Input и некий Unobtrusive Date-Picker Widget, оба довольно приятно выглядят. Остановился на втором, потому что первый более не поддерживается автором (но это фиг бы с ним) и отказался работать в IE9 (а вот это уже хуже). Объём кода там немаленький (под 150 Кб, если с комментариями и прочим мусором), но после сжатия Closure compiler'ом получились приемлимые 50 Кб. Сгодится, учитывая что используется этот код только для админки, т.е. сам блог лишний код тянуть не будет.
Вопрос с отложенными постами решил максимально просто - указывается дата в обозримом будущем, и в назначеный час пост отображается в блоголенте (а также будет доступен через поиск). В списке постов, что в админке, он будет отображаться серым цветом, это подразумевает что он "неактивен". Кроме того, список постов в этом списке сортируется по дате, так что думаю всё это в совокупности даёт вполне наглядную картину. Вот так примерно это выглядит, я сделал пару верхних постов "отложенными":
С черновиками чуть иначе. Сначала думал просто ставить дату на 50-100 лет вперёд, но тогда появилась бы проблема - как отличить отложенную публикацию от черновика? Пихать в список постов ещё и даты мне точно не хочется - это ведёт к загромождению админки практически ненужной инфой (ну какая к чертям разница, когда именно были опубликованы такие-то посты?). В итоге, решил сделать в базе отдельное поле status, в котором буду группировать все флаги поста (уже имеющиеся - "оплаченые" и "комменты закрыты", тоже перенёс туда). Полагаю, что так будет и удобно, и наглядно. Да, дата для черновиков таки переносится на будущее - с одной целью, чтобы они всегда были на виду, и случайно не "уехали" вниз в списке постов. Черновик подразумевает работу с ним, если он будет перед глазами - это лишний стимул дописать его и перевести в статус "нормального поста".
Ну и в картинках. Вот чем будет визуально отличаться отложенная запись в блоге, от черновика (иконка слева). Для самого нижнего поста поставил статус "оплаченый пост" и "комментарии закрыты", обратите внимание, что эти статусы тоже обозначены соответствующими иконками:
Ну и, наконец, последний скриншот на сегодня. Так выглядит работа со свойствами поста: над датой и статусом. Я думаю тут всё понятно, и в особых комментариях не нуждается. По клику на иконке календаря открывается тот самый JS Date Picker, впрочем никто не мешает ввести дату и вручную, это тоже работает.
На этом пока всё. Продолжаю работу над релизом, фактически осталось доделать всего пару вещей, и причесать файл конфига. Хочу разбить переменные на секции, что относится к "морде" блога, а что к админке - пока там всё вперемешку. Надеюсь выложить полноценный релиз Blog Micro на неделе.
Для удобства работы с датами прицепил календарик на JavaScript. На то было две причины, во-первых, хотелось чтобы было удобно. А в во-вторых, и это наверное главное, нужно было избежать вечной путаницы при вбивании даты - всегда забываешь, в каком формате нужно писать и через какой разделитель. Можно конечно заморачиваться, и писать всякие там проверки, но очень хотелось этого избежать. Так что - полез искать удобный date picker на яваскрипте. Как водится, пришлось перебрать кучу скриптов, хотелось что-то удобное и симпатичное.
В итоге нашлось два, которые мне понравились. Это Date Input и некий Unobtrusive Date-Picker Widget, оба довольно приятно выглядят. Остановился на втором, потому что первый более не поддерживается автором (но это фиг бы с ним) и отказался работать в IE9 (а вот это уже хуже). Объём кода там немаленький (под 150 Кб, если с комментариями и прочим мусором), но после сжатия Closure compiler'ом получились приемлимые 50 Кб. Сгодится, учитывая что используется этот код только для админки, т.е. сам блог лишний код тянуть не будет.
Вопрос с отложенными постами решил максимально просто - указывается дата в обозримом будущем, и в назначеный час пост отображается в блоголенте (а также будет доступен через поиск). В списке постов, что в админке, он будет отображаться серым цветом, это подразумевает что он "неактивен". Кроме того, список постов в этом списке сортируется по дате, так что думаю всё это в совокупности даёт вполне наглядную картину. Вот так примерно это выглядит, я сделал пару верхних постов "отложенными":
С черновиками чуть иначе. Сначала думал просто ставить дату на 50-100 лет вперёд, но тогда появилась бы проблема - как отличить отложенную публикацию от черновика? Пихать в список постов ещё и даты мне точно не хочется - это ведёт к загромождению админки практически ненужной инфой (ну какая к чертям разница, когда именно были опубликованы такие-то посты?). В итоге, решил сделать в базе отдельное поле status, в котором буду группировать все флаги поста (уже имеющиеся - "оплаченые" и "комменты закрыты", тоже перенёс туда). Полагаю, что так будет и удобно, и наглядно. Да, дата для черновиков таки переносится на будущее - с одной целью, чтобы они всегда были на виду, и случайно не "уехали" вниз в списке постов. Черновик подразумевает работу с ним, если он будет перед глазами - это лишний стимул дописать его и перевести в статус "нормального поста".
Ну и в картинках. Вот чем будет визуально отличаться отложенная запись в блоге, от черновика (иконка слева). Для самого нижнего поста поставил статус "оплаченый пост" и "комментарии закрыты", обратите внимание, что эти статусы тоже обозначены соответствующими иконками:
Ну и, наконец, последний скриншот на сегодня. Так выглядит работа со свойствами поста: над датой и статусом. Я думаю тут всё понятно, и в особых комментариях не нуждается. По клику на иконке календаря открывается тот самый JS Date Picker, впрочем никто не мешает ввести дату и вручную, это тоже работает.
На этом пока всё. Продолжаю работу над релизом, фактически осталось доделать всего пару вещей, и причесать файл конфига. Хочу разбить переменные на секции, что относится к "морде" блога, а что к админке - пока там всё вперемешку. Надеюсь выложить полноценный релиз Blog Micro на неделе.