Circle Tasks 2: новая версия моего ToDo скрипта

18 сентября, 2009
circle tasks logo

Приветствую всех читателей!

На днях я закончил работу над второй версией ToDo скрипта и теперь хочу о нёй рассказать ;) И, самое главное, почитать ваши отзывы.

Т.к. после релиза первой версии прошло уже больше месяца, я кратко напомню, о чем идет речь.

Думаю, представить себе простейший ToDo список могут все. Это просто перечень дел с отметками «выполнено / не выполнено».

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

Для этого скрипта я использовал одну из таких систем обозначений. Её разработал Sigurdur Armannsson. Подробно её описание вы найдете в предыдущей статье.

Сейчас речь пойдет именно об изменениях по сравнению с предыдущей версией.

Сразу дам ссылки на страницу с демо версией и архив.

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

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

UPD: Добавил версию, предназначенную для установки в папку сайта, а не на отдельный хост

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

Для входа можно использовать demo аккаунт (логин: admin@todo.loc, пароль: password) или создать нового пользователя (ссылка «Регистрация» под. формой входа). Только учтите, что приложение позволяет изменять пароль, и если кто-то успеет изменить его до вас, то вам останется только регистрация.

1) Изменилось название :) . Теперь скрипт называется Circle Tasks. Это название ближе к названию оригинала.

2) Изменился дизайн. Тут изменения не очень большие. Подобраны более подходящие иконки для операций «Изменить» и «Удалить», перерисованы иконки состояний задач. Изменена цветовая гамма (надеюсь в лучшую сторону :) ).

3) Интерфейс. Вот здесь изменений больше всего.

Во-первых, я учел отличные рекомендации Steward и убрал inline редакторы. Сначала мне казалось, что они будут ускорять работу, но оказалось что это не так. Теперь чтобы изменить задачу нужно кликнуть по кнопке «Изменить», откроется форма, содержащая все необходимые поля.

update_note

Во-вторых, в меню добавлен пункт «Настройки». Он ведет на страницу, которая позволяет изменить язык приложения и пароль.

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

На данный момент доступны русский и английский языки.

4) Поддержка неограниченного количества пользователей.

Я хочу сразу пояснить, что это приложение задумывалось как однопользовательское. А «поддержка неограниченного количества пользователей» означает, что можно регистрировать сколько угодно пользователей, но ToDo список будет у каждого свой. Отправлять задания другим пользователям нельзя.

И, честно говоря, я сомневаюсь, что этот функционал нужно добавлять. Т.к. в результате получится совершенно другое приложение, более сложное и рассчитанное на другую аудиторию. Примеры таких приложений вы можете посмотреть здесь.

В общем, если я когда-нибудь и займусь такой разработкой, то это будет совершенно другое приложение, а не очередная версия Circle Tasks.

5) Уменьшился размер JS файлов. В основном за счет замены jQuery UI () на JQuery Tools.

Кстати я первый раз использовал JQuery Tools и впечатления самые положительные. Функционала, конечно, меньше, чем в jQuery UI, но его должно хватить в 90% случаев. Легко изменяется оформление компонентов. И главное преимущество – размер. В общем, всем рекомендую попробовать.

Об основных изменениях я рассказал. Если у вас возникли вопросы, замечания или пожелания, пишите, буду рад на них ответить!

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

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

]]>

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

]]>

Опубликовано в Web разработка, Разное View Comments

]]>
  • VLD
    При входе как админ пишет вот что:

    Fatal error: Call to a member function num_rows() on a non-object in Z:\home\localhost\www\circle_tasks\system\application\models\moptions.php on line 41
  • Greg
    Здраствуйте Владимир, в ваших дистро не указано как их можно использовать(я имею ввиду лицензию). Я например считаю что ваша система(to do) намного удобней чем та которой мы пользуемся в нашей конторе. Хотелось бы знать насколько ее можно использовать.
    В идеале конечно пивная лицензия(если встретимся то угощаю сколько влезет :))
  • Да, это моя недоработка :)
    Вы можете использовать код как угодно, за исключением:
    - торговли им (без меня);
    - включения в состав платных продуктов;
    - удаления моего имени и ссылок на simplecoding.org из кода.

    Т.е. можете спокойно ставить и пользоваться :)

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

    Я сам действительно пользуюсь этой системой (правда, чаще при записи дел в обычный ежедневник). И больше всего в нем мне нравится простота.

    Я написал @Alex, что учту пожелание, и я это сделаю, но это не означает, что изменения будут именно такие. Если задать время начала и окончания задания, например, с разницей в три дня и поместить все такие невыполненные задания в список "На сегодня", то название этого пункта потеряет смысл. С другой стороны, есть пункт "Не выполненные" в которые попадают все невыполненные задания. Я, например, не уверен, что хотел бы, чтобы невыполненные задания исчезали из этого списка после того как заканчивается их срок выполнения. Поэтому я пока не знаю как лучше использовать время начала и окончания задания так, чтобы всем было однозначно понятно, что при этом произойдет.

    И я с радостью приму любую помощь. В принципе, можно будет разместить исходники на google codes. Только сначала хотелось бы составить ориентировочный план действий и продумать изменения, чтобы они были понятны не только разработчикам, но и пользователям ;)
  • Прежде всего спасибо за замечательный софт, Владимир!

    Поправки, которые по-моему, сделают софт лучше:

    1. Добавить список статусов и при создании новой задачи. Довольно часто в список приходится вносить уже начатую или очень важную задачу и хочется указать это при добавлении записи, дабы не открывать ее снова.

    2. Обнуление прошлых значений полей "Создать задачу", при неоднократном добавлении задач. Довольно неюзабельно выделять текст, стирать перед вводом нового, листать выбирать новую дату, если предыдущая была "не сегодня". Хотелось бы чтобы все начиналось с чистого листа.

    3. Ну это мое имхо, сортировать по умолчанию можно по дате в убывающем порядке - новые вверху. Ведь после аяксового добавления последняя задача и так вверху.

    Хотелось бы сказать, что все эти три пункта я реализовал сегодня у себя и если понадобится, могу выслать.
  • Спасибо вам за такое внимание к моей работе! Это очень приятно.

    И за советы.
    Со вторым и третьим согласен полностью, это мои недоработки.

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

    В общем, буду благодарен, если вы пришлете код. Я напишу новый пост со
    ссылкой на вас.
  • Ваша работа заслуживает внимания. Выслал модифицированную версию.

    Вот добавил еще маленькое условие при добавлении и изменении задачи,
    при клике на статус, раньше только выпадал список.
    Теперь если он выпавший - сворачивается.

    А еще можно чекбоксы добавить в список и выполнять
    действия над несколькими задачами сразу: Удалить/Поменять статус.
    Постраничная навигация, опять же (или есть?).
    Ну и треугольнички для сортировки списков рядом с Состояние Текст Дата. Или это из категории "... и тут Остапа понесло"?
  • Alex
    Хотелось бы иметь возможность указать для задания начало и окончание, чтобы на протяжении этого периода задание было в списке на сегодня.

    А за скрипт спасибо!
  • Спасибо! Я учту пожелание.
  • Спасибо за оперативность! Но я уже... впрочем, это не важно. Всё равно СПАСИБО.
  • Пожалуйста :)
    В любом случае, эта версия уже была готова, я просто забыл выложить ссылку. Так что, это вам спасибо :)
  • Плохо, что оно в субдиректории не живёт. А искать проблемные места, так проще свою написать :)
  • Я добавил исправленную версию. Ссылка в статье. Будут проблемы, обращайтесь!
  • Гарик
    Скачал, установил на локалхосте (Денвер). При просмотре кода вдруг выяснил, что мой CuteFTP 8 не корректно отображает текст на русском (не понимает utf-8?). Победил таким способом: открывал ручками в блокноте каждый файл и копипастил в файл на локалхосте. Помогло - все формы стали отображаться на русском. Но. Возникла другая проблема (или продолжение прежней) - создаю новую запись, сохраняю её и до обновления страницы она остаётся читаемой, а после обновления страницы (после подгрузки из БД) русский текст превращается в кракозябры. При этом в БД он без кракозябр, а при отображении в форме становится кракозябрами.
    Помогите! Где ковырять?
  • Проверять все кодировки.
    1) файлов (это вы уже сделали);
    2) базы данных (нужно проверить не только кодировку таблиц, но и кодировку соединения);
    3) веб сервера.
  • при загрузке страницы в фаербурге
    K.style is undefined строка 30
    L is null строка 31
  • Если кнопки не работают, значит, либо js файлы не загрузились, либо не назначены обработчики.
    Попробуйте поставить точку останова в firebug'е и посмотреть как скрипты выполняются.
    Кроме того, в firebug'е вы можете посмотреть содержимое всех скриптов, если вы этого содержимого не видите, значит скрипты не загружены.
  • почему то линк
    a href="http://todo/#" rel="#newnote"

    нихрена не обрабатывается нормально
  • В общем так на денвере кнопки "Добавить", "Удалить" и "Редактировать" не пашут, на выделенном сервере всё окей.

    Пробовал firebug'ом глянуть - при клике по кнопке запрос появится в консоле не появился :(

    как ещё можно попробовать диагностировать проблему ?

    $config['base_url'] = "http://todo/";
  • Возникает ошибка при работе со скриптом. Не удаётся открыть даже main/login

    No input file specified.

    Пробовал ставить как в отдельную папку, так и на суб домен. Никак не могу найти где в скриптах берётся значение document_root, так как хочется всё же с папку установить =)
  • DocumentRoot - этот параметр указывается в настройках сервера (httpd.conf). В нем указывается папка в которой находятся ваши скрипты. Параметр может быть один для всего сайта или указываться отдельно для каждого виртуального домена.
    Т.е. вы должны распаковать архив с приложением в эту папку.
  • Алексей
    При добавлении и удалении, работает кнопка отмена, кнопка добавить и удалить - работает, но окно не закрывает


    Fatal error: Call to undefined function json_encode() in /system/application/controllers/main.php on line 503
  • Это значит, что на сервере не включена поддержка json.
    Либо у вас PHP 4, либо ее просто нужно включить в php.ini.
    Варианты решения. Если нет доступа к php.ini и возможности поменять сервер, то можно использовать эту функцию.
  • Алексей
    Спасибо, получилось.
    Еще один вопрос: Возможно ли в настройках отключить регистрацию, для чего настройки smtp?
  • Это стандартные настройки фреймворка (CodeIgniter). С ним в комплекте идет библиотека для отправки email. В этом приложении не используется.
  • Алексей
    application\config\email.php - там :)
  • Какие настройки smtp?
  • В конфиге отключение регистрации не предусмотрено, но вы можете заблокировать к ней доступ.
    Для этого в файле application\controllers\main.php измените строку 38.
    Текущий вариант
    $allowedPages = array('login', 'checklogin', 'register', 'checkregister');
    вам нужно
    $allowedPages = array('login');

    После этого можно убрать ссылку "Зарегистрироваться". Файл application\views\loginform.php
    Убрать нужно строку 14 в которой вызов
    anchor('main/register'...
  • Рекомендую сделать как в iPhone программе ToDo`s:
    - возможность переставлять по приоритетам (вверх или вниз)
    - три уровня важности (важный, средний и малый)
    - Заметки.

    Будет оень удобно.
  • Спасибо за совет.
    Но такие изменения приведут к изменению принципа работы. Например, сейчас можно указать состояние задачи "Важная" или "Требующая особого внимания" и выполнять поиск с учетом этих состояний. Если еще добавить и уровни важности, то, боюсь, возникнет путаница.
  • Было-бы не плохо для таска не только дату редактировать но еще и время.
    Например Task 1 нужно выполнить до 09-09-2009 14:30.

    ПС.
    Скрипт понравился. =)
  • Спасибо, учту.
  • Запрос должен уходить на
    _http://demosites.org.ua/simpletasks/main/addnote
    В адресе не должно быть index.php, т.к. .htaccess его автоматически добавляет.
    Проверьте application/config/config.php
  • VRuslan
    Владимир, у меня не добавляется новая задача - поля заполнил, дата введена в верном формате, но работает только кнопка "отмена".
    Что может быть не так?
  • Если не сложно, проверьте firebug'ом куда уходит запрос (при клике по кнопке запрос появится в консоле).
  • VRuslan
    Запрос данные передает:

    n_date 2009-09-29
    n_text Simple task

    , уходит по следующему адресу и получает ошибку:

    The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error.
  • VRuslan
    Пожелания для последующих версий:
    - реализация функций, подобных http://www.toodledo.com/info/index.php:
    1) создание представлений списка задач по периодам (на неделю, месяц...), для печати (в виде PDF-буклета);
    2) синхронизация с мобильными устройствами;

    - разделить маркеры:
    1) выполнения задачи (можно предложенные кружочки) и
    2) важности задачи (A-"важно и срочно", B-"важно", C-"срочно", D-"не важно и не срочно"), см. Тайм-менеджмент по Бодо Шеферу http://wayleader.blogspot.com/2009/04/blog-post...
    ;

    Спасибо за скрипт!
  • Спасибо за советы! Я стараюсь учитывать пожелания, но при этом по возможности оставлять приложение максимально простым.

    Например. Очень часто важные дела автоматически являются срочными.
  • Спасибо за програмку, все работает. Жду полноценной версии.
  • Поставился нормально вроде как. Но даже первую страницу не хочет открывать. Висит
  • Вы создавали виртуальный домен или ставили в отдельную папку?
    Попробуйте ввести адрес страницы вход
    http://localhost/main/login (никаких редиректов при этом отправляться не должно)
    Мне нужно больше информации чтобы понять в чем дело.
  • Ставил на поддомен на реальном хосте. Может чото с настройками PHP не так?
  • Скрипт не требует каких-то особых настроек. Если у вас работает CodeIgniter и есть доступ к MySQL, то все должно быть в порядке.

    Попробуйте просто установить CI, а потом замените папку application.
  • Не понял...

    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
  • вообще готовое приложение с открытым кодом - очень здорово, но мне как начинающему в CodeIgniter было бы здорово создание подобного приложения кратенько по шагам ...
    есть какой нить материальчик подобный ?
  • У меня была небольшая серия постов. На http://net.tutsplus.com/ есть скринкасты (на английском), официальный сайт...
  • Спасибо! Будем тестить. В связке с микроТУДУ от Тормаза думаю будет самое оно!
  • в демку тоже войти не получилось - ни со стандартной учеткой, ни с вновь зарегестрированной
    "Неверная пара логин/пароль, попробуйте ещё раз"
  • второй раз попробовал - ничего красным не обведено, кнопку "добавить" жму - а она не нажимается
blog comments powered by Disqus ]]>