view release on metacpan or search on metacpan
  * Many fixes to support running uninstalled or installed, from test script
  * Add probably-needed dependencies to avoid user head-scratching
  * Use ShareDir for static and template content
  * Update documentation for new standalone script capability
1.111970  2011-07-16 14:27:32 Europe/London
  * Port to Dist::Zilla
libews-calendar-viewer-perl (0.03) UNRELEASED; urgency=low
  * Fix dependencies
  * Fix tests
 -- Oliver Gorwits <oliver.gorwits@oucs.ox.ac.uk>  Thu, 25 Feb 2010 15:18:02 +0000
libews-calendar-viewer-perl (0.01) UNRELEASED; urgency=low
  * Initial release on an unsuspecting world.
 -- Oliver Gorwits <oliver.gorwits@oucs.ox.ac.uk>  Mon, 22 Feb 2010 23:51:24 +0000
Changes
LICENSE
MANIFEST
MANIFEST.SKIP
META.json
META.yml
Makefile.PL
README
bin/ews_calendar_viewer_cgi.pl
bin/ews_calendar_viewer_fastcgi.pl
bin/ews_calendar_viewer_server.pl
examples/ews_calendar_viewer.conf
lib/EWS/Calendar/Viewer.pm
lib/EWS/Calendar/Viewer/Controller/Calendar.pm
lib/EWS/Calendar/Viewer/Controller/Root.pm
lib/EWS/Calendar/Viewer/Model/EWSClient.pm
lib/EWS/Calendar/Viewer/View/TT.pm
share/day.tt
share/month.tt
share/static/css/screen.css
share/static/images/arrow_refresh_small.png
share/static/images/calendar_view_day.png
share/static/images/email.png
share/wrapper.tt
MANIFEST.SKIP view on Meta::CPAN
examples/ews_calendar_viewer_local.conf
Makefile.PL view on Meta::CPAN
my %WriteMakefileArgs = (
  'ABSTRACT' => 'View Your MS Exchange Calendar as a Standalone Web App',
  'AUTHOR' => 'Oliver Gorwits <oliver@cpan.org>',
  'BUILD_REQUIRES' => {},
  'CONFIGURE_REQUIRES' => {
    'ExtUtils::MakeMaker' => '6.30',
    'File::ShareDir::Install' => '0.03'
  },
  'DISTNAME' => 'EWS-Calendar-Viewer',
  'EXE_FILES' => [
    'bin/ews_calendar_viewer_fastcgi.pl',
    'bin/ews_calendar_viewer_cgi.pl',
    'bin/ews_calendar_viewer_server.pl'
  ],
  'LICENSE' => 'perl',
  'NAME' => 'EWS::Calendar::Viewer',
  'PREREQ_PM' => {
    'Calendar::Simple' => '0',
    'Catalyst' => '0',
    'Catalyst::Action::RenderView' => '0',
    'Catalyst::Controller' => '0',
    'Catalyst::Model::Adaptor' => '0',
    'Catalyst::Plugin::ConfigLoader' => '0',
    This can be set to "public" to show only your free/busy status,
    "limited" to show the title of the event as well, or "private" to show
    all details of the event in a tooltip.
  start_of_week
    Set this to a number from 0 to 6 representing Sunday through to Saturday
    respectively.
  EWS Client
    You'll need to set the server fully qualified domain name, and username
    for the calendar's account. The password can be set in the file using
    the "password" option or via the environment variable "EWS_PASS".
    If the Exchange server uses NTLM Negotiated Auth then also pass the
    following:
     <Model::EWSClient>
         <args>
             use_negotiated_auth = 1
         </args>
     </Model::EWSClient>
    you get an "Error: Unauthorised" response then you probably need the
    setting.
QUICK START SCRIPT
    This application brings with it a lightweight web server environment, so
    you can get up and running quickly. First, install the module and its
    dependencies.
    Then create a configuration file as in the "SYNOPSIS" section, above,
    and save it in your current directory as
    "ews_calendar_viewer_local.conf". Finally, run the
    "ews_calendar_viewer_server.pl" script. It listens on port 3000 by
    default but you can change that (see "--help"):
     $> EWS_PASS=s3kr1t ews_calendar_viewer_server.pl
     [info] EWS::Calendar::Viewer powered by Catalyst 5.80032
     You can connect to your server at http://localhost:3000
AUTHOR
    Oliver Gorwits <oliver@cpan.org>
COPYRIGHT AND LICENSE
    This software is copyright (c) 2011 by Oliver Gorwits.
    This is free software; you can redistribute it and/or modify it under
bin/ews_calendar_viewer_cgi.pl view on Meta::CPAN
#!/usr/bin/env perl
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('EWS::Calendar::Viewer', 'CGI');
1;
=head1 NAME
ews_calendar_viewer_cgi.pl - Catalyst CGI
=head1 SYNOPSIS
See L<Catalyst::Manual>
=head1 DESCRIPTION
Run a Catalyst application as a cgi script.
=head1 AUTHORS
bin/ews_calendar_viewer_fastcgi.pl view on Meta::CPAN
#!/usr/bin/env perl
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('EWS::Calendar::Viewer', 'FastCGI');
1;
=head1 NAME
ews_calendar_viewer_fastcgi.pl - Catalyst FastCGI
=head1 SYNOPSIS
ews_calendar_viewer_fastcgi.pl [options]
 Options:
   -? -help      display this help and exits
   -l --listen   Socket path to listen on
                 (defaults to standard input)
                 can be HOST:PORT, :PORT or a
                 filesystem path
   -n --nproc    specify number of processes to keep
                 to serve requests (defaults to 1,
                 requires -listen)
bin/ews_calendar_viewer_server.pl view on Meta::CPAN
         (-d './examples' ? './examples' : './');
}
use Catalyst::ScriptRunner;
Catalyst::ScriptRunner->run('EWS::Calendar::Viewer', 'Server');
1;
=head1 NAME
ews_calendar_viewer_server.pl - Catalyst Test Server
=head1 SYNOPSIS
ews_calendar_viewer_server.pl [options]
   -d --debug           force debug mode
   -f --fork            handle each request in a new process
                        (defaults to false)
   -? --help            display this help and exits
   -h --host            host (defaults to all)
   -p --port            port (defaults to 3000)
   -k --keepalive       enable keep-alive connections
   -r --restart         restart when files get modified
                        (defaults to false)
lib/EWS/Calendar/Viewer.pm view on Meta::CPAN
event in a tooltip.
=head2 start_of_week
Set this to a number from 0 to 6 representing Sunday through to Saturday
respectively.
=head2 EWS Client
You'll need to set the server fully qualified domain name, and username for
the calendar's account. The password can be set in the file using the
C<password> option or via the environment variable C<EWS_PASS>.
If the Exchange server uses NTLM Negotiated Auth then also pass the following:
 <Model::EWSClient>
     <args>
         use_negotiated_auth = 1
     </args>
 </Model::EWSClient>
lib/EWS/Calendar/Viewer.pm view on Meta::CPAN
If you're unsure whether NTLM is required, try it without and if you get an
C<Error: Unauthorised> response then you probably need the setting.
=head1 QUICK START SCRIPT
This application brings with it a lightweight web server environment, so you
can get up and running quickly. First, install the module and its
dependencies.
Then create a configuration file as in the L</SYNOPSIS> section, above, and
save it in your current directory as C<ews_calendar_viewer_local.conf>.
Finally, run the C<ews_calendar_viewer_server.pl> script. It listens on port
3000 by default but you can change that (see C<--help>):
 $> EWS_PASS=s3kr1t ews_calendar_viewer_server.pl
 [info] EWS::Calendar::Viewer powered by Catalyst 5.80032
 You can connect to your server at http://localhost:3000
=head1 AUTHOR
Oliver Gorwits <oliver@cpan.org>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2011 by Oliver Gorwits.
lib/EWS/Calendar/Viewer/Controller/Calendar.pm view on Meta::CPAN
}
use strict;
use warnings FATAL => 'all';
use base qw( Catalyst::Controller );
use DateTime;
use Calendar::Simple ();
__PACKAGE__->config->{namespace} = 'calendar';
sub index : Chained('/base') PathPart('') Args(0) {
    my ( $self, $c ) = @_;
    $c->stash->{calendar} = Calendar::Simple::calendar(
        $c->stash->{now}->month,
        $c->stash->{now}->year,
        $c->config->{start_of_week},
    );
    $c->forward('retrieve');
    $c->stash->{template} = 'month.tt';
}
sub get_year : Chained('/base') PathPart('') CaptureArgs(1) {
lib/EWS/Calendar/Viewer/Controller/Calendar.pm view on Meta::CPAN
}
sub custom_month : Chained('get_month') PathPart('') Args(0) {
    my ($self, $c) = @_;
    $c->forward('index');
}
sub retrieve : Private {
    my ($self, $c) = @_;
    $c->stash->{entries} = $c->model('EWSClient')->calendar->retrieve({
        start => $c->stash->{now},
        end   => $c->stash->{now}->clone->add( months => 1 ),
    })->items;
    $c->stash->{retrieved} = DateTime->now();
}
1;
share/month.tt view on Meta::CPAN
    [% SET prev_month = now.clone.subtract('months',1) %]
    <span class="tiddler"><a href="[%
        c.uri_for( c.controller('Calendar').action_for('custom_month'), [prev_month.year, prev_month.strftime('%m')] )
    %]">[% prev_month.month_abbr %]</a></span>
    [% now.month_name %] [% now.year %]
    <span class="tiddler"><a href="[%
        c.uri_for( c.controller('Calendar').action_for('custom_month'), [next_month.year, next_month.strftime('%m')] )
    %]">[% next_month.month_abbr %]</a></span>
</h2>
<table class="calendar">
<tr>
    [% FOREACH item IN days %]
        <th>[% item %]</th>
    [% END %]
</tr>
[% FOREACH week IN calendar %]
<tr>
    [% FOREACH day IN week %]
        [% IF day %]
            <td class="inmonth">
                [% INCLUDE day.tt %]
            </td>
        [% ELSE %]
            <td class="notinmonth"> </td>
            [% NEXT %]
        [% END %]
share/static/css/screen.css view on Meta::CPAN
#content a:link,
#content a:visited {
    border-bottom: 1px dotted #DD0000;
}
#content a:hover,
#content a:focus {
    border-bottom-style: solid;
}
#content .calendar a:hover {
    background: #f0f0f0;
}
/* MONTH TABLE */
#content .calendar {
    margin-left: auto;
    margin-right: auto;
    margin-bottom: 1em;
}
#content .calendar th {
    padding: 5px;
    border: 1px solid #ddd;
    background: #f0f0f0;
}
#content .calendar td {
    text-align: center;
    padding: 0;
    width: 14%;
    vertical-align: top;
}
#content .calendar td.inmonth {
    background-color: #f3f3f3;
    height: 8em;
}
#content .calendar td.notinmonth {
    height: 8em;
}
/* DAY TABLE */
#content .day {
    border-spacing: 0px;
    width: 100%;
}