%#============================================================================ %# ePortal - WEB Based daily organizer %# Author - S.Rusakov %# %# Copyright (c) 2000-2003 Sergey Rusakov. All rights reserved. %# This program is free software; you can redistribute it %# and/or modify it under the same terms as Perl itself. %# %# %#---------------------------------------------------------------------------- % $Calendar = new ePortal::HTML::Calendar; % $Calendar->url_all('self'); % @date = $Calendar->date;
<& SELF:draw_calendar &> <% $Calendar->draw %> <& SELF:find_next_event &>
<& SELF:todo_dialog &>
% undef $Calendar; %#=== @METAGS todo_dialog ==================================================== <%method todo_dialog><%perl> my %args = $m->request_args; my $todo = new ePortal::App::Organizer::ToDo; $todo->org_id($session{_org_id}); $dlg = new ePortal::HTML::Dialog(); my $location = try { $dlg->handle_request(obj => $todo, objid => 0 ); } catch ePortal::Exception::DataNotValid with { my $E = shift; $session{ErrorMessage} = $E->text; ''; }; <% $dlg->dialog_start( action => "todo_qadd.htm", formname => "todo_qadd", title => pick_lang(rus => "Мои дела", eng => "My tasks"), title_url => href("todo_list.htm", org_id => $session{_org_id}), title_popup => pick_lang(rus => "Открыть список дел", eng => "Show a list of TODO"), x_button => 0, ) %> <% pick_lang(rus => "Быстро добавить", eng => "Quick add") %>:
<% CGI::hidden({-name => 'org_id', -value => $session{_org_id} }) %> % my $counter=1; % $todo->restore_where(org_id => $session{_org_id}, undone => 1); % while ($todo->restore_next) { % my $bgcolor = $counter++ % 2 == 0? '#FFFFFF' : '#eeeeee'; $todo->id) %>" title="<% $todo->memo |h%>"> <% $todo->title %> <% img( src => "/images/ePortal/ok.gif", title => pick_lang(rus => "Пометить как выполненное", eng => "Mark as completed"), href => href("todo_ok.htm", objid => $todo->id)) %> % } <% $dlg->dialog_end %> %#=== @metags draw_calendar ==================================================== <%method draw_calendar> <%perl> my %args = $m->request_args; my $events = new ePortal::App::Organizer::Calendar; my $busy_slots = 0; for my $h (8..19) { my @m = qw/00 30 00/; my @align = qw/left right/; foreach my $t (0..1) { my $d1 = sprintf "%04d.%02d.%02d %02d:%s", @date, $h, $m[$t]; my $d2 = sprintf "%04d.%02d.%02d %02d:%s", @date, $h+$t, $m[$t+1]; my $d1_sql = (($h == 8) and ($t == 0)) ? sprintf "%04d.%02d.%02d %02d:%s", @date, 0, $m[$t] : $d1; my $d2_sql = (($h == 19) and ($t == 1)) ? sprintf "%04d.%02d.%02d %02d:%s", @date, 23, 59 : $d2; <%perl> $events->restore_where(where => "(datestart >= '$d1_sql' and datestart <'$d2_sql')", org_id => $session{_org_id}); my ($counter, $content); while($events->restore_next) { my $duration_slots = int($events->duration / 30); $busy_slots = $busy_slots > $duration_slots ? $busy_slots : $duration_slots; $content .= $counter++ ? "
": undef; $content .= q{ $events->id) . q{"} . q{ title="} . $events->memo . "\n" . $events->duration . pick_lang(rus=>" мин", eng => " min") . q{">}; $content .= $events->title . ""; $content .= icon_delete( $events ); } $content .= " "; % }}
0, dt=>$d1, org_id => $session{_org_id}) %>" title="<% pick_lang(rus => "Назначить встречу на", eng => "Assign appointment at") %> <% $h %>:<% $m[$t] %>"> <% $h %>:<% $m[$t] %> "> <% $content %>
%#=== @METAGS find_next_event ==================================================== <%method find_next_event><%perl> my %args = $m->request_args; my $c = new ePortal::App::Organizer::Calendar; my $next_day = $c->find_next_day_event($session{_org_id}, \@date); my $prev_day = $c->find_prev_day_event($session{_org_id}, \@date);
% if ($prev_day) { <% plink("<<<", -href => $Calendar->self_url(cal_date => $prev_day), title => pick_lang(rus => "Предыдущий день с событием", eng => "Previous day with an event")) %> % } % if ($prev_day and $next_day) {  · · ·  % } % if ($next_day) { <% plink(">>>", -href => $Calendar->self_url(cal_date => $next_day), title => pick_lang(rus => "Следующий день с событием", eng => "Next day with an event")) %> % }
%#=== @metags once ========================================================= <%once> my ($dlg, $obj); my @date; my $Calendar; %#=== @metags cleanup ========================================================= <%cleanup> ($dlg, $obj, @date, $Calendar) = (); %#=== @METAGS Title ==================================================== <%method Title><%perl> my $c = new ePortal::HTML::Calendar; return pick_lang(rus => "Ежедневник: ", eng => "Daily: ") . sprintf("%02d.%02d.%04d г.", reverse $c->date);