App-Office-Contacts
view release on metacpan or search on metacpan
lib/App/Office/Contacts.pm view on Meta::CPAN
[
'' => {app => 'Initialize', rm => 'display'},
':app' => {rm => 'display'},
':app/:rm/:id?' => {},
],
);
builder
{
enable "ContentLength";
enable 'Static',
path => qr!^/(assets|favicon)!,
root => '/dev/shm/html';
$app;
};
The scripts discussed here, I<contacts.cgi> and I<contacts.psgi>, are shipped with this module,
in the httpd/ directory.
For more on Plack, see L<My intro to Plack|http://savage.net.au/Perl/html/plack.for.beginners.html>.
=head1 Description
C<App::Office::Contacts> implements a utf8-aware, web-based, private and group contacts manager.
Here 'private' means you can specify which contacts are not to appear in the search results of other
people using the same database. You do this by setting their visibility to 'Just me'.
C<App::Office::Contacts> uses the light-weight module L<Moo>.
Major features:
=over 4
=item o utf8-aware
=item o Any number of people
=item o Any number of organizations
=item o People can have any number of occupations
=item o Organizations can have any number of staff
=item o People and organizations can have any number of notes
These are displayed with the most recent notes first.
=item o Supports using any database server having a Perl interface
This is controlled via a config file.
=item o 1 to 4 email addresses per person or organization
4 was chosen just to limit the amount of screen real estate occupied. It can be easily changed.
=item o 1 to 4 phone numbers per person or organization
=item o Installers can provide their own FAQ page
=item o On-screen information hidden in tabs is updated if appropriate
For example, if you add a person to the staff list for an organization, and the details for that person
are on another, hidden, tab (the organization tab must have the focus), then the list of occupations for
that peson is updated as soon as they are added.
=item o jQuery-style autocomplete is used for various fields
The list of fields which support autocomplete are listed both on the appropriate forms and on the default
FAQ page.
=item o An add-on package supports importing vCards, as probably output by your email client
=item o An add-on package supports donations per person and per organization
But L<App::Office::Contacts::Donations> has not yet been updated to match V 2.00 of C<App::Office::Contacts>.
=back
Screen shots:
L<The database schema|http://savage.net.au/Module-reviews/images/Contacts/contacts.schema.png>.
L<Sample search results|http://savage.net.au/Module-reviews/images/Contacts/search.results.png>.
L<Sample personal details|http://savage.net.au/Module-reviews/images/Contacts/personal.details.png>.
The organizational details form is very similar.
=head1 Distributions
This module is available as a Unix-style distro (*.tgz).
See L<http://savage.net.au/Perl-modules/html/installing-a-module.html> for
help on unpacking and installing distros.
=head1 Installation
=head2 Installation Pre-requisites
=head3 A note to beginners
At various places I refer to a file, C<share/.htoffice.contacts.conf>,
shipped with this distro.
Please realize that if you edit this file, you must ensure the copy you are editing
is the one used by the code at run-time.
After a module such as this is installed, the code will look for that file
in the directory where I<you> have installed this config file, by running:
shell> perl scripts/copy.config.pl
The module which reads the file is L<App::Office::Contacts::Util::Config>.
scripts/copy.config.pl installs C<.htoffice.contacts.conf> into a shared directory.
So, if you unpack the distro and edit the file within the unpacked code, you will still need
to copy the patched version by running:
shell> perl scripts/copy.config.pl
shell> perl scripts/find.config.pl (as a cross-check)
Alternately, edit the installed copy rather than the copy shipped with the distro.
There is no need to restart your web server after updating this file.
=head3 jQuery, jQuery UI and DataTables
This module does not ship with any of these Javascript libraries. You can get them from:
http://jquery.com/
http://jqueryui.com/
http://datatables.net/
Most development was done using jQuery V 1.8.1, which ships with jQuery V 1.9.2. Lastly, DataTables
V 1.9.4 was used too.
( run in 0.985 second using v1.01-cache-2.11-cpan-39bf76dae61 )