[Модуль] Simple Calendar (app_calendar)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Ср мар 21, 2018 6:54 pm

у меня 506 такая
$due_time_next_month=mktime(1, 1, 1, date('m', $time_next_month), $tmp[2], date('Y', $time_next_month));

512 такая
} elseif ($rec['REPEAT_TYPE']==9) {
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Календарь/менеджер задач

Сообщение fandaymon » Ср мар 21, 2018 7:00 pm

Вот так должна выглядеть функция task_done

Код: Выделить всё

function task_done($id) {
  //DebMes("Task $id is DONE! Congratulations!!!");
  $rec=SQLSelectOne("SELECT * FROM calendar_events WHERE ID='".(int)$id."'");
  $rec['DONE_WHEN']=date('Y-m-d H:i:s');
  $rec['IS_DONE']=1;

  $tmp=explode('-', $rec['DUE']);
  $due_time=mktime(1, 1, 1, $tmp[1], $tmp[2], $tmp[0]);

  if ($rec['IS_REPEATING']) {
   $rec['IS_DONE']=0;
   if ($rec['REPEAT_TYPE']==1) {
    // yearly task
    $due_time_next_year=mktime(1, 1, 1, $tmp[1], $tmp[2], $tmp[0]+1);
    $rec['DUE']=date('Y-m-d', $due_time_next_year);
   } elseif ($rec['REPEAT_TYPE']==2) {
    // monthly task
    $time_next_month=$due_time+31*24*60*60;
    $due_time_next_month=mktime(1, 1, 1, date('m', $time_next_month), $tmp[2], date('Y', $time_next_month));
    $rec['DUE']=date('Y-m-d', $due_time_next_month);
   } elseif ($rec['REPEAT_TYPE']==3) {
    // weekly task
    $due_time_next_week=$due_time+7*24*60*60;
    $rec['DUE']=date('Y-m-d', $due_time_next_week);
   } elseif ($rec['REPEAT_TYPE']==9) {
    // custom repeat task
    if ($rec['IS_REPEATING_AFTER']) {
     $rec['DUE']=date('Y-m-d', time()+$rec['REPEAT_IN']*24*60*60);
    } else {
     $rec['DUE']=date('Y-m-d', $due_time+$rec['REPEAT_IN']*24*60*60);
    }
   }
  }

  $rec['LOG']=date('Y-m-d H:i:s').' Task marked DONE'."\n".$rec['LOG'];

  SQLUpdate('calendar_events', $rec);

  if ($rec['DONE_SCRIPT_ID']) {
   runScript($rec['DONE_SCRIPT_ID'], $rec);
  }

 } 
За это сообщение автора fandaymon поблагодарил:
Logrus (Ср мар 21, 2018 7:11 pm)
Рейтинг: 1.16%
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Ср мар 21, 2018 7:12 pm

пропадает в пропущенных с 59, до 28 дней, потом в сегодня задваивается, потом одна остается и растет с каждым нажатием месяц (и в скоро +30 дней)

п.с. еще вопрос, а LOG не нужно будет чистить и можно ли автоматом?
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Календарь/менеджер задач

Сообщение fandaymon » Ср мар 21, 2018 8:50 pm

Чтобы не двоились сегодняшние таски надо найти строчку 255 (у меня) и добавить в ней AND IS_REPEATING=0, чтобы получилось так

$tasks_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id WHERE TO_DAYS(DUE)=TO_DAYS(NOW()) AND IS_DONE=0 AND IS_TASK=1 AND IS_REPEATING=0 ORDER BY IS_TASK DESC");
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Ср мар 21, 2018 9:04 pm

разобрался почему строки не совпадают, я с последним видимо напутал ((
обновил, внес оба изменения, задваивание пропало в обоих, но не уходит из сегодня, только месяц прибавляет (во я озадачил всех, сорри)
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Календарь/менеджер задач

Сообщение fandaymon » Ср мар 21, 2018 9:06 pm

По поводу лога - там тип поля TEXT, так что специально чистить не надо - я так понимаю это такая идея автора - чтобы в этом поле хранилась вся история выполнения таска...
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Календарь/менеджер задач

Сообщение fandaymon » Ср мар 21, 2018 9:16 pm

Logrus писал(а):разобрался почему строки не совпадают, я с последним видимо напутал ((
обновил, внес оба изменения, задваивание пропало в обоих, но не уходит из сегодня, только месяц прибавляет (во я озадачил всех, сорри)
Мда - и не пропадёт, потому что для повторяющихся ежемесячных сравнивается только день. Ну тогда так надо сделать
СпойлерПоказать

Код: Выделить всё

$tasks_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE TO_DAYS(DUE)=TO_DAYS(NOW()) AND IS_DONE=0 AND IS_TASK=1  ORDER BY IS_TASK DESC");
  if ($tasks_today) {
   foreach($tasks_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }


$events_early_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE TO_DAYS(DATE(CONCAT_WS('-', DATE_FORMAT(NOW(), '%Y'), DATE_FORMAT(DUE, '%m'), DATE_FORMAT(DUE, '%d'))))=TO_DAYS(NOW()) AND IS_REPEATING=1 AND REPEAT_TYPE=1 AND IS_TASK=0 ORDER BY IS_TASK DESC");
  if ($events_early_today) {
   foreach($events_early_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }
  $events_monthly_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE TO_DAYS(DATE(CONCAT_WS('-', DATE_FORMAT(NOW(), '%Y'), DATE_FORMAT(NOW(), '%m'), DATE_FORMAT(DUE, '%d'))))=TO_DAYS(NOW()) AND IS_REPEATING=1 AND REPEAT_TYPE=2 AND IS_TASK=0 ORDER BY IS_TASK DESC");
  if ($events_monthly_today) {
   foreach($events_monthly_today as $k=>$v) {
    $events_today[]=$v;
    //$calendar_categories[$k1]['EVENTS_TODAY'][]=$v;
   }
  }
  $events_weekly_today=SQLSelect("SELECT calendar_events.*,calendar_categories.ICON FROM calendar_events left join calendar_categories on calendar_events.calendar_category_id=calendar_categories.id  WHERE DATE_FORMAT(DUE, '%w')=DATE_FORMAT(NOW(), '%w') AND IS_REPEATING=1 AND REPEAT_TYPE=3 AND IS_TASK=0 ORDER BY IS_TASK DESC");
В первом селекте IS_REPEATING=0 убрать, в 3 следующих добавить IS_TASK=0
За это сообщение автора fandaymon поблагодарил:
Logrus (Ср мар 21, 2018 9:23 pm)
Рейтинг: 1.16%
Logrus
Сообщения: 2084
Зарегистрирован: Пт апр 07, 2017 12:20 pm
Благодарил (а): 313 раз
Поблагодарили: 457 раз

Re: Календарь/менеджер задач

Сообщение Logrus » Ср мар 21, 2018 9:18 pm

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

п.с. заменил, и само пропало, дату откатил, появилось в пропущенных, кликнул ушло в выполненные
СПАСИБО
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Календарь/менеджер задач

Сообщение fandaymon » Ср мар 21, 2018 9:31 pm

Logrus писал(а):"специально чистить не надо" - в смысле они будет само, то что оно полезно понятно, не раздует, то я вот натыкал уже, охххх )))
В смысле там будет хранится столько текста сколько надо 8-) По логике это поле, наверное, надо выводить при редактировании задачи, примерно как это сделано в шаблонах
Logrus писал(а): п.с. заменил, и само пропало, дату откатил, появилось в пропущенных, кликнул ушло в выполненные
СПАСИБО
Ну и хорошо - ошибку выявили, локализовали и исправили 8-)
За это сообщение автора fandaymon поблагодарил:
Logrus (Ср мар 21, 2018 9:36 pm)
Рейтинг: 1.16%
Аватара пользователя
webms
Сообщения: 498
Зарегистрирован: Чт дек 15, 2016 3:13 am
Благодарил (а): 221 раз
Поблагодарили: 88 раз

Re: Календарь/менеджер задач

Сообщение webms » Чт мар 22, 2018 6:02 pm

Готово!
PS: Со временем мб какие то идеи еще придут, сделаю. Отправьте пожалуйста новый дизайн и обновленный код Сергею.
Вложения
2018-03-22_18-02-57.png
2018-03-22_18-02-57.png (26.39 КБ) 3249 просмотров
new_templates_calendar.zip
(29.02 КБ) 97 скачиваний
За это сообщение автора webms поблагодарили (всего 2):
fandaymon (Чт мар 22, 2018 6:11 pm) • Logrus (Чт мар 22, 2018 7:02 pm)
Рейтинг: 2.33%
Ответить