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

13 августа, 2009
simple tasks

Уделяете ли вы внимание организации своей работы?
Много ли у вас "мелких" дел, о которых вы регулярно забываете?

Вроде бы простые вопросы, но для многих людей (и я не исключение) организация работы – это актуальная проблема.

Хуже всего, когда нужно сделать много «мелких» дел, которые не занимают много времени, но обязательно должны быть выполнены вовремя… и держать в голове их все просто невозможно.

Естественно, разработчики реагируют на потребности рынка, и на сегодняшний день создано множество программ-органайзеров, различных напоминалок и т.п.
Примеры создания ToDo списков часто приводят в учебниках по программированию.

Я решил не оставаться в стороне и сделал собственный вариант такого ToDo списка, естественно, с некоторыми дополнительными возможностями.

Кстати, скрипт называется SimpleTasks.

Главная особенность – возможность указывать состояние выполнения задач. При этом используется специальная система обозначений.

symbols for paper notebook with description

Систему обозначений придумал не я. Но, к сожалению, не могу найти первоисточник (UPD. Огромное спасибо Smarty за ссылку на оригинал). Предназначена она для использования с бумажным блокнотом и довольно удобная. Во всяком случае, читать такой список задач становится намного легче. Взгляд сразу отбрасывает выполненные задачи.

Но возможности web приложений намного шире, чем у обычного ежедневника. Например, можно сделать систему фильтров и легко работать с большими списками задач.

В общем, я написал небольшое web приложение, использующее эту систему обозначений.

Если есть желание, можете поиграться с ним (логин admin@todo.loc, пароль password).

демонстрационный пример

Или скачать архив и установить на своем сервере (инструкция в архиве).

архив с исходным кодом

Принцип работы.

Создание новой записи.
Кликаем по ссылке "Новая запись" (справа в верхней части страницы) и в открывшемся окне вводим данные записи.
При клике по полю "Дата" будет открыт календарь. Т.е. ввести дату в неправильном формате довольно проблематично.

Редактирование.
Клик или двойной клик на соответствующем поле позволяет изменить его. Открываетеся либо диалог, либо inline редактор.

Удаление.
Кликните по картинке с изображением крестика в соответствующей строке и подтвердите удаление.

Фильтры.
Позволяют выбрать задачи с определенным состоянием в указанном диапазоне дат.

Ссылки в верхнем меню дублируют наиболее распространенные (на мой взгляд) фильтры.

Состояние работ.
На данный момент это только бета версия.
Еще не доделана локализация. Доступен только один вариант – русский.
Возможно, отсутствуют некоторые сообщения об ошибках.

Скорее всего, некоторые функции будут дорабатываться.

И я очень хочу услышать ваше мнение!

Прежде всего, меня интересуют такие вопросы.

1) Есть ли смысл делать подобное приложение многопользовательским? Т.е. технически это совсем не сложно, вопрос в том будет ли кто-то в рамках небольшой организации использовать такое приложение для хранения заметок сотрудников?

2) Какие еще функии вы бы добавили?

3) Может кто-то видел хороший тьюториал о локализации JS приложений? (Сейчас я ориентируюсь на то, как сделана локализация в jQuery UI).

P.S. На этих выходных я уезжаю догуливать остатки отпуска, поэтому прошу прощения, если не сразу отвечу на ваши комментарии. Я обязательно их прочитаю… даже спаммерские ;)

Понравилась статья? Подписывайтесь на продолжение rss link !

Или на мой твиттер twitter link

]]>

Добавьте эту страницу в google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

]]>

Опубликовано в Ajax, CSS, CodeIgniter, HTML, JavaScript, MySQL, PHP, Web разработка, htaccess View Comments

]]>
  • Искал нечто похожее. (долго)
    Обязательно посмотрю. Спасибо!
  • L&M
    1) Логин для демо указан admin@todo.l вместо admin@todo.loc
    2) Для страницы приветствия - IMHO: если title содержит русский текст ("Вход | ToDo list"), то он должен идти после объявления шрифта: иначе IE может выдать белый лист.

    За скрипт спасибо.
  • логин - спасибо, исправил.

    Русский текст в title. Я с таким не сталкивался. И каким образом мне объявить шрифт до тега title?
  • Отличный скрипт. Почитал комментарии выше: соглашусь, что вот эти кругляши как то отвлекают. А функциональность хорошая, и добавлять ничего не надо.
  • Спасибо, я сразу не понял о чем речь.
    В начале ленты комментариев есть небольшое обсуждение этой системы.
  • А еще есть javascript версия почти такого же ежедневника, там все сохраняется в cookie и страницы не перезагружаются.
  • А ссылочкой не поделитесь? ;) Мне будет очень интересно взглянуть.
  • VRuslan
    У меня выдает ошибку,

    "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 не может сохранить данные сессии в базе.
  • VRuslan
    Владимир, спасибо за быстрый ответ,
    действительно была ошибка имени пользователя,
    однако теперь не может найти стартовую страницу,
    по "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."
  • VRuslan
    Разобрался - упустил в конфиге заполнить поле index_page, сорри, ламер. Работают обе Ваши версии.

    Владимир, огромное спасибо за интересный скрипт, будет мне очень полезным как начинающему разработчику в CodeIgniter!
  • Вы качали это приложение по ссылке из этого поста или последнюю версию?
    А что выводится когда вы заходите на
    http://localhost/tasks/
  • а! думаю важное дополнение - возможность через сам скрипт завести нового пользователя с новым логином паролем, ну или возможность править старого.
  • По моему отличный ToDo скрипт. По поводу "неоправданно усложнён" - не согласен, немного поработать и привыкнешь.
    Идея на счет корпоративного ToDo листа, очень интересна, т.к. в последнее время вижу очень много решений для индивидуального пользования, а коллективных ToDo скриптов я еще не видел.
  • Корпоративные ToDo листы существуют, но обычно это многопользовательские сложные системы, с различными ролями, возможностями оставлять задания другим пользователям и т.п.

    Я думаю добавить просто возможность регистрации нескольких пользователей, т.е. у каждого будет свой собственный отдельный ToDo лист.
    Просто приложение не нужно будет устанавливать отдельно для каждого пользователя.
  • mihdan
    Дизайн в порядке, музыка уж точно не в тему. Нахера навязывать что-то пользователю. У Лебедева по этому вопросу есть заметка в его Ководстве - советую посмотреть
  • Хорошая статья, со звуком точно будет перебор
  • В принципе, скрипт хорош. Функционально соответствует объявленному назначению. Весь вопрос в том, как выделить его из большого числа органайзеров. Можно поробовать доработать дизайн, может сделать его со звуком и анимацией.
  • Перебор в смысле звука, немного анимации не повредит.
  • >> доработать дизайн

    Обязательно!

    >> сделать его со звуком и анимацией

    По-моему перебор.
  • на счет важности задания - пропущенным заданиям, (т.е. срок выполнения которых прошел, а они еще не выполнены) автоматом присваивать высокий приоритет.
  • Интересный скрипт. Скачал, немного помучал.
    Есть несколько пожеланий:
    - добавить возможность добавления периодически самосоздаваемых зданий, например "заплатить за свет ДД.ММ.ГГ".
    - насчет диапазона дат не уверен, если он будет оставаться по возможности простым сервисом, ИМХО вполне достаточно указания дедлайна для тикета;

    Думаю обязательно нужно добавить:
    - многопользовательский режим;
    - коментарии к заданиям;
  • Спасибо за советы!
    Но периодически самосоздаваемых зданий создаваемых заданий скорее всего не будет, во всяком случае в ближайших планах. Это функционал календаря (например, в Google календарь их удобно создавать) или напоминалки, а не ToDo списка.
  • еще предложения по внешнему виду:
    1.не уверен на счет создание новой записи, но редактирование существующей я бы заменил на инлайн вариант.
    2. сменил бы окошко выбора статуса задания (с кружочками которое), думаю лучше смотрелась всплывающая по щелчку небольшая панелька (в одну строчку) возле самой записи.
  • Пожалуй я скачаю
  • и еще одно предложение, может стоит брать задний наискосок полосатый план у диалоговых окон? На мой взгляд он только раздражает.
  • Оформлением я практически не занимался. Полосатый план - это стандартный фон у диалогов jQuery UI. Естественно его можно изменить. Но совсем без фона тоже плохо. Он подчеркивает, что нельзя работать с другими элементами управления пока открыт диалог.
  • заменить на другой, просто серое затемнение, к примеру. Просто именно полосатый лично у меня вызывает рябь в глазах.
  • Согласен, полосатый не очень удачный.
  • С картинками это круто придумано!
    Спасибо за информацию!
    ;)
  • Прикольный шаблон на сайте. Откуда взяли? Мне кстать локализации от Гудвина нравятся. Советую
  • Шаблон мой собственный.
  • Понятно что он не знает такой кодировки, вопрос в том, можно ли с этим что-то сделать с минимальными усилиями и не сильно беспокоя хостера?

    И еще предложение: может стоит перевести скрипт на Sqlite или другое файловое решение, не требующее сервера бд? Проще с установкой (на мой взгляд такие прикладные решения для одного человека должны работать в режиме скопировал и запустил), проще сделать портабл версию на флешке.
  • Переход на sqlite - возможно. В следующей версии :)
  • что-то мне при импорте БД в 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
  • ну значит я правильно сделал что поправил его у себя)
  • val
    Спасибо
    очень интирестно
    надо бы многопользовательское))

    а вообще клева! я допишу если что) выложу
  • Можно еще добавить функцию подзадач. И (ну тут не уверен) автоматическое изменение задачи-родителя. Т.е. если выполнено 50% задач - соответствующий кружок закрашивается наполовину и т.п.
  • 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!
    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 :) ). I plan to add English language support in nearest future.
    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!
  • 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 :D
  • Thanks! I will update this image.
    Really, with this line circle looks like Cancelled.
  • 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.
  • Огромное спасибо всем за замечания и найденные баги!

    По-поводу новых возможностей.
    Мне не хочется превращать приложение в систему управления задачами корпоративного уровня :) (да и вряд ли у меня это получится... без команды).
    В любом случае писал все это ориентируясь на индивидуального пользователя и свой стиль работы с бумажным ежедневником. А он такой: то, что нужно сделать сию секунду я не записываю, а просто делаю, все, что "не горит" - записываю подходящую дату, сделал - закрасил кружок.
    Поэтому и идеи насчет таймеров мне в голову не приходили. В microToDo, кстати, это очень интересная функция.

    @Steward
    C inline редакторами я похоже зря выпендривался. Во-первых, не доделал (они должны закрываться при клике по другому полю), во-вторых, я уже сам чувствую, что удобнее было бы открывать диалог (и, кстати, реализовать проще).

    Еще раз огромное всем спасибо!!!
    Постараюсь следующую версию выпустить с меньшим количеством багов :)
  • Интересный и полезный скриптик, правда вот кружечки немного путают как то непрывычно, или это может так сначала)

    Правда я для себя уже нашел другой скрипт myTinyTodo - http://www.pozdeev.com/mytinytodo/
  • Письма о новых комментариях достал из "спама" в gmail, имей в виду.
    Честно говоря, сам не знаю, как с этим бороться. Возможно, заголовки у писем не те, или ещё что-то.
  • ааа... при нажатии на "Выйти" даже подтверждение не спрашивается!!! ааааааа

    ааа... при внесении изменений можно безболезненно перейти по любой ссылке - сохранены ли изменения - систему не волнует. Ещё раз усиленно рекомендую сделать редактирование задач не инлайн - а лайтбоксом с блокировкой всего экрана до нажатия на кнопки "Сохранить" или "Отмена"
  • ааа... при удалении задачи по умолчанию фокус на кнопке "Удалить"... никогда так не делайте!!!!!

    ааа... все действия, выполняемые пользователем должны содержать глаголы в повелительном наклонении... не "Новая запись" (я ваще не сразу догадался что туда надо нажимать) - а "Добавить новую запись" - и если это действие, а не ссылка на новую страницу - почему оно при наведении курсора подчёркивается как ссылка... устоявшаяся практика - подчёркивание шрихами.

    ааа... вообще это так задумано?
    http://clip2net.com/clip/m11645/1250238782-clip-12kb.png
    если да - то хреново задумано :) - намного приятнее было бы если бы по клику на строке появлялся лайтбокс на редактирование задачи (аналогично вводу новой задачи или редактировании статуса)

    а вообще всё круто :))) - отличная работа
blog comments powered by Disqus ]]>