PHP скрипт: ToDo с картинками

Уделяете ли вы внимание организации своей работы?
Много ли у вас "мелких" дел, о которых вы регулярно забываете?
Вроде бы простые вопросы, но для многих людей (и я не исключение) организация работы – это актуальная проблема.
Хуже всего, когда нужно сделать много «мелких» дел, которые не занимают много времени, но обязательно должны быть выполнены вовремя… и держать в голове их все просто невозможно.
Естественно, разработчики реагируют на потребности рынка, и на сегодняшний день создано множество программ-органайзеров, различных напоминалок и т.п.
Примеры создания ToDo списков часто приводят в учебниках по программированию.
Я решил не оставаться в стороне и сделал собственный вариант такого ToDo списка, естественно, с некоторыми дополнительными возможностями.
Кстати, скрипт называется SimpleTasks.
Главная особенность – возможность указывать состояние выполнения задач. При этом используется специальная система обозначений.

Систему обозначений придумал не я. Но, к сожалению, не могу найти первоисточник (UPD. Огромное спасибо Smarty за ссылку на оригинал). Предназначена она для использования с бумажным блокнотом и довольно удобная. Во всяком случае, читать такой список задач становится намного легче. Взгляд сразу отбрасывает выполненные задачи.
Но возможности web приложений намного шире, чем у обычного ежедневника. Например, можно сделать систему фильтров и легко работать с большими списками задач.
В общем, я написал небольшое web приложение, использующее эту систему обозначений.
Если есть желание, можете поиграться с ним (логин admin@todo.loc, пароль password).
Или скачать архив и установить на своем сервере (инструкция в архиве).
Принцип работы.
Создание новой записи.
Кликаем по ссылке "Новая запись" (справа в верхней части страницы) и в открывшемся окне вводим данные записи.
При клике по полю "Дата" будет открыт календарь. Т.е. ввести дату в неправильном формате довольно проблематично.
Редактирование.
Клик или двойной клик на соответствующем поле позволяет изменить его. Открываетеся либо диалог, либо inline редактор.
Удаление.
Кликните по картинке с изображением крестика в соответствующей строке и подтвердите удаление.
Фильтры.
Позволяют выбрать задачи с определенным состоянием в указанном диапазоне дат.
Ссылки в верхнем меню дублируют наиболее распространенные (на мой взгляд) фильтры.
Состояние работ.
На данный момент это только бета версия.
Еще не доделана локализация. Доступен только один вариант – русский.
Возможно, отсутствуют некоторые сообщения об ошибках.
Скорее всего, некоторые функции будут дорабатываться.
И я очень хочу услышать ваше мнение!
Прежде всего, меня интересуют такие вопросы.
1) Есть ли смысл делать подобное приложение многопользовательским? Т.е. технически это совсем не сложно, вопрос в том будет ли кто-то в рамках небольшой организации использовать такое приложение для хранения заметок сотрудников?
2) Какие еще функии вы бы добавили?
3) Может кто-то видел хороший тьюториал о локализации JS приложений? (Сейчас я ориентируюсь на то, как сделана локализация в jQuery UI).
P.S. На этих выходных я уезжаю догуливать остатки отпуска, поэтому прошу прощения, если не сразу отвечу на ваши комментарии. Я обязательно их прочитаю… даже спаммерские
Понравилась статья? Подписывайтесь на продолжение
!
Опубликовано в Ajax, CSS, CodeIgniter, HTML, JavaScript, MySQL, PHP, Web разработка, htaccess Комментарии (59) »
Комментарии (59)
Вы можете отслеживать обсуждение записи с помощью RSS 2.0 ![]()
Вы также можете оставить комментарий, или трекбек с Вашего сайта.











http://lifehacker.ru/2009/06/15/gtd-v-vashem-bloknote-metod-«kruzhochkov»-i-«krestikov»/
Большое спасибо!
Вещь полезная, главное — развивать так что-бы не становилось перегруженным сложными вещами. Это трудно, но только так это останется таким же простым и удобным в использовании как сейчас.
Что бы я добавил:
— запланированная длительность конкретного дела.
— многопользовательский принцип работы, причем возможность строить иерархию должностей (хотя бы 2-3 жестко фиксированных уровня) с возможностью давать задания…. но это уже система типа trac'а…
Если есть желание развивать, с удовольствием поучаствовал бы.
Я еще не определился в какую сторону развивать приложение. Почитаю отзывы, сам поработаю
, а там будет видно.
А предложение поучаствовать я учту. В одиночку получается довольно медленно.
Прикольно. Мы с тобой почти синхронно делали свои продукты
У меня получилось microToDo (demo).
Я считаю, что твой вариант неоправданно усложнён. Кто этим будет пользоваться? Скажи честно, ты сам записываешь в таком формате, все значки эти?
Отличная работа!
Правда я не понял зачем нужен таймер. Определять время потраченное на выполнение работы?
Я действительно пользуюсь этой системой значков. Но, конечно, не всеми. Первые 5 связаны между собой, плюс еще один для важных задач. В общем-то запоминать практически нечего.
, для бумажного ежедневника – очень удобно.
Насколько удобно будет пользоваться этим web приложением я не знаю, поэтому его и написал
Таймер как мотиватор. Когда вдруг видишь, что на какую-то мелкую ерунду ушло уже 2 часа, как-то автоматически расставляются приоритеты (форумы/блоги в топку) и работа начинает идти быстрее.
А твой уж больно прост и не особо нагляден…
А вот значки для затягивающихся и откладывающихся просто необходимы (только пожалуй более наглядные и справка по ним в виде сноски) + для каждой задачи секундомер нужен, который в момент активности задачи должен щелкать, а при дезактивации записываться результат. И комментарий к задаче не помешает – не все идет в соответствии с нашими планами и учитывать форсмажеры надо.
Надеюсь не подался в бредни…
В гуглохроме наблюдаю косячок в верстке
http://narod.ru/disk/11982695000/bug%231.jpg.html
очень зачетная вещь, которую следует немного доработать немного:
1. много пользовательность
2. коменты к таскам
3. затраченое время на выполнение
и .т.д.
а вот microToDo слишком приметивно и неудобно, можно примменить развечто в составление списка покупок
ааа… при удалении задачи по умолчанию фокус на кнопке "Удалить"… никогда так не делайте!!!!!
ааа… все действия, выполняемые пользователем должны содержать глаголы в повелительном наклонении… не "Новая запись" (я ваще не сразу догадался что туда надо нажимать) – а "Добавить новую запись" – и если это действие, а не ссылка на новую страницу – почему оно при наведении курсора подчёркивается как ссылка… устоявшаяся практика – подчёркивание шрихами.
ааа… вообще это так задумано?
– намного приятнее было бы если бы по клику на строке появлялся лайтбокс на редактирование задачи (аналогично вводу новой задачи или редактировании статуса)
http://clip2net.com/clip/m11645/1250238782-clip-12kb.png
если да – то хреново задумано
а вообще всё круто
)) – отличная работа
ааа… при нажатии на "Выйти" даже подтверждение не спрашивается!!! ааааааа
ааа… при внесении изменений можно безболезненно перейти по любой ссылке – сохранены ли изменения – систему не волнует. Ещё раз усиленно рекомендую сделать редактирование задач не инлайн – а лайтбоксом с блокировкой всего экрана до нажатия на кнопки "Сохранить" или "Отмена"
Письма о новых комментариях достал из "спама" в gmail, имей в виду.
Честно говоря, сам не знаю, как с этим бороться. Возможно, заголовки у писем не те, или ещё что-то.
Интересный и полезный скриптик, правда вот кружечки немного путают как то непрывычно, или это может так сначала)
Правда я для себя уже нашел другой скрипт myTinyTodo – http://www.pozdeev.com/mytinytodo/
Огромное спасибо всем за замечания и найденные баги!
По-поводу новых возможностей.
(да и вряд ли у меня это получится… без команды).
Мне не хочется превращать приложение в систему управления задачами корпоративного уровня
В любом случае писал все это ориентируясь на индивидуального пользователя и свой стиль работы с бумажным ежедневником. А он такой: то, что нужно сделать сию секунду я не записываю, а просто делаю, все, что "не горит" – записываю подходящую дату, сделал – закрасил кружок.
Поэтому и идеи насчет таймеров мне в голову не приходили. В microToDo, кстати, это очень интересная функция.
@Steward
C inline редакторами я похоже зря выпендривался. Во-первых, не доделал (они должны закрываться при клике по другому полю), во-вторых, я уже сам чувствую, что удобнее было бы открывать диалог (и, кстати, реализовать проще).
Еще раз огромное всем спасибо!!!
Постараюсь следующую версию выпустить с меньшим количеством багов
I am really happy to see my little system go as far as to your country. I wished I could read Russian. Cheers!
You created a really handy system!
). I plan to add English language support in nearest future.
So handy that I decided to develop a small web application (ToDo list) based on your system.
Application is already available, but only in Russian language (and with some bugs
If you don't object I send you a link when it will be ready (in comments to your blog post).
Thank you very much for The Circles!
Great news! Feel free to play with this system. I am only happy if this system helps others to get a good overview of things they have to do and to get them done.
By the way: The second circle, Started should not have the line going out of the circle. There is a little misunderstanding there which I have been asked about. Because in the picture on my site is handdrawn the line extends the circle a little. But in the next step, when you fill the first half some have asked what happens to the line that extends the circle, do they have to erase it etc.. I am going to edit the picture to prevent this
Thanks! I will update this image.
Really, with this line circle looks like Cancelled.
Можно еще добавить функцию подзадач. И (ну тут не уверен) автоматическое изменение задачи-родителя. Т.е. если выполнено 50% задач – соответствующий кружок закрашивается наполовину и т.п.
Спасибо
очень интирестно
надо бы многопользовательское))
а вообще клева! я допишу если что) выложу
что-то мне при импорте БД в phpmyadmin вылетело такое
SQL-запрос:CREATE TABLE IF NOT EXISTS `st_sessions` (
`session_id` varchar( 40 ) CHARACTER SET utf8 NOT NULL default '0',
`ip_address` varchar( 16 ) CHARACTER SET utf8 NOT NULL default '0',
`user_agent` varchar( 50 ) CHARACTER SET utf8 NOT NULL ,
`last_activity` int( 10 ) unsigned NOT NULL default '0',
`user_data` text CHARACTER SET ucs2 NOT NULL ,
PRIMARY KEY ( `session_id` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1;
Ответ MySQL: Документация
#1115 - Unknown character set: 'ucs2'
Черт! Не та версия дампа. Должно быть utf8
ну значит я правильно сделал что поправил его у себя)
Понятно что он не знает такой кодировки, вопрос в том, можно ли с этим что-то сделать с минимальными усилиями и не сильно беспокоя хостера?
И еще предложение: может стоит перевести скрипт на Sqlite или другое файловое решение, не требующее сервера бд? Проще с установкой (на мой взгляд такие прикладные решения для одного человека должны работать в режиме скопировал и запустил), проще сделать портабл версию на флешке.
Переход на sqlite – возможно. В следующей версии
Прикольный шаблон на сайте. Откуда взяли? Мне кстать локализации от Гудвина нравятся. Советую
Шаблон мой собственный.
С картинками это круто придумано!
Спасибо за информацию!
и еще одно предложение, может стоит брать задний наискосок полосатый план у диалоговых окон? На мой взгляд он только раздражает.
Оформлением я практически не занимался. Полосатый план – это стандартный фон у диалогов jQuery UI. Естественно его можно изменить. Но совсем без фона тоже плохо. Он подчеркивает, что нельзя работать с другими элементами управления пока открыт диалог.
заменить на другой, просто серое затемнение, к примеру. Просто именно полосатый лично у меня вызывает рябь в глазах.
Согласен, полосатый не очень удачный.
Пожалуй я скачаю
еще предложения по внешнему виду:
1.не уверен на счет создание новой записи, но редактирование существующей я бы заменил на инлайн вариант.
2. сменил бы окошко выбора статуса задания (с кружочками которое), думаю лучше смотрелась всплывающая по щелчку небольшая панелька (в одну строчку) возле самой записи.
Интересный скрипт. Скачал, немного помучал.
Есть несколько пожеланий:
- добавить возможность добавления периодически самосоздаваемых зданий, например "заплатить за свет ДД.ММ.ГГ".
- насчет диапазона дат не уверен, если он будет оставаться по возможности простым сервисом, ИМХО вполне достаточно указания дедлайна для тикета;
Думаю обязательно нужно добавить:
- многопользовательский режим;
- коментарии к заданиям;
Спасибо за советы!
Но периодически самосоздаваемых зданий создаваемых заданий скорее всего не будет, во всяком случае в ближайших планах. Это функционал календаря (например, в Google календарь их удобно создавать) или напоминалки, а не ToDo списка.
на счет важности задания – пропущенным заданиям, (т.е. срок выполнения которых прошел, а они еще не выполнены) автоматом присваивать высокий приоритет.
В принципе, скрипт хорош. Функционально соответствует объявленному назначению. Весь вопрос в том, как выделить его из большого числа органайзеров. Можно поробовать доработать дизайн, может сделать его со звуком и анимацией.
>> доработать дизайн
Обязательно!
>> сделать его со звуком и анимацией
По-моему перебор.
Перебор в смысле звука, немного анимации не повредит.
Хорошая статья, со звуком точно будет перебор
Дизайн в порядке, музыка уж точно не в тему. Нахера навязывать что-то пользователю. У Лебедева по этому вопросу есть заметка в его Ководстве – советую посмотреть
По моему отличный ToDo скрипт. По поводу "неоправданно усложнён" – не согласен, немного поработать и привыкнешь.
Идея на счет корпоративного ToDo листа, очень интересна, т.к. в последнее время вижу очень много решений для индивидуального пользования, а коллективных ToDo скриптов я еще не видел.
Корпоративные ToDo листы существуют, но обычно это многопользовательские сложные системы, с различными ролями, возможностями оставлять задания другим пользователям и т.п.
Я думаю добавить просто возможность регистрации нескольких пользователей, т.е. у каждого будет свой собственный отдельный ToDo лист.
Просто приложение не нужно будет устанавливать отдельно для каждого пользователя.
а! думаю важное дополнение – возможность через сам скрипт завести нового пользователя с новым логином паролем, ну или возможность править старого.
У меня выдает ошибку,
"Fatal error: Call to a member function num_rows() on a non-object in X:\server\www\todo\system\libraries\Session.php on line 209"
Что делать?
Проверьте параметры доступа к БД.
Эта ошибка обычно возникает когда CI не может сохранить данные сессии в базе.
Владимир, спасибо за быстрый ответ,
действительно была ошибка имени пользователя,
однако теперь не может найти стартовую страницу,
по "http://localhost/tasks/main/login" пишет:
"The requested URL was not found on this server. If you entered the URL manually please check your spelling and try again."
Вы качали это приложение по ссылке из этого поста или последнюю версию?
А что выводится когда вы заходите на
http://localhost/tasks/
Разобрался – упустил в конфиге заполнить поле index_page, сорри, ламер. Работают обе Ваши версии.
Владимир, огромное спасибо за интересный скрипт, будет мне очень полезным как начинающему разработчику в CodeIgniter!
А еще есть javascript версия почти такого же ежедневника, там все сохраняется в cookie и страницы не перезагружаются.
А ссылочкой не поделитесь?
Мне будет очень интересно взглянуть.
Вот тут в поле "свободная цена" вводи ноль и жми на кнопку.
Спасибо, я сразу не понял о чем речь.
В начале ленты комментариев есть небольшое обсуждение этой системы.
Отличный скрипт. Почитал комментарии выше: соглашусь, что вот эти кругляши как то отвлекают. А функциональность хорошая, и добавлять ничего не надо.
1) Логин для демо указан admin@todo.l вместо admin@todo.loc
2) Для страницы приветствия – IMHO: если title содержит русский текст ("Вход | ToDo list"), то он должен идти после объявления шрифта: иначе IE может выдать белый лист.
За скрипт спасибо.
логин – спасибо, исправил.
Русский текст в title. Я с таким не сталкивался. И каким образом мне объявить шрифт до тега title?