Создание таск-трекера своими(почти) руками

+9
911

Этот пост появился благодаря этой теме на форуме. Поразмышлял, пописал код, поставил опыты и. думаю, процентов на 80 решил задачу с форума. Почему на 80, а не на все 100? Потому что понял, что таск-трекер у каждого будет со своими особенностями и не стал решать универсальную задачу. Вместо этого я сосредоточился на общей части, которая сама по себе уже продукт.

Должен разочаровать любителей «лёгкой наживы», тут придется читать мой текст и самому осмысленно выполнять несложные действия. Для работы таск-трекера будет нужен свой типа контента(ТК) и 1 дополнительный файл.

Начнём с файла, этот файл будет выводить список ТК(список заданий), относящийся к авторизованному пользователю. Чтобы ограничить круг лиц, которые могут просматривать и создавать Задания, мы, чуть позже создадим свою группу для сотрудников(staff). А сейчас скачайте  файл default_list_tasks.tpl.php  и поместите его в /templates/modern/content.

Далее работа будет в админке. Перейдите в Пользователи->Группы->Создать группу
Системное имя — staff, Заголовок — Сотрудники, Сохранить.
Создайте несколько новых пользователей, чтобы было на ком проводить испытания в дальнейшем. У этих юзеров в Группа должен стоять чекбокс на вновь созданной группе Сотрудники.

Теперь займемся ТК, жмёте Создать тип контента.

На вкладке Настройки
Системное имя tasks
Заголовок Задания
Описание Трекер заданий для группы staff
Стиль списка по умолчанию — щелкаете по полю, выбираете Таблица(default_list_tasks) и оставляете только его.

Вкладка Заголовки
Тут, на мой взгляд, не принципиально. Я изменил на task первое поле, остальное оставил как есть. Поправьте, если не прав.

Вкладка Поля

Изображение

 
Итак, отредактируем имеющиеся поля.
Заголовок: я выставил чекбокс Поле должно быть заполнено
Дата публикации: меняем название поля на Задание от. Тут имеется в виду, что задание от такого-то числа.
Автор: меняем название поля на Постановщик, Значение из профиля пользователя — никнэйм
Изображение: меняем название поля на Файл приложение, Тип поля — Файл, Заголовок ссылки на файл — Имя файла, Допустимые расширения — txt,jpg,jpeg,png,gif,doc,docx,xls,xlsx, Максимальный размер, Мб — 5
Описание: ничего не менял
Нам понадобятся ещё 3 поля, их нужно будет создать:
1. Системное имя — date_execution, Название поля — Завершить к, Тип поля — Дата, включить чекбокс Показывать время, включить чекбокс Поле должно быть заполнено
2. Системное имя — executor, Название поля — Исполнитель, Тип поля — Список, Предустановленные значения — тут вводите всех пользователей из вашей группы Сотрудники(staff) в формате 
id | nickname
id — это реальный id конкретного пользователя, nickname — его никнэейм, у вас должно получиться что-то вроде
2 | boris
4 | farkom
5 | ivanov
8 | petrov
3. Системное имя — status, Название поля — Статус, Тип поля — Список, Предустановленные значения — тут вводите статусы своих задач, у меня получилось так
0 | Новая
1 | В работе
2 | Выполненная
3 | Завершенная
Не забудьте сохранять свой труд.

Вкладка Доступ

ИзображениеИзображениеИзображениеИзображение

Сохраняем. Если вы сделали всё хорошо, то открывайте в браузере yoursite.ru/tasks и начинайте играться.После заполнения нескольких заданий у меня получилось так.

Изображение


Замечу, что я поменял порядок полей(см. первый скрин), на функциональность это не влияет, но мне так было удобнее.

Если захочется удалить, то что вы сделали, то ТК удаляется 2 щелчками, а уж с файлом здесь любой разберётся.

Плюсы данного решения:
— простое, если вы создавали свой ТК, то затруднений не должно быть,
— хорошая точка старта, если вы присматриваетесь к таск-трекеру,
— его можно расширять, модифицировать,
— применяется то, что уже заложено в движке
Минусы:
— при появлении новых пользователей их нужно вносить руками,
— тип поля Список «не резиновое», 64 значения. Но это не точно,
— код в default_list_tasks.tpl.php не универсальный (но это с одной стороны минус, а с другой плюс),
— архитектура не идеальна, но если делать всё по фен-шую, нужно писать компонент,
— установка происходит вручную, чтобы автоматизировать создание ТК и группы нужен компонент. И уже его установщик будет создавать всё необходимое.
Это на вскидку.

Планов расширять все вширь и вглубь нет, буду смотреть по ситуации. Чтобы избежать нежелательных для меня обращений, обозначу, что на предложения типа «сделайте за меня и расскажите куда вставить»  ответа не будет. С такими предложениями идите, пожалуйста, на форум. 
Если концепция понятна и вам что-то нужно расширить/модифицировать, напишите ТЗ и добро пожаловать в личку, работаю за вознаграждение. Ну или сами начните программировать. Заготовка-то есть.

Тех, кто дочитал до этого места, поздравляю с Новым годом! Будьте здоровы! 🎅

+1
Make Make 29 дней назад #

Когда-то давно я тоже озаботился этом вопросом, чтобы на базе InstantCms создать полноценную CRM-систему. С приходом связей типов контента это стало возможно, как никогда ранее. Так как служу в МЧС, то решил создать на базе движка CRM для управления пожарной частью. Сначала все строилось на типах контента, потом в течение года типы контента были переписаны так, что я уже сам не понимаю, как это все работает. Но — работает хорошо.

Немного скриншотов:

Изображение---Изображение---Изображение---Изображение

Для данной реализации было также сделано мобильное приложение, с использованием Instant Json Api. Посредством него пользователи CRM получают уведомления о новых задачах, о смене графика дежурств, об изменениях в личных данных и так далее. Система умеет предупреждать пользователей о наступлении каких-то событий — например об окончании срока годности огнетушителя или наступления планового ТО для пожарного автомобиля.

Работы на самом деле еще много, но уже сейчас система активно используется в 20 подразделениях моего региона и успешно справляется со своими задачами.

В данный момент работаю над более привлекательным видом и делаю шаблон на базе Admin Bootstrap Template.

+1
Алексей Т Алексей Т 29 дней назад #

Я видел админку- скажу что выглядит впечатляюще. И работы проделано много. Это говорит о том что в прямых руках Инстант просто конфетка! 

+1
Make Make 29 дней назад #

Да, помню показывал тебе. Но с тех пор изменилось еще больше)

0
IamB IamB 29 дней назад #

Так что же вы постеснялись показать свою работу, когда CRM обсуждалась? С другой стороны, лучше поздно, чем никогда. 🙂

0
Make Make 29 дней назад #

Я сейчас тут крайне редко и за форумом слежу мало) 

0
IamB IamB 29 дней назад #

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

0
Make Make 29 дней назад #

Я предложил бы вам поделиться с сообществом чем то более значимым

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

+2
Сергей Сергей 29 дней назад #

Дочитал до конца, и вас Новым годом! Будьте здоровы! Задумка ясна, благодарю.

+1
fincheck fincheck 29 дней назад #

Чем больше будет такого — помогающего, ускоряющего рабочих процессов, тем больше будет популярность InstantCMS. Спасибо за начало внедрения в массы.

0
IceBreaker IceBreaker 29 дней назад #

Я автор той темы на форуме. Мне уже сделали разработку, но я не могу понять почему разработчики не берутся сделать компонент нормальный, с настройками, нужна ведь людям вещь. Разработчик всегда думает, что эта штука нужна в таком виде только конкретному лицу, ТАК НЕ ВОПРОС, сделайте конструктор небольшой. 

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

Опции — что делать по завершении, по смене статуса  и еще пара тем, я просто уже не хочу углубляться. Делов на пару дней толковому программеру, это гораздо проще каких-то конструкторов шаблонов и прочего, выставили дополнялку, 10 человек купили 10-20 косарей в кармане, добавил хотелок, все обновились еще копейка и развивать можно.

А так костыли вечно на Аяксе, всё в отдельных файлах,  почему нормально не сделать не понимаю, даже за бабки

+3
IamB IamB 29 дней назад #

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

Ну, значит у вас всё ОК. Но откуда досада? Вам сделали нормальный в вашем понимании компонент?

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

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

выставили дополнялку, 10 человек купили 10-20 косарей в кармане, добавил хотелок, все обновились еще копейка

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

А так костыли вечно на Аяксе, всё в отдельных файлах,  почему нормально не сделать не понимаю, даже за бабки

Честно не понял, о чем это вы.

0
IceBreaker IceBreaker 28 дней назад #

Честно не понял, о чем это вы.

ЮГ-центру ниже ответил, там ответ

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

Просил, но три разраба отказались, один даже написал что, тот кто не выложил правильно сделал

Что-то не вижу этих позиций в вашем топике на форуме

ТЗ Есессно не на топике писалось

Ну, значит у вас всё ОК. Но откуда досада? Вам сделали нормальный в вашем понимании компонент?

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

0
IamB IamB 28 дней назад #

Досада, что компонент хотелось с настройками, 

Настройки, которые выполняются один раз, Статусы например в моем примере, не имеет смысла выносить в настройки компонента. Т.к. без особой разницы где настроить: или в компоненте или в ТК. Больше их трогать не будут.

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

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

а так сообщество поучаствовало бы.

Если компонент случился бы бесплатный — то может быть, а если платный — я бы локтями не стал толкаться.

+1
Юг-турцентр Юг-турцентр 29 дней назад #

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

0
IceBreaker IceBreaker 28 дней назад #

Так вот жалко её не вытащить с сайта, оно встроено в него и кроме как ДИСТРИБ голого сайта или как написано в посте не вытащить к сожалению, соответственно не развить разработку дальше и ни с кем не скооперироваться, все прогерам объяснял, что нужная вещь НИ ФИГА… Мол оно только тебе надо и всем надо разное, под всех не сделаешь, странно остальные дополнения под всех а это не под всех...

+1
Сергей Сергей 25 дней назад #

Благодарен  IamB, за столь простое и ёмкое решение. Просто пригодилось.

Сделано:

1. Перенёс часть  кода из файла  default_list_tasks.tpl.php в  default_list.tpl.php и переименовал снова в  default_list_tasks.tpl.php. (получил адаптивность для гадов)

2. Следовательно,3 добавил своих  полей для списка.

3. СвязиFuze и авто связи отDWD, можно прицепить что угодно, руками или автоматом.

Пытаюсь:

1. Поле список Исполнитель, хочу заменить на поле список с добавлением значений от DWD. Как то удобнее добавлять.

Но думаю что там другой формат данных, это мне не потянуть.

Отличная идея IamB, и я не программист, совсем, совсем. Никаких минусов, одни плюсы от вашей разработки!

0
IamB IamB 25 дней назад #

Благодарен  IamB, за столь простое и ёмкое решение. 

А уж как я рад вашему фидбеку! Вы первый, кто отписался, что инструкция работает (доступна для понимания), код работает, а еще больше я рад, что  этот пост стимулировал ваши собственные исследования. И вы получили новый результат, перспективы и удовольствие от работы.

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

По поводу разработок DWD я определённого сказать ничего не могу (не пользовался, кода не видел).

Отличная идея IamB, и я не программист, совсем, совсем. Никаких минусов, одни плюсы от вашей разработки!

Думаю, что моя идея вторична. А благодарить нужно R2 за то, что придумал типы контента, и Fuze за то, что писал.

+1
Сергей Сергей 25 дней назад #

R2  и Fuze без комментариев +++, думаю всё сообщество поддержит.

Сама система  располагает натворить что либо.👍 

0
Сергей Сергей 24 дня назад #

LEGO  instantcms в действии.

1. Не нашёл упоминаний о tasks в вашем файле default_list_tasks.tpl.php, следовательно можно создать несколько ТК.

2. Каждый ТК может публиковаться в своей группе, и с разными полями, названием и тематикой соответственно.

3. Сотрудники (staff) тоже видимо жёсткой привязки не имеют, можно дать разрешение Руководителям (boss), на публикацию, а Сотрудникам (staff) запретить. Четвёртый  Рим создан, один командует, другие работают.

Жаль опоздал, доставку ёлок в Питере запустить.😂 

0
IamB IamB 24 дня назад #

Как я понимаю:

1. default_list_tasks.tpl.php — это всего лишь шаблон для вывода списка ТК, выбирается он в ТК->Настройки->Стиль списка по умолчанию. Просмотр списка

2. ТК и Группа — разные сущности, но они могут группироваться, для этого применяются правила (см. вкладка Доступ)

3. Да

0
Сергей Сергей 24 дня назад #

1. О том и написал, можно выбрать в нескольких ТК( tasks и tasks2 ) стили  default_list_tasks.tpl.php и будет работать, если есть поля вами указанные для создания.

2. Группы /groups  могут  иметь привязанный ТК публиковать в группах  или только в группах.  /groups/new/content/tasks, или /groups/new/content/tasks2 можно публиковать разные задания, по теме группы /groups. Это не про группы пользователей, вы меня не поняли.

Это просто бомба, получилась, подарок на Новый Год. Есть чем занятся на выходных.

0
Сергей Сергей 24 дня назад #

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

0
IamB IamB 24 дня назад #

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

0
Роман Роман 22 дня назад #

А если для добавления пользователей (исполнителей) использовать поле Список людей

Может будет универсальней?

0
IamB IamB 22 дня назад #

Может будет универсальней?

Ничего не могу сказать по этому поводу, поскольку поле не покупал и не знаю, как оно устроено. Пробуйте. У меня есть вариант, как решать проблему добавления Сотрудников, но программным путём. 

+1
Олег Васильевич я Олег Васильевич я 21 день назад #

Ничего не могу сказать по этому поводу, поскольку поле не покупал и не знаю, как оно устроено. Пробуйте.

Имхо, это поле — полноценная CMS для создания социальной сети.

Еще от автора

Логгер для проекта
По случаю написал логгер. Конечно, можно было взять готовый, поскольку только ленивые их не писали.
Определение пути для хранения файлов сессий
Раз за разом на форуме появляются темы, связанные с определением пути хранения сессий.
web-приложение Крестики-Нолики
После публикации поста с cli-приложением я подумал, что тема Крестиков-Ноликов закрыта. Но нет, чуть позже появилась мысль написать web-приложение.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.