(no commit message)
authorivan <ivan>
Sun, 16 Mar 2008 19:58:33 +0000 (19:58 +0000)
committerivan <ivan>
Sun, 16 Mar 2008 19:58:33 +0000 (19:58 +0000)
59 files changed:
fs_selfservice/fri/CHANGE.log [new file with mode: 0644]
fs_selfservice/fri/LICENSE.txt [new file with mode: 0644]
fs_selfservice/fri/README.txt [new file with mode: 0644]
fs_selfservice/fri/includes/ajax.php [new file with mode: 0644]
fs_selfservice/fri/includes/asi.php [new file with mode: 0644]
fs_selfservice/fri/includes/bootstrap.php [new file with mode: 0644]
fs_selfservice/fri/includes/common.php [new file with mode: 0644]
fs_selfservice/fri/includes/crypt.php [new file with mode: 0644]
fs_selfservice/fri/includes/database.php [new file with mode: 0644]
fs_selfservice/fri/includes/display.php [new file with mode: 0644]
fs_selfservice/fri/includes/lang.php [new file with mode: 0644]
fs_selfservice/fri/includes/login.php [new file with mode: 0644]
fs_selfservice/fri/includes/main.conf.php [new file with mode: 0644]
fs_selfservice/fri/index.php [new file with mode: 0644]
fs_selfservice/fri/locale/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/ari.utf-8.po [new file with mode: 0644]
fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/locale.txt [new file with mode: 0644]
fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/locale/readme.txt [new file with mode: 0644]
fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.mo [new file with mode: 0644]
fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.po [new file with mode: 0644]
fs_selfservice/fri/misc/audio.php [new file with mode: 0644]
fs_selfservice/fri/misc/popup.css [new file with mode: 0644]
fs_selfservice/fri/misc/recording_popup.php [new file with mode: 0644]
fs_selfservice/fri/modules/VmX.module [new file with mode: 0644]
fs_selfservice/fri/modules/callmonitor.module [new file with mode: 0644]
fs_selfservice/fri/modules/featurecodes.module [new file with mode: 0644]
fs_selfservice/fri/modules/followme.module [new file with mode: 0644]
fs_selfservice/fri/modules/phonefeatures.module [new file with mode: 0644]
fs_selfservice/fri/modules/settings.module [new file with mode: 0644]
fs_selfservice/fri/modules/voicemail.module [new file with mode: 0644]
fs_selfservice/fri/theme/global.css [new file with mode: 0644]
fs_selfservice/fri/theme/header.css [new file with mode: 0644]
fs_selfservice/fri/theme/iefixes.css [new file with mode: 0644]
fs_selfservice/fri/theme/images/arrow-asc.gif [new file with mode: 0644]
fs_selfservice/fri/theme/images/arrow-desc.gif [new file with mode: 0644]
fs_selfservice/fri/theme/layout.css [new file with mode: 0644]
fs_selfservice/fri/theme/logo.gif [new file with mode: 0644]
fs_selfservice/fri/theme/main.css [new file with mode: 0644]
fs_selfservice/fri/theme/navigation.css [new file with mode: 0644]
fs_selfservice/fri/theme/page.tpl.php [new file with mode: 0644]
fs_selfservice/fri/theme/spacer.gif [new file with mode: 0644]
fs_selfservice/fri/theme/text.css [new file with mode: 0644]
fs_selfservice/fri/version.php [new file with mode: 0644]

diff --git a/fs_selfservice/fri/CHANGE.log b/fs_selfservice/fri/CHANGE.log
new file mode 100644 (file)
index 0000000..f25712b
--- /dev/null
@@ -0,0 +1,271 @@
+
+
+Change log - 05/02/2006
+
+ * update of french translation (submitted by Xavier Ourcière)
+
+Change log - 04/28/2006
+
+ * changed PEAR portability flags to try and fix a bug a user is having (maybe a buggy or old version of PEAR on users machine)
+ * fixed no voicemail message to be more intuitive
+ * fixed ajax bug
+ * fixed German i18n translation bug (requested by Wanninger)
+ * fixed settings recording format bug
+ * fixed settings call forward bug
+
+Change log - 04/10/2006
+
+ * added autoplay of recordings (requested by Robert LaPoint)
+ * refactored the response from the asterisk manager interface so do not always have to strip off "value:" from the response
+
+Change log - 04/04/2006
+
+ * abstracted the doc_root (PHP_SELF) to a variable to handle cases where it is not set properly (requested by Diego Iastrubni)
+ * removed error message about user voicemail directory (submitted by Diego Iastrubni)
+ * added feature to login to allow voicemail include files with wildcards (submitted by Diego Iastrubni)
+ * made voicemail password length message more accurate and descriptive on settings page (submitte by Robert Colbert)
+ * added outbound caller id record matching for call monitor page for results returned to individual users (requested by Robert LaPoint) 
+ * fixed AJAX bug that kept giving javascript errors.  Now form, pass, and parse a full xml doc
+ * fixed bug in description of dial code in help settings page (submitte by Robert Colbert)
+ * fixed bug to disable AJAX if using a browser that does not support AJAX
+ * updated Italian Translation (contributed by Francesco Romano: alteclab.it)
+
+Change log - 03/31/2006
+
+ * updated Spanish Translation (contributed by Antonio Cano damas: igestec.com)
+
+Change log - 03/29/2006
+
+ * added support for voicemail.conf include files (requested by Diego Iastrubni)
+ * updated database connection to support sqlite (and other databases using a connect file) (requested by Diego Iastrubni)
+
+Change log - 03/28/2006
+
+ * updated for PHP5 support
+ * fixed bug in AJAX javascript (fix submitted by Mahmud Fatafta - voicemetro.com)
+
+Change log - 03/23/2006
+
+ * remove variable references in function calls for PHP5 support (PHP4 supports, PHP5 does not, go figure)
+
+Change log - 03/18/2006
+
+ * fixed setting page voicemail options bug (submitted by Dave Vaughn: techcompinc.com)
+ * fixed settings page record settings FreePBX version bug (submitted by Luca Pandolfini)
+
+Change log - 03/13/2006
+
+ * added navigation menus to ajax update
+ * changed voicemail password on settings page so it can be variable length (submitted by vgster)
+ * fixed bug with settings page check boxes
+
+Change log - 03/09/2006
+
+ * fixed bug in error reporting for asterisk config files or recording file directories missing
+ * fixed bug for voicemail message move to perserve permissions, group, and user
+ * fixed bug in .inc and .conf file security (submitted by Diego Iastrubni, François Harvey: securiweb.net, and Adam Gray: novacoast.com)
+
+Change log - 03/07/2006
+
+ * added ajax seemless page refresh to callmonitor and voicemail 
+ * added recording playback encryption (requested by François Harvey: securiweb.net)
+ * added ajax page refresh for voicemail and callmonitor (will seemlessly update page realtime)
+ * fixed bug in file permissions when a voicemail was moved (submitted by ?)
+
+Change log - 02/22/2006
+
+ * added filter to not load code not needed if a module is not loaded (submitted by Diego Iastrubni)
+ * refactored asterisk manager interface class to not require password lookup in common and asi files
+ * fixed module admin bug (submitted by serger)
+
+Change log - 02/14/2006
+
+ * added callmonitor duration filter to filter out short length calls (sponsored by John Cardner, Phonoscope, Inc)
+
+Change log - 02/09/2006
+
+ * added voicemail email and pager settings
+ * more rework of callmonitor recording match to handle large volumes of recordings (sponsored by John Cardner, Phonoscope, Inc)
+
+Change log - 02/07/2006
+
+ * added check for PHP PEAR installation
+ * added check for proper communication with the Asterisk Manager
+ * fixed class coding standard (ie ClassName)
+ * fixed method coding standard (ie methodName)
+ * fixed variable coding standard (ie variable_name)
+ * fixed constant coding standard (ie CONSTANT_NAME)
+ * added config option for voicemail password length  (submitted by Chuck Bunn)
+    - set with $SETTINGS_VOICEMAIL_PASSWORD_LENGTH in /includes/main.conf
+ * added voicemail audio format admin option in settings page (submitted by Chuck Bunn) 
+    - set with $ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT in /includes/main.conf
+ * fixed bug to separate voicemail password set in settings page (submitted by Chuck Bunn) 
+
+Change log - 02/05/2006
+
+ * added call forward setting
+ * added Hebrew Translation (submitted by Diego Iastrubni)
+ * fixed i18n translation best practices and bugs (submitted by Diego Iastrubni)
+ * fixed voicemail message move bug (submitted by Steve Davies)
+ * fixed voicemail folder creation permissions issue (submitted by Steve Davies) 
+
+Change log - 01/31/2006
+
+ * added help page
+ * added file lookup limiting code to prevent hanging when extremely large numbers of files are found in a directory
+ * added database type global variable
+
+Change log - 01/26/2006
+
+ * added php 4 or later version checking
+ * fixed php pre 4.3 version compatability
+ * fixed buy in call manager file matching recursively searching directories (submitted by Adrian Carter)
+
+Change log - 01/20/2006
+
+ * added call monitor aggressive matching option
+
+Change log - 01/18/2006
+
+ * added Hungarian Translation (submitted by Diego Imre Csaba Varasdy)
+ * fixed bug for Asterisk Manager change in Asterisk 1.2
+
+Change log - 01/12/2006
+
+ * added column sort to voicemail page (requested by Diego Elias Sofronas)
+ * added column sort to call monitor page (requested by Elias Sofronas)
+ * added i18n lang select to login page (requested by Diego Iastrubni)
+
+Change log - 12/09/2005
+
+ * another fix to the on-demand call monitor recordings (submitted by Blake Krone)
+
+Change log - 12/09/2005
+
+ * fix to recognize on-demand call monitor recordings (identified as auto-...) (submitted by Francesco Romano, Antonio Cano Damas, and Jason P. Meyer)
+ * added German Translation (submitted by Till Stoermer)
+
+Change log - 12/07/2005
+
+ * fixed search bug (submitted by Francesco Romano)
+ * fixed formating bugs
+
+Change log - 12/01/2005
+
+ * fix delete, move_to, and forward_to voicemail buttons for i18n translations
+ * fix delete call monitor button for i18n translations
+ * fix call monitor file matching problem if call time is a second or two later than time recorded in database log (submitted by Will Prater, Steve D, and others)
+ * changed to get call recording settings from asterisk and not the mysql database to support ARI standalone 
+ * fix i18n for recording popup (submitted by Antonio Cano Damas)
+ * added search for voicemail
+ * added class to handle Asterisk Manager Interface (phpagi-asmanager.php would need error handling added)
+ * moved i18n language functions to own file so can support i18n in recording popup
+ * added Italian (submitted by Francesco Romano)
+ * updated Spanish translation (submitted by Antonio Cano Damas)
+ * fixed bugs in standalone code (sponsored by Hugh Buitano and also submitted by John Biundo)
+ * fixed logo (submitted by John Biundo)
+ * cleaned up css for misc/audio.php
+
+Change log - 11/17/2005
+
+ * added protocol multi-config_file (iax,sip,zap) support (sponsored by Hugh Buitano, Infosecure Systems)
+ * add global variables for asterisk and asteriskcdr database hosts and names (sponsored by Hugh Buitano, Infosecure Systems)
+ * added French translation (submitted by Joachim Buron-Pilatre, Phileas Com)
+ * fixed bug (submitted by Joachim Buron-Pilatre, Phileas Com)
+
+Change log - 11/13/2005
+
+ * refactored login context support 
+ * added voicemail context support (submitted by Todd Courtnage)
+ * fixed voicemail sub nav folders to allow i18n translation (submitted by Elias Sofronas)
+ * fixed voicemail finding messages in different contexts (sponsored by Brian Connelly, Connelly Management)
+
+Change log - 11/09/2005
+
+ * fixed utf-8 translation in Greek (submitted by Elias Sofronas)
+ * added admin only access to specific modules (submitted by Julian J. M.)
+ * rework handler module code so that each module is only build one time
+ * added download message link on recording playback popup (sponsored by John Cardner, Phonoscope, Inc)
+ * converted i18n translation to utf-8 (submitted by Niklas Larsson and Elias Sofronas)
+ * fix more bugs in i18n translation (submitted by Niklas Larsson)
+ * fixed security bug that allowed access to all files (Edwin Eefting, syn-3.nl)
+
+Change log - 11/04/2005
+
+ * fixed bug to reload asterisk voicemail after voicemail password setting change (submitted by Jason Becker)
+
+Change log - 11/03/2005
+
+ * Highlight which voicemail sub-folder in use (submitted by Elias Sofronas)
+ * set default i18n page (suggested by Niklas Larsson)
+ * admin only account for call monitor (submitted by Julian J. M.)
+ * enhanced pattern matching call monitor unique id from database (submitted by Julian J. M.)
+ * updated Spanish translation (submitted by Diego Iastrubni)
+ * added Swedish translation (submitted by Niklas Larsson)
+ * added Greek translation (submitted by Elias Sofronas)
+ * fixed bug in call recording settings method (changed in AMP 1.10.009)
+ * fix bugs in i18n translation (submitted by Niklas Larsson)
+   - buttons, left menus, select  all | none, Call Monitor (heading), Login page.
+
+Change log - 10/21/2005
+
+ * fixed bug in voicemail navigation (submitted by Elias Sofronas)
+ * added version cleanup
+ * added Spanish translation (submitted by Susana Castillo)
+ * added Portuguese translation (submitted by Alejandro Duplat)
+ * added admin setting for call recording
+
+Change log - 09/30/2005
+
+ * added i18n language support
+ * fixed bug if no folder or extension was selected and "move_to" or 
+   "forward_to" clicked (bug submitted by Elias Sofronas)
+ * converted modules to a OO plugin architecture
+ * added version to footer
+ * add theme customization
+ * added recording type support (.WAV, .GSM) on settings page
+ * fixed bug to find call recording files better (patch submitted by Mark Voevodin)
+ * fixed bug for navigation and search controls to link to correct folder (bug submitted by Elias Sofronas)
+ * added voicemail password change to settings page
+ * added call monitor delete recording functionality (does not delete database entry)
+ * added call recording settings on settings page
+
+Change log - 09/15/2005
+
+ * added settings page
+ * added call monitor record options on settings page
+ * fixed bug to view src and dst calls in call monitor when restricted (submitted by Elias Sofronas and Thomas Stalder)
+
+Change log - 08/25/2005
+
+ * added SIP authentication login (this does not allow voicemail access)
+ * added persistent passwords (cookies)
+ * added encryption for cookies 
+
+Change log - 08/23/2005
+
+ * Fixed $_SESSION['user'] bug conflict with AMP
+   -> changed to $_SESSION['ari_user']
+ * Fixed recording file lookup bug.
+
+Change log - 08/16/2005
+
+ * Fixed formating bug in css
+ * Added multipath to call monitor recordings
+    - set with $asterisk_callmonitor_path in /includes/main.conf
+ * added authentication
+    - use voicemail password
+       - access mailbox voicemail
+       - access call monitor for mailbox
+    - use AMP password
+       - access call monitor for all users
+    - config to allow voicemail to have call monitor access to all users
+  * voicemail access
+     - search of mailbox
+     - easy to delete voicemail interface
+     - move voicemail interface
+     - forward voicemail interface
+
+
+    
\ No newline at end of file
diff --git a/fs_selfservice/fri/LICENSE.txt b/fs_selfservice/fri/LICENSE.txt
new file mode 100644 (file)
index 0000000..c09b19c
--- /dev/null
@@ -0,0 +1,340 @@
+        GNU GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+        GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+          NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+      How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/fs_selfservice/fri/README.txt b/fs_selfservice/fri/README.txt
new file mode 100644 (file)
index 0000000..2e3b908
--- /dev/null
@@ -0,0 +1,123 @@
+Developed by Dan Littlejohn of Littlejohn Consulting.
+  www.littlejohnconsulting.com
+
+Released under the GPL.
+
+Send bug reports, requests to dan@littlejohnconsulting.com
+
++++
+
+Misc notes
+
+ARI Project Page
+  www.littlejohnconsulting.com?q=ari
+
+Coding standard
+ * class - CamelCase (ie ClassName)
+ * method camelCase (ie methodName)
+ * variable underscore (ie variable_name)
+ * constant UNDERSCORE (ie CONSTANT_NAME)
+
+Requirements
+  PHP4 (but PHP5 is not yet supported)
+  PHP PEAR
+  asterisk 1.2 or later
+  apache or apache2
+  asterisk manager - at a mininum need command access
+
+security
+  for security all the files in ./recordings/include should be locked down in the web browser
+    so they cannot be viewed.
+
+voicemail email links - For those who would like to include a link to ARI in the voicemail email and set the correct login (mailbox) you can do so as:
+
+  http://< ip address >/recordings/index.php?login=< login >
+    replace 
+      < ip address > with the server dns or ip
+      < login > with the login or mailbox
+
++++
+
+Module API
+
+odules can be added or removed from ARI.
+
+API
+
+must include these methods.
+
+rank - weights were the module menu item will appear in the navigation window
+init - initialize the module.  Database access should first appear here and not in the constructor
+navMenu - side navigation menu item
+display - main module page content
+
+example
+
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the help page
+ */
+
+/**
+  * Class for new_module
+  */
+class NewModule {
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+    $rank = 50;
+    return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+
+    // put if statement in return string, because do not know $logout until page is built
+    $ret .= "
+      <?php if ($logout !='') { ?>
+        <p><small><small><a href='" . $_SERVER['PHP_SELF'] . "?m=NewModule&f=display'>" . _("new_module") . "</a></small></small></p>
+      <?php } ?>";
+
+    return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+
+    // build page content
+    $ret .= checkErrorMessage();
+
+    $ret .= $display->displayHeaderText("new_module");
+    $ret .= $display->displayLine();
+
+    return $ret;
+  }
+
+}
+
+
+?>
+
+
diff --git a/fs_selfservice/fri/includes/ajax.php b/fs_selfservice/fri/includes/ajax.php
new file mode 100644 (file)
index 0000000..fc7961b
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+/*
+ * AJAX page update script
+ */
+function ajaxRefreshScript($args) {
+
+  global $AJAX_PAGE_REFRESH_TIME;
+
+  $url_args = "?ajax_refresh=1&";
+  foreach($args as $key => $value) {
+    $url_args .= $key . "=" . $value . "&";
+  }
+  $url_args = substr($url_args, 0,strlen($url_args)-1);
+
+  $ret = "
+    <script type='text/javascript' language='javascript'>
+
+      var http_request = false;
+
+      function makeRequest(url, parameters) {
+
+        http_request = false;
+
+        if (window.XMLHttpRequest) { // Mozilla, Safari,...
+          http_request = new XMLHttpRequest();
+          if (http_request.overrideMimeType) {
+            http_request.overrideMimeType('text/xml');
+          }
+        } 
+        else if (window.ActiveXObject) { // IE
+          try {
+            http_request = new ActiveXObject('Msxml2.XMLHTTP');
+          } 
+          catch (e) {
+            try {
+              http_request = new ActiveXObject('Microsoft.XMLHTTP');
+            } 
+            catch (e) {}
+          }
+        }
+        if (!http_request) {
+          return false;
+        }
+        http_request.onreadystatechange = alertContents;
+        http_request.open('GET', url + parameters, true);
+        http_request.send(null);
+      }
+
+      function alertContents() {
+
+        if (!http_request) {
+          return;
+        }
+
+        if (http_request.readyState == 4) {
+          if (http_request.status == 200) {
+
+            var result = http_request.responseXML;
+            if (!result.documentElement && http_request.responseStream) {
+              result.load(http_request.responseStream);
+            }
+
+            var response = http_request.responseXML.documentElement;
+
+            var nav_menu = '';
+            if (response.getElementsByTagName('nav_menu')[0]) {
+              nav_menu = response.getElementsByTagName('nav_menu')[0].firstChild.data;
+            }
+            var nav_submenu = '';
+            if (response.getElementsByTagName('nav_submenu')[0]) {
+              nav_submenu = response.getElementsByTagName('nav_submenu')[0].firstChild.data;
+            }
+            var content = '';
+            if (response.getElementsByTagName('content')[0]) {
+              content = response.getElementsByTagName('content')[0].firstChild.data;
+            }
+
+            if (nav_menu) {
+              document.getElementById('nav_menu').innerHTML = '';
+              document.getElementById('nav_menu').innerHTML = nav_menu;
+            }
+            if (nav_submenu) {
+              document.getElementById('nav_submenu').innerHTML = '';
+              document.getElementById('nav_submenu').innerHTML = nav_submenu;
+            }
+            if (content) {
+              document.getElementById('content').innerHTML = '';
+              document.getElementById('content').innerHTML = content;
+            }
+          } 
+        }
+      }
+
+      function updatePage() {
+        makeRequest('" . $_SESSION['ARI_ROOT'] . "', '" . $url_args . "');
+      }
+
+      // refresh time in 'minutes:seconds' (0 to inifinity) : (0 to 59)
+      var refresh_time='" . $AJAX_PAGE_REFRESH_TIME . "';
+
+      if (document.images){
+        var limit=refresh_time.split(\":\");
+        limit=limit[0]*60+limit[1]*1;
+        var current = limit;
+      }
+
+      function beginRefresh(){
+        
+        if (!document.images) {
+          return;
+        }
+        if (current==1) {
+          updatePage();
+          current = limit;
+        }
+        else { 
+          current-=1;
+        }
+
+        setTimeout(\"beginRefresh()\",1000);
+      }
+
+      window.onload=beginRefresh;
+
+    </script>";
+
+  return $ret;
+}
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/asi.php b/fs_selfservice/fri/includes/asi.php
new file mode 100644 (file)
index 0000000..62f221e
--- /dev/null
@@ -0,0 +1,156 @@
+<?php
+
+/**
+ * @file
+ * Asterisk manager interface for access to asterisk api (astdb)
+ */
+
+/**
+  * Asterisk Manager Interface
+  */
+class AsteriskManagerInterface {
+
+  var $socket;
+
+  /**
+   * constructor 
+   */
+  function AsteriskManagerInterface() {
+  }
+
+  /*
+   * Reloads Asterisk Configuration
+   *
+   * @param $username
+   *   asterisk manager interface username
+   * @param $password
+   *   asterisk manager interface password 
+   */
+  function connect($host,$username,$password) {
+
+    // connect
+    $fp = fsockopen($host, 5038, $errno, $errstr, 10);
+    if (!$fp) {
+      return FALSE;
+    } 
+    else {
+      $buffer='';
+      if(version_compare(phpversion(), '4.3', '>=')) {
+        stream_set_timeout($fp, 5);
+      } 
+      else {
+        socket_set_timeout($fp, 5);
+      }
+      $buffer = fgets($fp);
+      if (!preg_match('/Asterisk Call Manager/i', $buffer)) {
+        $_SESSION['ari_error'] = _("Asterisk Call Manager not responding") . "<br />\n";
+        return FALSE;
+      }
+      else {
+        $out="Action: Login\r\nUsername: ".$username."\r\nSecret: ".$password."\r\n\r\n";
+        fwrite($fp,$out);
+        $buffer=fgets($fp);
+        if ($buffer!="Response: Success\r\n") {
+          $_SESSION['ari_error'] =  _("Asterisk authentication failed:") . "<br />" . $buffer . "<br />\n";
+          return FALSE;
+        }
+        else {
+          $buffers=fgets($fp); // get rid of Message: Authentication accepted
+
+          // connected
+          $this->socket = $fp;
+        }
+      }
+    }
+    return TRUE;
+  }
+
+  /*
+   * Reloads Asterisk Configuration
+   */
+  function disconnect() {
+
+    if ($this->socket) {
+      fclose($this->socket);
+    }
+  }
+
+  /*
+   * Reloads Asterisk Configuration
+   *
+   * @param $command
+   *   Command to be sent to the asterisk manager interface 
+   * @return $ret
+   *   response from asterisk manager interface 
+   */
+  function command($command) {
+
+    $response = '';
+
+    fwrite($this->socket,$command);
+
+    $count = 0;
+    while (($buffer = fgets($this->socket)) && (!preg_match('/Response: Follows/i', $buffer))) {
+
+      if ($count>100) {
+        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";
+        return FALSE;
+      }
+      $count++;
+    }
+
+    $count = 0;
+    while (($buffer = fgets($this->socket)) && (!preg_match('/END COMMAND/i', $buffer))) {
+
+      if (preg_match('/Value/',$buffer)) {
+        $parts = split(' ',trim($buffer));
+        $response = $parts[1];
+      }
+
+      if ($count>100) {
+        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";
+        return;
+      }
+      $count++;
+    }
+
+    return $response;
+  }
+
+  function command2($command) {
+
+    $response = '';
+
+    fwrite($this->socket,$command);
+
+    $count = 0;
+    while (($buffer = fgets($this->socket)) && (!preg_match('/Response: Follows/i', $buffer))) {
+
+      if ($count>100) {
+        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";
+        return FALSE;
+      }
+      $count++;
+    }
+
+    $count = 0;
+    while (($buffer = fgets($this->socket)) && (!preg_match('/END COMMAND/i', $buffer))) {
+
+      if (preg_match('/Value:/',$buffer)) {
+        $parts = split('Value:',trim($buffer));
+        $response = $parts[1];
+      }
+      if ($count>100) {
+        $_SESSION['ari_error'] =  _("Asterisk command not understood") . "<br />" . $buffer . "<br />\n";
+        return;
+      }
+      $count++;
+    }
+
+    return $response;
+  }
+
+}  
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/bootstrap.php b/fs_selfservice/fri/includes/bootstrap.php
new file mode 100644 (file)
index 0000000..a01a2f5
--- /dev/null
@@ -0,0 +1,315 @@
+<?php
+
+/**
+ * @file
+ * Functions that need to be loaded on every request.
+ */
+
+/**
+ * Sets doc root
+ */
+function setARIRoot() {
+
+  $found = 0;
+  if (isset($_SERVER['PHP_SELF'])) {
+    if ($_SERVER['PHP_SELF']!='') {
+      $_SESSION['ARI_ROOT'] = $_SERVER['PHP_SELF'];
+    }
+  }
+  
+  if (!$found) {
+    $_SESSION['ARI_ROOT'] = "index.php";
+  }
+}
+
+/**
+ * Return a arguments.
+ *
+ * @param $args
+ *   The name of the array being acted upon.
+ * @param $name
+ *   The name of the variable to return.
+ * @return
+ *   The value of the variable.
+ */
+function getArgument($args, $name) {
+
+  return isset($args[$name]) ? $args[$name] : '';
+}
+
+/*
+ * Gets top level directory names 
+ *
+ * @param $path
+ *   directory to search
+ * @param $filter
+ *   string to use as a filter to match files to return
+ * @return $directories
+ *   directories found
+ */
+function getDirectories($path,$filter) {
+
+  $directories = array();
+
+  if (is_dir($path)) {
+
+    $dh = opendir($path);
+    while (false!== ($item = readdir($dh))) {
+      if($item!="." && $item!="..") {
+
+        $path = fixPathSlash($path);
+        $directory = $path;
+        $directory = appendPath($directory,$item);
+
+        if (is_dir($directory)) {
+
+          $found = 0;
+          if ($filter) {
+            if (strpos($directory,$filter)) {
+              $found = 1;
+            }
+          } else {
+            $found = 1;
+          }
+          if ($found) {
+            $directories[count($directories) + 1] = $directory;
+          }
+        }
+      }
+    } 
+  }
+
+  return $directories;
+}
+
+/*
+ * Gets file names recursively 6 folders deep
+ *
+ * @param $path
+ *   directory to search
+ * @param $filter
+ *   string to use as a filter to match files to return
+ * @param $recursive_max
+ *   max number of sub folders to search
+ * @param $recursive_count
+ *   current sub folder count
+ * @return $files
+ *   files found
+ */
+function getFiles($path,$filter,$recursive_max,$recursive_count) {
+
+  $files = array();
+
+  if (@is_dir($path) && @is_readable($path)) {
+    $dh = opendir($path);
+    while (false!== ($item = readdir($dh))) {
+      if($item[0]!=".") {
+
+        $path = fixPathSlash($path);
+        $msg_path = appendPath($path,$item);
+
+        $fileCount++;
+        if ($fileCount>3000) {
+          $_SESSION['ari_error'] 
+            .= _("To many files in $msg_path Not all files processed") . "<br>";
+          return;
+        }
+
+        if ($recursive_count<$recursive_max && is_dir($msg_path)) {
+
+          $dirCount++;
+          if ($dirCount>10) {
+            $_SESSION['ari_error'] 
+              .= sprintf(_("To many directories in %s Not all files processed"),$msg_path) . "<br>";
+            return;
+          }
+
+          $count = $recursive_count + 1;
+          $path_files = getFiles($msg_path,$filter,$recursive_max,$count);
+          $files = array_merge($files,$path_files);
+        } 
+        else {
+          $found = 0;
+          if ($filter) {
+            if (strpos($msg_path,$filter)) {
+              $found = 1;
+            }
+          } else {
+            $found = 1;
+          }
+          if ($found) {
+            $files[count($files) + 1] = $msg_path;
+          }
+        }
+      }
+    } 
+  }
+
+  return $files;
+}
+
+/* Utilities */
+
+/**
+ * Fixes the path for a trailing slash
+ *
+ * @param $path
+ *   path to append
+ * @return $ret
+ *   path to returned
+ */
+function fixPathSlash($path) {
+
+  $ret = $path;
+
+  $slash = '';
+  if (!preg_match('/\/$/',$path)) {
+    $slash = '/';
+  } 
+  $ret .= $slash;
+
+  return $ret; 
+}
+
+/**
+ * Appends folder to end of path
+ *
+ * @param $path
+ *   path to append
+ * @param $folder
+ *   folder to append to path
+ * @return $ret
+ *   path to returned
+ */
+function appendPath($path,$folder) {
+
+  $ret = $path;
+
+  $m = '';
+  if (!preg_match('/\/$/',$path)) {
+    $m = '/';
+  } 
+  $ret .= $m . $folder; 
+
+  return $ret;
+}
+
+/**
+ * Get Date format 
+ *
+ * @param $timestamp
+ *   timestamp to be converted
+ */
+function getDateFormat($timestamp) {
+  return date('Y-m-d', $timestamp);
+}
+
+/**
+ * Get time format 
+ *
+ * @param $timestamp
+ *   timestamp to be converted
+ */
+function getTimeFormat($timestamp) {   
+  return date('G:i:s', $timestamp);
+}
+
+/* */
+
+/**
+ * Checks ARI dependencies
+ */
+function checkDependencies() {
+
+  // check for PHP
+  if (!version_compare(phpversion(), '4.3', '>=')) {
+    echo _("ARI requires a version of PHP 4.3 or later");
+    exit();
+  }
+
+  // check for PEAR
+  $include_path = ini_get('include_path');
+  $buf = split(':|,',$include_path);
+
+  $found = 0;
+  foreach ($buf as $path) {
+    $path = fixPathSlash($path);
+    $pear_check_path = $path . "DB.php";
+    if (is_file($pear_check_path)) {
+      $found = 1;
+      break;
+    }
+  }
+
+  if (!$found) {
+    echo _("PHP PEAR must be installed.  Visit http://pear.php.net for help with installation.");
+    exit();
+  }
+}
+
+/**
+ * Starts the session
+ */
+function startARISession() {
+
+  if (!isset($_SESSION['ari_user']) ) {
+
+    // start a new session for the user 
+    ini_set('session.name', 'ARI');             // prevent session name clashes
+    ini_set('session.gc_maxlifetime', '3900');  // make the session timeout a long time
+    set_time_limit(360);
+    session_start();
+  }
+}
+
+/**
+ * Bootstrap
+ *
+ * Loads critical variables needed for every page request
+ *
+ */
+function bootstrap() {
+
+  // set error reporting
+  error_reporting (E_ALL & ~ E_NOTICE);  
+}
+
+/**
+ * Set HTTP headers in preparation for a page response.
+ *
+ * TODO: Figure out caching
+ */
+function ariPageHeader() {
+
+  bootstrap();
+}
+
+/**
+ * Perform end-of-request tasks.
+ *
+ * This function sets the page cache if appropriate, and allows modules to
+ * react to the closing of the page by calling hook_exit().
+ */
+function ariPageFooter() {
+
+}
+
+/**
+ * Includes and run functions
+ */
+
+include_once("./includes/lang.php");
+$language = new Language();
+$language->set();
+
+checkDependencies();
+startARISession();
+setARIRoot();
+
+include_once("./includes/main.conf.php");
+include_once("./version.php");
+include_once("./includes/crypt.php"); 
+include_once("./includes/login.php");
+
+
+?>
diff --git a/fs_selfservice/fri/includes/common.php b/fs_selfservice/fri/includes/common.php
new file mode 100644 (file)
index 0000000..caa76c1
--- /dev/null
@@ -0,0 +1,433 @@
+<?php
+
+/**
+ * @file
+ * common functions - core handler
+ */
+
+/*
+ * Checks if user is set and sets
+ */
+function checkErrorMessage() {
+
+  if ($_SESSION['ari_error']) {
+    $ret .= "<div class='error'>
+               " . $_SESSION['ari_error'] . "
+             </div>
+             <br>";
+    unset($_SESSION['ari_error']);
+  }
+
+  return $ret;
+}
+
+/*
+ * Checks modules directory, and configuration, and loaded modules 
+ */
+function loadModules() {
+
+  global $ARI_ADMIN_MODULES;
+  global $ARI_DISABLED_MODULES;
+
+  global $loaded_modules;
+
+  $modules_path = "./modules";
+  if (is_dir($modules_path)) {
+
+    $filter = ".module";
+    $recursive_max = 1;
+    $recursive_count = 0;
+    $files = getFiles($modules_path,$filter,$recursive_max,$recursive_count);
+
+    foreach($files as $key => $path) {
+
+      // build module object 
+      include_once($path); 
+      $path_parts = pathinfo($path);
+      list($name,$ext) = split("\.",$path_parts['basename']);
+
+      // check for module and get rank
+      if (class_exists($name)) {
+
+        $module = new $name();
+
+        // check if admin module
+        $found = 0;
+        if ($ARI_ADMIN_MODULES) {
+          $admin_modules = split(',',$ARI_ADMIN_MODULES);
+          foreach ($admin_modules as $key => $value) {
+            if ($name==$value) {
+              $found = 1;
+              break;
+            }
+          }
+        }
+
+        // check if disabled module
+        $disabled = 0;
+        if ($ARI_DISABLED_MODULES) {
+          $disabled_modules = split(',',$ARI_DISABLED_MODULES);
+          foreach ($disabled_modules as $key => $value) {
+            if ($name==$value) {
+              $disabled = 1;
+              break;
+            }
+          }
+        }
+
+        // if not admin module or admin user add to module name to array
+        if (!$disabled && (!$found || $_SESSION['ari_user']['admin'])) {
+          $loaded_modules[$name] = $module;
+        }
+      }
+    }
+  }
+  else {
+    $_SESSION['ari_error'] = _("$path not a directory or not readable");
+  }
+}
+
+/**
+ * Builds database connections
+ */
+function databaseLogon() {
+
+  global $STANDALONE;
+
+  global $ASTERISKMGR_DBHOST;
+
+  global $AMP_FUNCTIONS_FILES;
+  global $AMPORTAL_CONF_FILE;
+
+  global $LEGACY_AMP_DBENGINE;
+  global $LEGACY_AMP_DBFILE;
+  global $LEGACY_AMP_DBHOST;
+  global $LEGACY_AMP_DBNAME;
+
+  global $ASTERISKCDR_DBENGINE;
+  global $ASTERISKCDR_DBFILE;
+  global $ASTERISKCDR_DBHOST;
+  global $ASTERISKCDR_DBNAME;
+
+  global $ARI_DISABLED_MODULES;
+
+  global $loaded_modules;
+
+       // This variable is a global in the FreePBX function.inc.php but needs to be
+       // declared here or the is not seen when parse_amprotaconf() is eventually called
+       // ?php bug?
+       //
+       global $amp_conf_defaults;
+
+  // get user
+  if ($STANDALONE['use']) {
+
+    $mgrhost = $ASTERISKMGR_DBHOST;
+    $mgruser = $STANDALONE['asterisk_mgruser'];
+    $mgrpass = $STANDALONE['asterisk_mgrpass'];
+
+    $asteriskcdr_dbengine = $ASTERISKCDR_DBENGINE;
+    $asteriskcdr_dbfile = $ASTERISKCDR_DBFILE;
+    $asteriskcdr_dbuser = $STANDALONE['asteriskcdr_dbuser'];
+    $asteriskcdr_dbpass = $STANDALONE['asteriskcdr_dbpass'];
+    $asteriskcdr_dbhost = $ASTERISKCDR_DBHOST;
+    $asteriskcdr_dbname = $ASTERISKCDR_DBNAME;
+  } 
+  else {
+
+    $include = 0;
+    $files = split(';',$AMP_FUNCTIONS_FILES);
+    foreach ($files as $file) {
+      if (is_file($file)) {
+        include_once($file);
+        $include = 1;
+      }
+    }
+
+    if ($include) {
+      $amp_conf = parse_amportal_conf($AMPORTAL_CONF_FILE);
+
+      $mgrhost = $ASTERISKMGR_DBHOST;
+      $mgruser = $amp_conf['AMPMGRUSER'];
+      $mgrpass = $amp_conf['AMPMGRPASS'];
+
+      $amp_dbengine = isset($amp_conf["AMPDBENGINE"]) ? $amp_conf["AMPDBENGINE"] : $LEGACY_AMP_DBENGINE;
+      $amp_dbfile = isset($amp_conf["AMPDBFILE"]) ? $amp_conf["AMPDBFILE"] : $LEGACY_AMP_DBFILE;
+      $amp_dbuser = $amp_conf["AMPDBUSER"];
+      $amp_dbpass = $amp_conf["AMPDBPASS"];
+      $amp_dbhost = isset($amp_conf["AMPDBHOST"]) ? $amp_conf["AMPDBHOST"] : $LEGACY_AMP_DBHOST;
+      $amp_dbname = isset($amp_conf["AMPDBNAME"]) ? $amp_conf["AMPDBNAME"] : $LEGACY_AMP_DBNAME;
+
+      $asteriskcdr_dbengine = $ASTERISKCDR_DBENGINE;
+      $asteriskcdr_dbfile = $ASTERISKCDR_DBFILE;
+      $asteriskcdr_dbuser = $amp_conf["AMPDBUSER"];
+      $asteriskcdr_dbpass = $amp_conf["AMPDBPASS"];
+      $asteriskcdr_dbhost = $ASTERISKCDR_DBHOST;
+      $asteriskcdr_dbhost = isset($amp_conf["AMPDBHOST"]) ? $amp_conf["AMPDBHOST"] : $ASTERISKCDR_DBHOST;
+      $asteriskcdr_dbname = $ASTERISKCDR_DBNAME;
+
+      unset($amp_conf);
+    } 
+  }
+
+  // asterisk manager interface (berkeley database I think)
+  global $asterisk_manager_interface;
+  $asterisk_manager_interface = new AsteriskManagerInterface();
+
+  $success = $asterisk_manager_interface->Connect($mgrhost,$mgruser,$mgrpass);
+  if (!$success) {
+    $_SESSION['ari_error'] =  
+      _("ARI does not appear to have access to the Asterisk Manager.") . " ($errno)<br>" . 
+      _("Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager Account.") . "<br>" . 
+      _("Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account") . "<br>" .
+      _("make sure [general] enabled = yes and a 'permit=' line for localhost or the webserver.");
+    return FALSE;
+  }
+
+  // pear interface databases
+  $db = new Database();
+
+  // AMP asterisk database
+  if (!$STANDALONE['use']) {
+    $_SESSION['dbh_asterisk'] = $db->logon($amp_dbengine,
+                                           $amp_dbfile,
+                                           $amp_dbuser, 
+                                           $amp_dbpass,
+                                           $amp_dbhost,
+                                           $amp_dbname);
+    if (!isset($_SESSION['dbh_asterisk'])) {
+      $_SESSION['ari_error'] .= _("Cannot connect to the $amp_dbname database") . "<br>" .
+                               _("Check AMP installation, asterisk, and ARI main.conf");
+      return FALSE;
+    }
+  }
+
+  // cdr database
+  if (in_array('callmonitor',array_keys($loaded_modules))) {
+    $_SESSION['dbh_cdr'] = $db->logon($asteriskcdr_dbengine,
+                                      $asteriskcdr_dbfile,
+                                      $asteriskcdr_dbuser, 
+                                      $asteriskcdr_dbpass,
+                                      $asteriskcdr_dbhost,
+                                      $asteriskcdr_dbname);
+    if (!isset($_SESSION['dbh_cdr'])) {
+      $_SESSION['ari_error'] .= sprintf(_("Cannot connect to the $asteriskcdr_dbname database"),$asteriskcdr_dbname) . "<br>" .
+                               _("Check AMP installation, asterisk, and ARI main.conf");
+      return FALSE;
+    }
+  }
+
+  return TRUE;
+}
+
+/**
+ * Logout if needed for any databases
+ */
+function databaseLogoff() {
+
+  global $asterisk_manager_interface;
+
+  $asterisk_manager_interface->Disconnect();
+}
+
+/*
+ * Checks if user is set and sets
+ */
+function loginBlock() {
+
+  $login = new Login();
+
+  if (isset($_REQUEST['logout'])) {
+    $login->Unauth();
+  }
+
+  if (!isset($_SESSION['ari_user'])) {
+    $login->Auth();
+
+  }
+
+  if (!isset($_SESSION['ari_user'])) {
+
+    // login form
+    $ret .= $login->GetForm();
+
+    return $ret;
+  }
+}
+
+/*
+ * Main handler for website
+ */
+function handleBlock() {
+
+  global $ARI_NO_LOGIN;
+
+  global $loaded_modules;
+
+  // check errors here and in login block
+  $content .= checkErrorMessage();
+
+  // check logout
+  if ($_SESSION['ari_user'] && !$ARI_NO_LOGIN) {
+    $logout = 1;
+  }
+
+  // if nothing set goto user default page
+  if (!isset($_REQUEST['m'])) {
+    $_REQUEST['m'] = $_SESSION['ari_user']['default_page'];
+  }
+  // if not function specified then use display page function
+  if (!isset($_REQUEST['f'])) {
+    $_REQUEST['f'] = 'display';
+  }
+
+  $m = $_REQUEST['m'];     // module
+  $f = $_REQUEST['f'];     // function
+  $a = $_REQUEST['a'];     // action
+
+  // set arguments
+  $args = array();
+  foreach($_REQUEST as $key => $value) {
+    $args[$key] = $value;
+  }
+
+  // set rank
+  $ranked_modules = array();
+  foreach ($loaded_modules as $module) {
+
+    $module_methods = get_class_methods($module);    // note that PHP4 returns all lowercase
+    while (list($index, $value) = each($module_methods)) {
+      $module_methods[strtolower($index)] = strtolower($value);
+    }
+    reset($module_methods);
+        
+    $rank = 99999;
+    $rank_function = "rank";
+    if (in_array(strtolower($rank_function), $module_methods)) {
+      $rank = $module->$rank_function(); 
+    }
+
+    $ranked_modules[$rank] = $module;
+  }
+  ksort($ranked_modules);
+
+  // process modules
+  foreach ($ranked_modules as $module) {
+
+    // process module
+    $name = get_class($module);    // note PHP4 returns all lowercase
+    $module_methods = get_class_methods($module);    // note PHP4 returns all lowercase
+    while (list($index, $value) = each($module_methods)) {
+      $module_methods[strtolower($index)] = strtolower($value);
+    }
+    reset($module_methods);
+
+    // init module
+    $module->init();
+
+    // add nav menu items
+    $nav_menu_function = "navMenu";
+    if (in_array(strtolower($nav_menu_function), $module_methods)) {
+      $nav_menu .= $module->$nav_menu_function($args); 
+    }      
+
+    if (strtolower($m)==strtolower($name)) {
+
+      // build sub menu 
+      $subnav_menu_function = "navSubMenu";
+      if (in_array(strtolower($subnav_menu_function), $module_methods)) {
+        $subnav_menu .= $module->$subnav_menu_function($args); 
+      }
+
+      // execute function (usually to build content)
+      if (in_array(strtolower($f), $module_methods)) {
+        $content .= $module->$f($args);
+      }
+    }
+  }
+
+  // add logout link
+  if ($logout != '') { 
+    $nav_menu .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?logout=1'>" . _("Logout") . "</a></small></small></p>";
+  } 
+
+  // error message if no content
+  if (!$content) {
+    $content .= _("Page Not Found.");
+  } 
+
+  return array($nav_menu,$subnav_menu,$content);
+}
+
+/*
+ * Main handler for website
+ */
+function handler() {
+
+  global $ARI_VERSION;
+
+  // version
+  $ari_version = $ARI_VERSION;
+
+  // check error
+  $error = $_SESSION['ari_error'];
+
+  // load modules
+  loadModules();
+
+  // login to database
+  $success = databaseLogon();
+  if ($success) {
+
+    // check if login is needed
+    $content = loginBlock();
+    if (!isset($content)) {
+        list($nav_menu,$subnav_menu,$content) = handleBlock();
+    }
+  }
+  else {
+
+    $display = new Display();
+
+    $content .= $display->displayHeaderText("ARI");
+    $content .= $display->displayLine();
+    $content .= checkErrorMessage();
+  }
+
+  // log off any databases needed
+  databaseLogoff();
+
+  // check for ajax request and refresh or if not build the page
+  if (isset($_REQUEST['ajax_refresh']) ) {
+
+    echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
+      <response>
+        <nav_menu><![CDATA[" . $nav_menu . "]]></nav_menu>
+        <subnav_menu><![CDATA[" . $subnav_menu . "]]></subnav_menu>
+        <content><![CDATA[" . $content . "]]></content>
+      </response>";
+  }
+  else {
+
+    // build the page
+    include_once("./theme/page.tpl.php"); 
+  }
+}
+
+/**
+ * Includes and run functions
+ */  
+
+// create asterisk manager interface singleton
+$asterisk_manager_interface = '';
+
+// array to keep track of loaded modules
+$loaded_modules = array();
+
+include_once("./includes/asi.php");
+include_once("./includes/database.php");
+include_once("./includes/display.php"); 
+include_once("./includes/ajax.php");
+
+
+?>
diff --git a/fs_selfservice/fri/includes/crypt.php b/fs_selfservice/fri/includes/crypt.php
new file mode 100644 (file)
index 0000000..301d8a8
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/*
+ * Allows encrypt and decrypt
+ */
+class Crypt {
+
+  /**
+   * Gets a random value for encryption
+   * - From php.net docs
+   *
+   * @param $iv_len
+   *   length of random variable
+   */
+  function getRndIV($iv_len) {
+
+    $iv = '';
+    while ($iv_len-- > 0) {
+      $iv .= chr(mt_rand() & 0xff);
+    }
+    return $iv;
+  }
+
+  /**
+   * Encrypts string
+   * - From php.net docs
+   *
+   * @param $str
+   *   string to encrypt
+   * @param $salt
+   *   password to use for encryption
+   * @param $iv_len
+   *   length of random number
+   */
+  function encrypt($str, $salt, $iv_len = 16) {
+
+    $str .= "\x13";
+    $n = strlen($str);
+    if ($n % 16) $str .= str_repeat("\0", 16 - ($n % 16));
+    $i = 0;
+    $enc_text = $this->getRndIV($iv_len);
+    $iv = substr($salt ^ $enc_text, 0, 512);
+    while ($i < $n) {
+      $block = substr($str, $i, 16) ^ pack('H*', md5($iv));
+      $enc_text .= $block;
+      $iv = substr($block . $iv, 0, 512) ^ $salt;
+      $i += 16;
+    }
+    return urlencode(base64_encode($enc_text));
+  }
+
+  /**
+   * Decrypts string
+   * - From php.net docs
+   *
+   * @param $enc
+   *   encrypted string to decrypt
+   * @param $salt
+   *   password to use for encryption
+   * @param $iv_len
+   *   length of random number
+   */
+  function decrypt($enc, $salt, $iv_len = 16) {
+
+     $enc = urldecode(base64_decode($enc));
+     $n = strlen($enc);
+     $i = $iv_len;
+     $str = '';
+     $iv = substr($salt ^ substr($enc, 0, $iv_len), 0, 512);
+     while ($i < $n) {
+         $block = substr($enc, $i, 16);
+         $str .= $block ^ pack('H*', md5($iv));
+         $iv = substr($block . $iv, 0, 512) ^ $salt;
+         $i += 16;
+     }
+     return preg_replace('/\\x13\\x00*$/', '', $str);
+  }
+}
+
+
+?>
diff --git a/fs_selfservice/fri/includes/database.php b/fs_selfservice/fri/includes/database.php
new file mode 100644 (file)
index 0000000..ff3d199
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/**
+ * @file
+ * Functions for the database
+ */
+
+/*
+ * Database Class
+ */
+class Database {
+
+  /*
+   * Constructor
+   */
+  function Database() {
+
+    // PEAR must be installed
+    require_once('DB.php');
+  }
+
+  /*
+   * Logs into database and returns database handle
+   *
+
+   * @param $engine
+   *   database engine
+   * @param $dbfile
+   *   database file
+   * @param $username
+   *   username for database
+   * @param $password
+   *   password for database
+   * @param $host
+   *   database host
+   * @param $name
+   *   database name
+   * @return $dbh
+   *   variable to hold the returned database handle
+   */
+  function logon($engine,$dbfile,$username,$password,$host,$name) {
+
+    // connect string
+    if ($dbfile) {
+      // datasource mostly to support sqlite: dbengine://dbfile?mode=xxxx 
+      $dsn = $engine . '://' . $dbfile . '?mode=0666';
+    } 
+    else {
+      // datasource in in this style: dbengine://username:password@host/database 
+      $datasource = $engine . '://' . $username . ':' . $password . '@' . $host . '/' . $name;
+    }
+
+    // options
+    $options = array(
+      'debug'       => 2,
+      'portability' => DB_PORTABILITY_LOWERCASE|DB_PORTABILITY_RTRIM|DB_PORTABILITY_DELETE_COUNT|DB_PORTABILITY_NUMROWS|DB_PORTABILITY_ERRORS|DB_PORTABILITY_NULL_TO_EMPTY,
+    );
+    
+    // attempt connection
+    $dbh = DB::connect($datasource,$options); 
+
+    // if connection failed show error
+    if(DB::isError($dbh)) {
+      $_SESSION['ari_error'] .= $dbh->getMessage() . "<br><br>"; 
+      return;
+    }
+    return $dbh;
+  } 
+} 
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/display.php b/fs_selfservice/fri/includes/display.php
new file mode 100644 (file)
index 0000000..41d8dc5
--- /dev/null
@@ -0,0 +1,222 @@
+<?php
+
+/**
+ * @file
+ * Functions common to display
+ */
+
+/**
+  * Display 
+  */
+class Display {
+
+  /**
+   * display constructor 
+   */
+  function Display() {
+  }
+
+  /**
+   * display text header
+   *
+   * @param $text
+   *   Header text to display
+   */
+  function displayHeaderText($text) {
+
+    $ret = "<h2>" . $text . "</h2>
+            <br>";
+
+    return $ret;
+  }
+
+  /**
+   * displays header line 
+   */
+  function displayLine() {
+
+    $ret = "
+      <div id='line'>
+        <div class='spacer'></div>
+        <div class='spacer'></div>
+      </div>
+      <br>";
+
+    return $ret;
+  }
+}  
+
+/**
+  * DisplaySearch  
+  */
+class DisplaySearch extends Display {
+
+  /**
+   * Constructor
+   */
+  function DisplaySearch() {
+  }
+
+  /**
+   * displays search controls
+   *
+   * @param $align
+   *   where to align the control
+   * @param $q
+   *   search query
+   * @param $focus
+   *   whether to focus control on this block
+   */
+  function displaySearchBlock($align,$m,$q,$url_opts,$focus) {
+
+    // align
+    if ($align=='center') {
+      $alignText = "class='bar_center'";
+    }
+    else {
+      $alignText = "class='bar_left'";
+    }
+
+    // url options
+    foreach ($url_opts as $key => $value) {
+      $option_text .= "<input type=hidden name=" . $key . " value=" . $value . ">";
+    }
+
+    // build
+    $ret .= "<div " . $alignText . ">
+               <form class='bar' action='" . $_SESSION['ARI_ROOT'] . "' method='GET' name='search'>
+                 <input type=hidden name=m value=" . $m . ">   
+                 <input type=text name=q size=40 value='" . $q . "' maxlength=256>
+                 " . $option_text . " 
+                 <input type=hidden name=start value=0>        
+                 <input type=submit name=btnS value='" . _("Search") . "'>
+               </form>
+             </div>";
+
+    if ($focus=="true") {      // search block loaded twice usually so only allow javascript to be loaded on the top block
+      $ret .= "<script type='text/javascript'> 
+                 <!-- 
+                 if (document.search) { 
+                   document.search.q.focus(); 
+                 } 
+                 // -->                
+               </script>";
+    }
+
+    return $ret;
+  }
+
+  /**
+   * displays info bar
+   *
+   * @param $controls
+   *   controls for the page on the bar
+   * @param $q
+   *   search query
+   * @param $start
+   *   start number of current page
+   * @param $span
+   *   number of items on current page
+   * @param $total
+   *   total number of records found by current search
+   */
+  function displayInfoBarBlock($controls,$q,$start,$span,$total) {
+
+    if ($total<$span) { 
+      $span = $total; 
+    }
+    $start_count = ($total>0)?$start+1:$start;
+    $span_count = ($start+$span>$total)?$total:$start+$span;
+
+    if ($controls) {
+      $left_text = $controls;
+    }
+    elseif ($q != NULL) {
+      $left_text = "<small><small>" . _("Searched for") . " <u>" . $q . "</u></small></small>";
+    }
+
+    if ($span<$total) {
+      $right_text = "<small><small>" . sprintf(_("Results %d - %d of %d"),$start_count,$span_count,$total) . "</small></small>";
+    } else {
+      $right_text = "<small><small>" . sprintf(_("Results %d"),$total) . "</small></small>";
+    }
+
+    $ret .= "
+      <table id='navbar' width='100%'>
+        <tr>
+          <td>
+           " . $left_text . "
+         </td>
+         <td align='right'>
+           " . $right_text ."
+         </td>
+       </tr>
+     </table>";
+
+    return $ret;
+  }
+
+  /**
+   * displays navigation bar
+   *
+   * @param $q
+   *   search query
+   * @param $start
+   *   start number of current page
+   * @param $span
+   *   number of items on current page
+   * @param $total
+   *   total number of records found by current search
+   */
+  function displayNavigationBlock($m,$q,$url_opts,$start,$span,$total) {
+
+    $start = $start=='' ? 0 : $start ;
+    $span = $span=='' ? 15 : $span ;
+
+    $total_pages = ceil($total/$span);
+    $start_page = floor($start/$span);
+
+    // if more than ten pages start at this page minus ten otherwise start at zero
+    $begin = ($start_page>10)?($start_page-10):0;
+    // if more than ten pages then stop at this page plus ten otherwise stop at last page
+    $end = ($start_page>8)?($start_page+10):10;
+
+    // url
+    $unicode_q = urlencode($q);  // encode search string
+
+    foreach ($url_opts as $key => $value) {
+      $option_text .= "&" . $key . "=" . $value;
+    }
+
+    $url = $_SESSION['ARI_ROOT'] . "?m=" . $m . "&q=" . $unicode_q . $option_text;
+
+    // build
+    if ($start_page!=0) {
+      $start_page_text = "<a href='" . $url . "&start=0'><small>" . _("First") . "</a>&nbsp;</small>
+                       <a href=" . $url . "&start=" . ($start-$span) . "><small><</a>&nbsp;</small>";
+    }
+
+    for($next_page=$begin;($next_page<$total_pages)&&($next_page<$end);$next_page++) {
+      if ($next_page == $start_page) {
+          $middle_page_text .= "<small>" . ($next_page+1) . "&nbsp;</small>";
+      } else {
+          $middle_page_text .= "<a href='" . $url . "&start=" . ($next_page*$span) . "'><small>" . ($next_page+1) . "</a>&nbsp;</small>";
+      }
+    }
+    if ( ($start_page != $total_pages-1)  && ($total != 0) ) {
+          $end_page_text = "<a href='" . $url . "&start=" . ($start+$span) . "'><small>></a>&nbsp;</small>
+                          <a href='" . $url . "&start=" . ($total_pages-1)*$span  . "'><small>" . _("Last") . "</a>&nbsp;</small>";
+    }
+
+    $ret .= "<div class='bar_center'>
+              " . $start_page_text . "
+              " . $middle_page_text . "
+              " . $end_page_text . "
+             </div>";
+
+    return $ret;
+  }
+}  
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/lang.php b/fs_selfservice/fri/includes/lang.php
new file mode 100644 (file)
index 0000000..b27b8e3
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+
+/**
+ * @file
+ * i18n language functions
+ */
+
+/**
+  * Class for login
+  */
+class Language {
+
+  var $error;
+
+  /**
+   * Sets i18n locale language
+   *
+   * sets the language for i18n php gettext module
+   * (gettext has to be enabled in the php.ini)
+   *
+   */
+  function set() {
+
+    if (extension_loaded('gettext')) {
+
+      // try and find the default locale
+      $default_lang = preg_replace('/-/','_',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
+
+      $locale = 'en_US';
+      $locale_dir = "./locale";
+      $directories = getdirectories($locale_dir,"");
+      foreach($directories as $directory) {
+        $buf = substr($directory,strlen($locale_dir)+1,strlen($directory) - strlen($locale_dir));
+        if (preg_match("/" . $buf . "/i",$default_lang)) {
+          $locale = $buf;  
+          break;
+        }
+      }
+
+      // set locale
+      $language = isset($_COOKIE['ari_lang']) ? $_COOKIE['ari_lang'] : $locale;
+      putenv("LANG=$language"); 
+      putenv("LANGUAGE=$language");
+      setlocale(LC_MESSAGES,$language);
+      bindtextdomain('ari','./locale');
+      bind_textdomain_codeset('ari', 'UTF-8');
+      textdomain('ari');
+
+    } else {
+      function _($str) {
+        return $str;
+      }
+    }
+  }
+
+  /**
+   * Sets the i18n language in a cookie
+   *
+   * @param $lang_code
+   *   length of random number
+   */
+  function setCookie($lang_code) {
+
+    if (extension_loaded('gettext')) {
+      setcookie("ari_lang", $lang_code, time()+365*24*60*60);
+    }
+  }
+
+  /**
+   * Sets the i18n language in a cookie
+   *
+   * @param $lang_code
+   *   length of random number
+   */
+  function getForm() {
+
+    // lang setting options
+    if (extension_loaded('gettext')) {
+
+      $langOptions = "
+        <script>
+          function setCookie(name,value) {
+            var t = new Date();
+            var e = new Date();
+            e.setTime(t.getTime() + 365*24*60*60);
+            document.cookie = name+\"=\"+escape(value) + \";expires=\"+e.toGMTString();
+          }
+        </script>
+        <form class='lang' name='lang' action=" . $_SESSION['ARI_ROOT'] . " method='POST'>
+          <select class='lang_code' name='lang_code'  onChange=\"setCookie('ari_lang',document.lang.lang_code.value); window.location.reload();\">
+            <option value='en_US' " . ($_COOKIE['ari_lang']=='en_US' ? 'selected' : '') .  ">English</option>
+            <option value='es_ES' " . ($_COOKIE['ari_lang']=='es_ES' ? 'selected' : '') .  ">Espa&ntilde;ol</option>
+            <option value='fr_FR' " . ($_COOKIE['ari_lang']=='fr_FR' ? 'selected' : '') .  ">French</option>
+            <option value='de_DE' " . ($_COOKIE['ari_lang']=='de_DE' ? 'selected' : '') .  ">German</option>
+            <option value='el_GR' " . ($_COOKIE['ari_lang']=='el_GR' ? 'selected' : '') .  ">Greek</option>
+            <option value='he_IL' " . ($_COOKIE['ari_lang']=='he_IL' ? 'selected' : '') .  ">Hebrew</option>
+            <option value='hu_HU' " . ($_COOKIE['ari_lang']=='hu_HU' ? 'selected' : '') .  ">Hungarian</option>
+            <option value='it_IT' " . ($_COOKIE['ari_lang']=='it_IT' ? 'selected' : '') .  ">Italian</option>
+            <option value='pt_BR' " . ($_COOKIE['ari_lang']=='pt_BR' ? 'selected' : '') .  ">Portuguese</option>
+            <option value='sv_SE' " . ($_COOKIE['ari_lang']=='sv_SE' ? 'selected' : '') .  ">Swedish</option>
+          </select>
+        </form>";
+    } 
+
+    return $langOptions;
+  }
+
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/login.php b/fs_selfservice/fri/includes/login.php
new file mode 100644 (file)
index 0000000..826692c
--- /dev/null
@@ -0,0 +1,477 @@
+<?php
+
+/**
+ * @file
+ * login functions
+ */
+
+/**
+  * Class for login
+  */
+class Login {
+
+  var $error;
+
+  /**
+    * Authenticate user and register user information into a session
+    */
+  function Auth() {
+
+    global $ARI_ADMIN_USERNAME;
+    global $ARI_ADMIN_PASSWORD;
+    global $ARI_ADMIN_EXTENSIONS;
+    global $ARI_CRYPT_PASSWORD;
+    global $ASTERISK_VOICEMAIL_CONF;
+    global $ASTERISK_VOICEMAIL_CONTEXT;
+    global $ASTERISK_VOICEMAIL_PATH;
+    global $ASTERISK_PROTOCOLS;
+    global $CALLMONITOR_ADMIN_EXTENSIONS;
+    global $ARI_NO_LOGIN;
+    global $ARI_DEFAULT_ADMIN_PAGE;
+    global $ARI_DEFAULT_USER_PAGE;
+
+    $crypt = new Crypt();
+
+    // init variables
+    $extension = '';
+    $displayname = '';
+    $vm_password = '';
+    $category = '';
+    $context = '';
+    $voicemail_enabled = '';
+    $voicemail_email_address = '';
+    $voicemail_pager_address = '';
+    $voicemail_email_enable = '';
+    $admin = '';
+    $admin_callmonitor = '';
+    $default_page = '';
+
+    $username = '';
+    $password = '';
+
+    // get the ari authentication cookie 
+    $data = '';
+    $chksum = '';
+    if (isset($_COOKIE['ari_auth'])) {
+      $buf = unserialize($_COOKIE['ari_auth']);
+      list($data,$chksum) = $buf;
+    }
+    if (md5($data) == $chksum) {
+      $data = unserialize($crypt->decrypt($data,$ARI_CRYPT_PASSWORD));
+      $username = $data['username'];
+      $password = $data['password'];
+    }
+
+    if (isset($_POST['username']) && 
+          isset($_POST['password'])) {
+      $username = $_POST['username'];
+      $password = $_POST['password'];
+    }
+
+    // init email options array
+    $voicemail_email = array();
+
+    // when login, make a new session
+    if ($username && !$ARI_NO_LOGIN) {
+
+      $auth = false;
+
+      // check admin
+      if (!$auth) {
+        if ($username==$ARI_ADMIN_USERNAME && 
+              $password==$ARI_ADMIN_PASSWORD) {
+
+          // authenticated
+          $auth = true; 
+
+          $extension = 'admin';
+          $name = 'Administrator';
+          $admin = 1;
+          $admin_callmonitor = 1;
+
+          $default_page = $ARI_DEFAULT_ADMIN_PAGE;
+        }
+      }
+
+      // check voicemail login
+      if (!$auth) {
+
+        if (is_readable($ASTERISK_VOICEMAIL_CONF)) {
+
+          $lines = file($ASTERISK_VOICEMAIL_CONF);
+
+          // look for include files and tack their lines to end of array
+          foreach ($lines as $key => $line) {
+
+            if (preg_match("/include/i",$line)) {
+
+              $include_filename = '';
+              $parts = split(' ',$line);
+              if (isset($parts[1])) {
+                $include_filename = trim($parts[1]);
+              }
+
+              if ($include_filename) {
+                $path_parts = pathinfo($ASTERISK_VOICEMAIL_CONF);
+                $include_path = fixPathSlash($path_parts['dirname']) . $include_filename;
+                foreach (glob($include_path) as $include_file) {
+                  $include_lines = file($include_file);
+                  $lines = array_merge($include_lines,$lines);
+                }
+              }
+            }
+          }
+
+          // process
+          foreach ($lines as $key => $line) {
+
+            // check for current context and process
+            if (preg_match("/\[.*\]/i",$line)) {
+              $currentContext = trim(preg_replace('/\[|\]/', '', $line));
+            }
+            if ($ASTERISK_VOICEMAIL_CONTEXT &&
+                  $currentContext!=$ASTERISK_VOICEMAIL_CONTEXT) {
+              continue;
+            }
+
+            // check for user and process
+            unset($value);
+            $parts = split('=>',$line);
+            if (isset($parts[0])) {
+              $var = $parts[0];
+            }
+            if (isset($parts[1])) {
+              $value = $parts[1];
+            }
+            $var = trim($var);
+            if ($var==$username && $value) {
+              $buf = split(',',$value);
+              if ($buf[0]==$password) {  
+
+                // authenticated
+                $auth = true; 
+                $extension = $username;
+                $displayname = $buf[1];
+                $vm_password = $buf[0];
+                $default_page = $ARI_DEFAULT_USER_PAGE;
+                $context = $currentContext;
+                $voicemail_enabled = 1;
+                $voicemail_email_address = $buf[2];
+                $voicemail_pager_address = $buf[3];
+                
+                if ($voicemail_email_address || $voicemail_pager_address) {
+                  $voicemail_email_enable = 1;
+                }
+
+                $options = split('\|',$buf[4]);
+                foreach ($options as $option) {
+                  $opt_buf = split('=',$option);
+                  $voicemail_email[$opt_buf[0]] = trim($opt_buf[1]);
+                }
+
+                $admin = 0;
+                if ($ARI_ADMIN_EXTENSIONS) {
+                  $extensions = split(',',$ARI_ADMIN_EXTENSIONS);
+                  foreach ($extensions as $key => $value) {
+                    if ($extension==$value) {
+                      $admin = 1;
+                      break 2;
+                    }
+                  }
+                }
+  
+                $admin_callmonitor = 0;
+                if ($CALLMONITOR_ADMIN_EXTENSIONS) {
+                  $extensions = split(',',$CALLMONITOR_ADMIN_EXTENSIONS);
+                  foreach ($extensions as $key => $value) {
+                    if ($value=='all' || $extension==$value) {
+                      $admin_callmonitor = 1;
+                      break 2;
+                    }
+                  }
+                }
+              }
+              else {
+                $_SESSION['ari_error'] = "Incorrect Password";
+                return;
+              }
+            }
+          }
+        }
+        else {
+          $_SESSION['ari_error'] = "File not readable: " . $ASTERISK_VOICEMAIL_CONF;
+          return;
+        }
+      }
+
+      // check sip login
+      if (!$auth) {
+
+        foreach($ASTERISK_PROTOCOLS as $protocol => $value) {
+
+          $config_files = split(';',$value['config_files']);
+          foreach ($config_files as $config_file) {
+
+            if (is_readable($config_file)) {
+
+              $lines = file($config_file);
+              foreach ($lines as $key => $line) {
+
+                unset($value);
+                $parts = split('=',$line);
+                if (isset($parts[0])) {
+                  $var = trim($parts[0]);
+                }
+                if (isset($parts[1])) {
+                  $value = trim($parts[1]);
+                }
+                if ($var=="username") {
+                  $protocol_username = $value;
+                }
+                if ($var=="secret") {
+
+                  $protocol_password = $value;
+                  if ($protocol_username==$username &&
+                        $protocol_password==$password) {  
+
+                    // authenticated
+                    $auth = true;  
+                    $extension = $username ;
+                    $displayname = $username;
+                    $default_page = $ARI_DEFAULT_ADMIN_PAGE;
+  
+                    $admin = 0;
+                    if ($ARI_ADMIN_EXTENSIONS) {
+                      $extensions = split(',',$ARI_ADMIN_EXTENSIONS);
+                      foreach ($extensions as $key => $value) {
+                        if ($extension==$value) {
+                          $admin = 1;
+                          break 2;
+                        }
+                      }
+                    }
+
+                    $admin_callmonitor = 0;
+                    if ($CALLMONITOR_ADMIN_EXTENSIONS) {
+                      $extensions = split(',',$CALLMONITOR_ADMIN_EXTENSIONS);
+                      foreach ($extensions as $key => $value) {
+                        if ($value=='all' || $extension==$value) {
+                          $admin_callmonitor = 1;
+                          break 2;
+                        }
+                      }
+                    }
+                  }
+                  else if ($protocol_username==$username &&
+                             $protocol_password!=$password) {
+                    $_SESSION['ari_error'] = _("Incorrect Password");
+                    return;
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+
+      // let user know bad login
+      if (!$auth) {
+        $_SESSION['ari_error'] = _("Incorrect Username or Password");
+      }
+
+      // if authenticated and user wants to be remembered, set cookie 
+      $remember = '';
+      if (isset($_POST['remember'])) {
+        $remember = $_POST['remember'];
+      }
+      if ($auth && $remember) {
+
+        $data = array('username' => $username, 'password' => $password);
+        $data = $crypt->encrypt(serialize($data),$ARI_CRYPT_PASSWORD);
+
+        $chksum = md5($data);
+
+        $buf = serialize(array($data,$chksum));
+        setcookie('ari_auth',$buf,time()+365*24*60*60,'/');
+      }
+
+      // set category
+      if (!$category) {
+        $category = "general";
+      }
+   
+      // set context
+      if (!$context) {
+        $context = "default";
+      }
+
+      // no login user
+      if ($ARI_NO_LOGIN) {
+        $extension = 'admin';
+        $name = 'Administrator';
+        $admin_callmonitor = 1;
+        $default_page = $ARI_DEFAULT_ADMIN_PAGE;
+      } 
+
+      // get outboundCID if it exists
+      $outboundCID = $this->getOutboundCID($extension);
+
+      // set
+      if ($extension) {
+        $_SESSION['ari_user']['extension'] = $extension;
+        $_SESSION['ari_user']['outboundCID'] = $outboundCID;
+        $_SESSION['ari_user']['displayname'] = $displayname;
+        $_SESSION['ari_user']['voicemail_password'] = $vm_password;
+        $_SESSION['ari_user']['category'] = $category;
+        $_SESSION['ari_user']['context'] = $context;
+        $_SESSION['ari_user']['voicemail_enabled'] = $voicemail_enabled;
+        $_SESSION['ari_user']['voicemail_email_address'] = $voicemail_email_address;
+        $_SESSION['ari_user']['voicemail_pager_address'] = $voicemail_pager_address;
+        $_SESSION['ari_user']['voicemail_email_enable'] = $voicemail_email_enable;
+        foreach ($voicemail_email as $key => $value) {
+          $_SESSION['ari_user']['voicemail_email'][$key] = $value;
+        }
+        $_SESSION['ari_user']['admin'] = $admin;
+        $_SESSION['ari_user']['admin_callmonitor'] = $admin_callmonitor;
+        $_SESSION['ari_user']['default_page'] = $default_page;
+
+        // force the session data saved
+        session_write_close();
+      } 
+    }
+  } 
+
+  /*
+   * Gets user outbound caller id
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $ret
+   *   outbound caller id 
+   */
+  function getOutboundCID($extension) {
+
+    global $asterisk_manager_interface;
+
+    $ret = '';
+    $response = $asterisk_manager_interface->Command2("Action: Command\r\nCommand: database get AMPUSER $extension/outboundcid\r\n\r\n");
+    if ($response) {
+    
+               $posLeft  = strpos( $response, "<")+strlen("<");
+               $posRight = strpos( $response, ">", $posLeft);
+               $ret = substr( $response,$posLeft,$posRight-$posLeft);
+    }
+    return $ret;
+  }
+
+  /**
+    * logout
+    */
+  function Unauth() {
+    unset($_COOKIE["ari_auth"]);
+    setcookie('ari_auth',"",time(),'/');
+    unset($_SESSION['ari_user']);
+  }
+
+  /**
+   * Provide a login form for user
+   *
+   * @param $request
+   *   Variable to hold data entered into form
+   */
+  function GetForm() {
+
+    global $ARI_NO_LOGIN;
+
+    if ($ARI_NO_LOGIN) {
+      $ret = '';
+      return;
+    }
+
+    if (isset($_GET['login'])) {
+      $login = $_GET['login'];
+    }
+
+    // if user name and password were given, but there was a problem report the error
+    if ($this->error!='') {
+      $ret = $this->error;
+    }
+
+    $language = new Language();
+    $display = new Display(NULL);
+
+    // new header
+    $ret .= $display->DisplayHeaderText(_("Login"));
+    $ret .= $display->DisplayLine();
+    $ret .= checkErrorMessage();
+
+    $ret .= "
+      <table id='login'>
+        <form id='login' name='login' action=" . $_SESSION['ARI_ROOT'] . " method='POST'>
+          <tr>
+            <td class='right'>
+              <small><small>" . _("Login") . ":&nbsp;&nbsp;</small></small>
+            </td>
+            <td>
+              <input type='text' name='username' value='" . $login . "' maxlength=20 tabindex=1>
+            </td>
+          </tr>
+          <tr>
+            <td class='right'>
+              <small><small>" . _("Password") . ":&nbsp;&nbsp;</small></small>
+            </td>
+            <td colspan=1>
+              <input type='password' name='password' maxlength=20 tabindex=2>
+            </td>
+          </tr>        
+          <tr>                         
+            <td></td>  
+            <td>
+              <input type='submit' name='btnSubmit' value='" . _("Submit") . "' tabindex=3></small></small></p>
+            </td>
+          </tr>
+          <tr>
+            <td class='right'>
+              <input type='checkbox' name='remember'>
+            </td>
+            <td class='left'>
+              <p class='small'>" . _("Remember Password") . "</p>
+            </td>
+          </tr>
+        </form>
+        <tr>                           
+          <td></td>    
+          <td>
+            " . $language->getForm() . "
+          </td>
+        </tr>
+        <tr><td>&nbsp;</td></tr>
+      </table>
+      <table id='login_text'>
+        <tr>
+          <td>" .
+            _("Use your <b>Voicemail Mailbox and Password</b>") . "<br>" .
+            _("This is the same password used for the phone") . "<br>" .
+            "<br>" . 
+            _("For password maintenance or assistance, contact your Phone System Administrator.") . "<br>" . "
+          </td>
+        </tr>
+      </table>";
+
+    $ret .= "
+      <script type='text/javascript'> 
+      <!-- 
+        if (document.login) { 
+          document.login.username.focus(); 
+        } 
+      // --> 
+      </script>";
+
+    return $ret;
+  } 
+
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/includes/main.conf.php b/fs_selfservice/fri/includes/main.conf.php
new file mode 100644 (file)
index 0000000..31592ca
--- /dev/null
@@ -0,0 +1,330 @@
+<?php
+
+/**
+ * @file
+ * site-specific configuration file.
+ */
+
+###############################
+# AMP or standalone settings
+###############################
+#
+# From AMP.  Used for logon to database.
+#
+$AMP_FUNCTIONS_FILES = "../admin/functions.php;../admin/functions.inc.php";
+$AMPORTAL_CONF_FILE = "/etc/amportal.conf";
+
+#
+# Host for Asterisk Manager Interface
+#
+$ASTERISKMGR_DBHOST = "localhost";
+
+#
+# Database options for older legacy AMP installations (pre-FreePBX)
+#   - $LEGACY_AMP_DBFILE only needs to be set if using a database like sqlite 
+#
+$LEGACY_AMP_DBHOST = "localhost";
+$LEGACY_AMP_DBENGINE = "mysql";
+$LEGACY_AMP_DBFILE = "";
+$LEGACY_AMP_DBNAME = "asterisk";
+
+#
+# Database cdr settings
+#   - Only need to update these settings if standalone or an older AMP version (pre-FreePBX) is used
+#   - $ASTERISKCDR_DBFILE only needs to be set if using a database like sqlite
+#   Options: supported database types (others are supported, but not listed)
+#     'mysql' - MySQL
+#     'pgsql' - PostgreSQL
+#     'oci8' - Oracle
+#     'odbc' - ODBC
+#
+$ASTERISKCDR_DBHOST = "localhost";
+$ASTERISKCDR_DBENGINE = "mysql";
+$ASTERISKCDR_DBFILE = "";
+$ASTERISKCDR_DBNAME = "asteriskcdrdb";
+$ASTERISKCDR_DBTABLE = "cdr";
+
+#
+# Standalone, for use without AMP
+#   set use = true;
+#   set asterisk_mgruser to Asterisk Call Manager username
+#   set asterisk_mgrpass to Asterisk Call Manager password
+#
+$STANDALONE['use'] = false;
+$STANDALONE['asterisk_mgruser'] = "";
+$STANDALONE['asterisk_mgrpass'] = "";
+$STANDALONE['asteriskcdr_dbuser'] = "";
+$STANDALONE['asteriskcdr_dbpass'] = "";
+
+###############################
+# authentication settings
+###############################
+#
+# For using the Call Monitor only
+#   option: 0 - use Authentication, Voicemail, and Call Monitor
+#           1 - use only the Call Monitor
+#
+$ARI_NO_LOGIN = 0;
+
+#
+# Admin only account
+#
+$ARI_ADMIN_USERNAME = "admin";
+$ARI_ADMIN_PASSWORD ="ari_password";
+#
+# Admin extensions
+#   option: Comma delimited list of extensions
+#
+$ARI_ADMIN_EXTENSIONS = "";
+
+#
+# Authentication password to unlock cookie password
+#   This must be all continuous and only letters and numbers
+#
+$ARI_CRYPT_PASSWORD = "z1Mc6KRxA7Nw90dGjY5qLXhtrPgJOfeCaUmHvQT3yW8nDsI2VkEpiS4blFoBuZ";
+
+###############################
+# modules settings
+###############################
+#
+# modules with admin only status (they will not be displayed for regular users)
+#   option: Comma delimited list of module names (ie voicemail,callmonitor,help,settings)
+#
+$ARI_ADMIN_MODULES = "";
+
+#
+# disable modules (you can also just delete them from /recordings/modules without problems)
+#   option: Comma delimited list of module names (ie voicemail,callmonitor,help,settings)
+#
+$ARI_DISABLED_MODULES = "";
+
+#
+# sets the default admin page
+#   option: Comma delimited list of module names (ie voicemail,callmonitor,help,settings)
+#
+$ARI_DEFAULT_ADMIN_PAGE = "callmonitor";
+
+#
+# sets the default user page
+#   option: Comma delimited list of module names (ie voicemail,callmonitor,help,settings)
+#
+$ARI_DEFAULT_USER_PAGE = "voicemail";
+
+#
+# enables ajax page refresh
+#   option: 0 - disable ajax page refresh
+#           1 - enable ajax page refresh
+#
+$AJAX_PAGE_REFRESH_ENABLE = 1;
+
+#
+# sets the default user page
+#   option: refresh time in 'minutes:seconds' (0 to inifinity) : (0 to 59)
+#
+$AJAX_PAGE_REFRESH_TIME ="01:00";
+###############################
+# voicemail settings
+###############################
+#
+# voicemail config.
+#
+$ASTERISK_VOICEMAIL_CONF = "/etc/asterisk/voicemail.conf";
+
+#
+# To set to a specific context.  
+#   If using default or more than one context then leave blank
+#
+$ASTERISK_VOICEMAIL_CONTEXT = "";
+
+#
+# Location of asterisk voicemail recordings on server
+#    Use semi-colon for multiple paths
+#
+$ASTERISK_VOICEMAIL_PATH = "/var/spool/asterisk/voicemail";
+
+#
+# valid mailbox folders
+#
+$ASTERISK_VOICEMAIL_FOLDERS = array();
+$ASTERISK_VOICEMAIL_FOLDERS[0]['folder'] = "INBOX";
+$ASTERISK_VOICEMAIL_FOLDERS[0]['name'] = _("INBOX");
+$ASTERISK_VOICEMAIL_FOLDERS[1]['folder'] = "Family";
+$ASTERISK_VOICEMAIL_FOLDERS[1]['name'] = _("Family");
+$ASTERISK_VOICEMAIL_FOLDERS[2]['folder'] = "Friends";
+$ASTERISK_VOICEMAIL_FOLDERS[2]['name'] = _("Friends");
+$ASTERISK_VOICEMAIL_FOLDERS[3]['folder'] = "Old";
+$ASTERISK_VOICEMAIL_FOLDERS[3]['name'] = _("Old");
+$ASTERISK_VOICEMAIL_FOLDERS[4]['folder'] = "Work";
+$ASTERISK_VOICEMAIL_FOLDERS[4]['name'] = _("Work");
+
+###############################
+# call monitor settings
+###############################
+#
+# Location of asterisk call monitor recordings on server
+#
+$ASTERISK_CALLMONITOR_PATH = "/var/spool/asterisk/monitor";
+
+#
+# Extensions with access to all call monitor recordings
+#   option: Comma delimited list of extensions or "all"
+#
+$CALLMONITOR_ADMIN_EXTENSIONS ="";
+#
+# Allow call monitor users to delete monitored calls
+#   option: 0 - do not show controls
+#           1 - show controls
+#
+$CALLMONITOR_ALLOW_DELETE = 1;
+
+#
+# Allow for aggressive matching of recording files to database records
+#     will match recordings that are marked several seconds off
+#   option: 0 - do not aggressively match
+#           1 - aggressively match
+#
+$CALLMONITOR_AGGRESSIVE_MATCHING = 1;
+
+#
+# Limits log/recording file matching to exact matching
+#     will not try to look through all the recordings and make a best match
+#     even if there is not uniqueid
+#     requires that the MYSQL_UNIQUEID flag be compiled in asterisk-addons
+#     (in the asterisk-addon Makefile add the following "CFLAGS+=-DMYSQL_LOGUNIQUEID")
+#
+#     * use if there are or will be more than 2500 recording files
+#
+#   option: 0 - do not exact match 
+#           1 - only exact match 
+#
+$CALLMONITOR_ONLY_EXACT_MATCHING = 0;
+
+###############################
+# conference page settings
+###############################
+#
+# Meetme extension prefix
+#   for this module to function, the user has to have
+#   a meetme conference room {prefix}{extension}
+#
+$CONFERENCE_WEBMEETME_PREFIX = "";
+
+#
+# url to web meetme conference room
+#   example: "http://example.mycompany.com/webmeetme"
+#
+$CONFERENCE_WEBMEETME_URL = "";
+
+###############################
+# help page settings
+###############################
+#
+# help feature codes
+#   list of handset options and their function
+#
+$ARI_HELP_FEATURE_CODES = array();
+//$ARI_HELP_FEATURE_CODES['*411'] = _("Directory");
+//$ARI_HELP_FEATURE_CODES['*43'] = _("Echo Test");
+//$ARI_HELP_FEATURE_CODES['*60'] = _("Time");
+//$ARI_HELP_FEATURE_CODES['*61'] = _("Weather");
+//$ARI_HELP_FEATURE_CODES['*62'] = _("Schedule wakeup call");
+//$ARI_HELP_FEATURE_CODES['*65'] = _("festival test (your extension is XXX)");
+//$ARI_HELP_FEATURE_CODES['*77'] = _("IVR Recording");
+//$ARI_HELP_FEATURE_CODES['*99'] = _("Playback IVR Recording");
+//$ARI_HELP_FEATURE_CODES['666'] = _("Test Fax");
+//$ARI_HELP_FEATURE_CODES['7777'] = _("Simulate incoming call");
+
+$ARI_HELP_FEATURE_CODES['*72'] = _("Call Forward All Activate");
+$ARI_HELP_FEATURE_CODES['*73'] = _("Call Forward All Deactivate");
+$ARI_HELP_FEATURE_CODES['*74'] = _("Call Forward All Prompting Deactivate");
+$ARI_HELP_FEATURE_CODES['*90'] = _("Call Forward Busy Activate");
+$ARI_HELP_FEATURE_CODES['*91'] = _("Call Forward Busy Deactivate");
+$ARI_HELP_FEATURE_CODES['*92'] = _("Call Forward Busy Prompting Deactivate");
+$ARI_HELP_FEATURE_CODES['*52'] = _("Call Forward No Answer/Unavailable Activate");
+$ARI_HELP_FEATURE_CODES['*53'] = _("Call Forward No Answer/Unavailable Deactivate");
+$ARI_HELP_FEATURE_CODES['*70'] = _("Call Waiting - Activate");
+$ARI_HELP_FEATURE_CODES['*71'] = _("Call Waiting - Deactivate");
+$ARI_HELP_FEATURE_CODES['*78'] = _("Do-Not-Disturb Activate");
+$ARI_HELP_FEATURE_CODES['*79'] = _("Do-Not-Disturb Deactivate");
+$ARI_HELP_FEATURE_CODES['*97'] = _("My Voicemail");
+$ARI_HELP_FEATURE_CODES['*98'] = _("Dial Voicemail");
+
+###############################
+# settings page settings
+###############################
+#
+# protocol config.
+#   config_file options: semi-colon delimited list of extensions
+#
+$ASTERISK_PROTOCOLS = array();
+$ASTERISK_PROTOCOLS['iax']['table'] = "iax";
+$ASTERISK_PROTOCOLS['iax']['config_files'] = "/etc/asterisk/iax.conf;/etc/asterisk/iax_additional.conf";
+$ASTERISK_PROTOCOLS['sip']['table'] = "sip";
+$ASTERISK_PROTOCOLS['sip']['config_files'] = "/etc/asterisk/sip.conf;/etc/asterisk/sip_additional.conf";
+$ASTERISK_PROTOCOLS['zap']['table'] = "zap";
+$ASTERISK_PROTOCOLS['zap']['config_files'] = "/etc/asterisk/zapata.conf;/etc/asterisk/zapata_additional.conf";
+
+# Settings for Follow-Me Select Boxes in seconds
+#
+
+$SETTINGS_PRERING_LOW = 4;
+$SETTINGS_PRERING_HIGH = 30;
+$SETTINGS_LISTRING_LOW = 6;
+$SETTINGS_LISTRING_HIGH = 60;
+
+$SETTINGS_FOLLOW_ME_LIST_MAX = 5;
+$SETTINGS_ALLOW_VMX_SETTINGS = true;
+#
+# For setting 
+#   option: 0 - do not show controls
+#           1 - show controls
+#
+$SETTINGS_ALLOW_CALLFORWARD_SETTINGS = 1;
+$SETTINGS_ALLOW_VOICEMAIL_SETTINGS = 1;
+$SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET = 1;
+
+#
+# password length 
+#   setting: number of characters required for changing voicemail password
+#
+$SETTINGS_VOICEMAIL_PASSWORD_LENGTH = 3;
+
+#
+# password exact length
+#   option: 0 - do not require exact length when setting the password
+#           1 - require exact length when setting the password
+#
+$SETTINGS_VOICEMAIL_PASSWORD_EXACT = 0;
+
+#
+# voicemail email option descriptions
+#
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS = array();
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['attach'] = _("Email voicemail as attachment");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['saycid'] = _("Say caller id in recording emailed");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['envelope'] = _("Say envelop (date/time) in recording emailed");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['delete'] = _("Delete voicemail when emailed");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['nextaftercmd'] = _("Play next message after deleting current message");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['review'] = _("Ask caller to review their voicemail before sending");
+$SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS['maxmessage'] = _("Maximum time in seconds a voicemail will record");
+
+#
+# Default
+#   option: ".wav" - wav format
+#           ".gsm" - gsm format
+#
+$ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT = ".wav";
+
+#
+# For setting 
+#   option: 0 - do not show controls
+#           1 - show controls
+#
+$SETTINGS_ALLOW_CALL_RECORDING_SET = 1;
+
+
+$SETTINGS_ALLOW_PHONE_SETTINGS = 1;
+
+
+
+?>
diff --git a/fs_selfservice/fri/index.php b/fs_selfservice/fri/index.php
new file mode 100644 (file)
index 0000000..0fe6149
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+/**
+ * @file
+ * main
+ */
+
+include_once("includes/bootstrap.php");
+ariPageHeader();
+include_once("includes/common.php");
+
+handler();
+
+ariPageFooter();
+
+
+?>
+
+
+
diff --git a/fs_selfservice/fri/locale/ari.po b/fs_selfservice/fri/locale/ari.po
new file mode 100644 (file)
index 0000000..aff5a75
--- /dev/null
@@ -0,0 +1,590 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr ""
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr ""
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+msgid "Asterisk command not understood"
+msgstr ""
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr ""
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr ""
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr ""
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr ""
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr ""
+
+#: ../includes/display.php:139
+#, php-format
+msgid "Results %d - %d of %d"
+msgstr ""
+
+#: ../includes/display.php:141
+#, php-format
+msgid "Results %d"
+msgstr ""
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr ""
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr ""
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr ""
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr ""
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr ""
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr ""
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr ""
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr ""
+
+#: ../includes/login.php:451
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr ""
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr ""
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr ""
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr ""
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr ""
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr ""
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr ""
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr ""
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+msgid "IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr ""
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr ""
+
+#: ../modules/callmonitor.module:147
+msgid "duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:150
+msgid "ignore"
+msgstr ""
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr ""
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr ""
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr ""
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr ""
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr ""
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr ""
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr ""
+
+#: ../modules/callmonitor.module:259
+#, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr ""
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr ""
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr ""
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr ""
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr ""
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, php-format
+msgid "Conference for %s (%s%s)"
+msgstr ""
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr ""
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr ""
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr ""
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr ""
+
+#: ../modules/settings.module:157
+#, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr ""
+
+#: ../modules/settings.module:162
+#, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr ""
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr ""
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, php-format
+msgid "%s does not exist or is not writable"
+msgstr ""
+
+#: ../modules/settings.module:223
+msgid "Voicemail email and pager address not changed"
+msgstr ""
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+msgid "Voicemail email settings not changed"
+msgstr ""
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr ""
+
+#: ../modules/settings.module:408
+msgid "Call Routing"
+msgstr ""
+
+#: ../modules/settings.module:411
+msgid "Call Forwarding:"
+msgstr ""
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+msgid "Enable"
+msgstr ""
+
+#: ../modules/settings.module:431
+#, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr ""
+
+#: ../modules/settings.module:434
+#, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr ""
+
+#: ../modules/settings.module:439
+msgid "Voicemail Password:"
+msgstr ""
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr ""
+
+#: ../modules/settings.module:492
+msgid "Email Voicemail To:"
+msgstr ""
+
+#: ../modules/settings.module:498
+msgid "Pager Voicemail To:"
+msgstr ""
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr ""
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr ""
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr ""
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr ""
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr ""
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr ""
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr ""
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr ""
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr ""
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr ""
+
+#: ../modules/settings.module:669
+#, php-format
+msgid "Settings for %s (%s)"
+msgstr ""
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr ""
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr ""
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr ""
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr ""
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr ""
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr ""
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr ""
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr ""
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr ""
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr ""
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+msgid "Voicemail Login not found."
+msgstr ""
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr ""
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr ""
+
+#: ../modules/voicemail.module:428
+#, php-format
+msgid "Voicemail for %s (%s)"
+msgstr ""
+
+#: ../modules/voicemail.module:678
+#, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr ""
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr ""
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr ""
diff --git a/fs_selfservice/fri/locale/ari.utf-8.po b/fs_selfservice/fri/locale/ari.utf-8.po
new file mode 100644 (file)
index 0000000..aff5a75
--- /dev/null
@@ -0,0 +1,590 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr ""
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr ""
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+msgid "Asterisk command not understood"
+msgstr ""
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr ""
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr ""
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr ""
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr ""
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr ""
+
+#: ../includes/display.php:139
+#, php-format
+msgid "Results %d - %d of %d"
+msgstr ""
+
+#: ../includes/display.php:141
+#, php-format
+msgid "Results %d"
+msgstr ""
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr ""
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr ""
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr ""
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr ""
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr ""
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr ""
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr ""
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr ""
+
+#: ../includes/login.php:451
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr ""
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr ""
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr ""
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr ""
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr ""
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr ""
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr ""
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr ""
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+msgid "IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr ""
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr ""
+
+#: ../modules/callmonitor.module:147
+msgid "duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:150
+msgid "ignore"
+msgstr ""
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr ""
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr ""
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr ""
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr ""
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr ""
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr ""
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr ""
+
+#: ../modules/callmonitor.module:259
+#, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr ""
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr ""
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr ""
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr ""
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr ""
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, php-format
+msgid "Conference for %s (%s%s)"
+msgstr ""
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr ""
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr ""
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr ""
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr ""
+
+#: ../modules/settings.module:157
+#, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr ""
+
+#: ../modules/settings.module:162
+#, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr ""
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr ""
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, php-format
+msgid "%s does not exist or is not writable"
+msgstr ""
+
+#: ../modules/settings.module:223
+msgid "Voicemail email and pager address not changed"
+msgstr ""
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+msgid "Voicemail email settings not changed"
+msgstr ""
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr ""
+
+#: ../modules/settings.module:408
+msgid "Call Routing"
+msgstr ""
+
+#: ../modules/settings.module:411
+msgid "Call Forwarding:"
+msgstr ""
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+msgid "Enable"
+msgstr ""
+
+#: ../modules/settings.module:431
+#, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr ""
+
+#: ../modules/settings.module:434
+#, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr ""
+
+#: ../modules/settings.module:439
+msgid "Voicemail Password:"
+msgstr ""
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr ""
+
+#: ../modules/settings.module:492
+msgid "Email Voicemail To:"
+msgstr ""
+
+#: ../modules/settings.module:498
+msgid "Pager Voicemail To:"
+msgstr ""
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr ""
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr ""
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr ""
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr ""
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr ""
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr ""
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr ""
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr ""
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr ""
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr ""
+
+#: ../modules/settings.module:669
+#, php-format
+msgid "Settings for %s (%s)"
+msgstr ""
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr ""
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr ""
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr ""
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr ""
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr ""
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr ""
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr ""
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr ""
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr ""
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr ""
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+msgid "Voicemail Login not found."
+msgstr ""
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr ""
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr ""
+
+#: ../modules/voicemail.module:428
+#, php-format
+msgid "Voicemail for %s (%s)"
+msgstr ""
+
+#: ../modules/voicemail.module:678
+#, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr ""
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr ""
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr ""
diff --git a/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..b94eba2
Binary files /dev/null and b/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..b89b612
--- /dev/null
@@ -0,0 +1,631 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2005 AsteriskPBX.de
+# This file is distributed under the same license as the PACKAGE package.
+# Till Stoemer <ts@AsteriskPBX.de>, 2005.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: ari-de\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-04-03 08:26-0400\n"
+"PO-Revision-Date: 2005-12-10 19:50+0100\n"
+"Last-Translator: Till Stoermer <ts@AsteriskPBX.de>\n"
+"Language-Team: German <ts@AsteriskPBX.de>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:48
+msgid "Asterisk Call Manager not responding"
+msgstr "Der Asterisk Call-Manager reagiert nicht."
+
+#: ../includes/asi.php:56
+msgid "Asterisk authentication failed:"
+msgstr "Anmeldung am Asterisk gescheitert."
+
+#: ../includes/asi.php:98 ../includes/asi.php:112
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "Asterisk reload command not understood"
+
+#: ../includes/bootstrap.php:106
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:209
+msgid "ARI requires a version of PHP 4.0 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:228
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:167
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Kann nicht zum Asterisk-Manager verbinden"
+
+#: ../includes/common.php:168
+msgid ""
+"Check the ARI 'main.conf' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:169
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:170
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:187 ../includes/common.php:202
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"&Uuml;berpr&uuml;fe die AMP-Installation, Asterisk-Datenbank, oder die ARI "
+"main.conf"
+
+#: ../includes/common.php:332
+msgid "Logout"
+msgstr "Abmelden"
+
+#: ../includes/common.php:337
+msgid "Page Not Found."
+msgstr "Seite nicht gefunden"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Suchen"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Suchen nach"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d of %d"
+msgstr "Ergebnis"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "Ergebnis"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Erste"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Letzte"
+
+#: ../includes/login.php:239
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Vicemail-Login nicht gefunden"
+
+#: ../includes/login.php:240
+msgid "No access to voicemail"
+msgstr "Kein Zugriff auf Voicemail"
+
+#: ../includes/login.php:266
+msgid "Incorrect Password"
+msgstr "Falsches Passwort"
+
+#: ../includes/login.php:278
+msgid "Incorrect Username or Password"
+msgstr "Falscher Benutzer oder Passwort"
+
+#: ../includes/login.php:381 ../includes/login.php:391
+msgid "Login"
+msgstr "Anmeldung"
+
+#: ../includes/login.php:399
+msgid "Password"
+msgstr "Passwort"
+
+#: ../includes/login.php:408
+msgid "Submit"
+msgstr "Anmelden"
+
+#: ../includes/login.php:416
+msgid "Remember Password"
+msgstr "Passwort merken"
+
+#: ../includes/login.php:431
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Voicemail Mailbox und Password"
+
+#: ../includes/login.php:432
+msgid "This is the same password used for the phone"
+msgstr "Dieses ist das selbe Passwort, das beim Telefon genutzt wird."
+
+#: ../includes/login.php:434
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"F&uuml;r Passwort-&Auml;nderungen, kontaktieren Sie Ihren Voicemail-Admin"
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "Eingang"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "Familie"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "Freunde"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "Alt"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "Arbeit"
+
+#: ../includes/main.conf.php:213
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:214
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:215 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:326
+msgid "Time"
+msgstr "Uhrzeit"
+
+#: ../includes/main.conf.php:216
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:217
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:218
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:219
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:220
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:221
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:222
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:223
+#, fuzzy
+msgid "IVR Recording"
+msgstr "Aufnahmen"
+
+#: ../includes/main.conf.php:224
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:225
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:226
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:227
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:228
+msgid "Message Center (does no ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:229
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:231
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:232
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:273
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:274
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:275
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:276
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:277
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:278
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:279
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Anrufliste"
+
+#: ../modules/callmonitor.module:132 ../modules/voicemail.module:117
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:303
+#, fuzzy
+msgid "delete"
+msgstr "Ausw&auml;hlen"
+
+#: ../modules/callmonitor.module:147
+#, fuzzy
+msgid "duration"
+msgstr "Dauer"
+
+#: ../modules/callmonitor.module:150
+#, fuzzy
+msgid "ignore"
+msgstr "Keine"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:324
+msgid "Date"
+msgstr "Datum"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:328
+msgid "Caller ID"
+msgstr "Anrufer-Nummer"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "Anrufer"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "Angerufener"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Kontext"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:334
+msgid "Duration"
+msgstr "Dauer"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Monitor"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:375
+msgid "play"
+msgstr "Abspielen"
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Anrufliste"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:459
+msgid "select"
+msgstr "Ausw&auml;hlen"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:460
+msgid "all"
+msgstr "Alle"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:461
+msgid "none"
+msgstr "Keine"
+
+#: ../modules/callmonitor.module:543
+msgid "Only deletes recording files, not cdr log"
+msgstr "Nur die Aufnahme-Datei wird gel&ouml;scht (In der CDR nicht)"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr ""
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:647
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: ../modules/settings.module:122
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:123
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:143 ../modules/settings.module:148
+#: ../modules/settings.module:153 ../modules/settings.module:158
+#: ../modules/settings.module:168 ../modules/settings.module:173
+msgid "Voicemail password not changed"
+msgstr "Voicemail-Passwort nicht ge&auml;ndert"
+
+#: ../modules/settings.module:144
+msgid "Password and password confirm must not be blank"
+msgstr "Passwort und Passwort-Wiederholen-Feld darf nicht leer sein"
+
+#: ../modules/settings.module:149
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "Das Passwort muss aus mindestens 4 Ziffern bestehen."
+
+#: ../modules/settings.module:154
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "Das Passwort muss aus mindestens 4 Ziffern bestehen."
+
+#: ../modules/settings.module:159
+msgid "Password and password confirm do not match"
+msgstr "Die Passwort stimmen nicht &uuml;berein."
+
+#: ../modules/settings.module:169 ../modules/settings.module:174
+#: ../modules/settings.module:226 ../modules/settings.module:231
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "existiert nicht, oder ist nicht lesbar."
+
+#: ../modules/settings.module:215
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "Voicemail-Passwort nicht ge&auml;ndert"
+
+#: ../modules/settings.module:225 ../modules/settings.module:230
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "Voicemail-Passwort nicht ge&auml;ndert"
+
+#: ../modules/settings.module:375
+msgid "Language:"
+msgstr "Sprache"
+
+#: ../modules/settings.module:396
+#, fuzzy
+msgid "Call Routing"
+msgstr "Call Monitor Einstellungen"
+
+#: ../modules/settings.module:399
+msgid "Call Forwarding:"
+msgstr ""
+
+#: ../modules/settings.module:407 ../modules/settings.module:486
+#, fuzzy
+msgid "Enable"
+msgstr "in Tabelle"
+
+#: ../modules/settings.module:418
+msgid "Voicemail Password:"
+msgstr "Voicemail-Passwort"
+
+#: ../modules/settings.module:424
+msgid "Enter again to confirm:"
+msgstr "Erneute Eingabe zum best&auml;tigen"
+
+#: ../modules/settings.module:430
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "Das Passwort muss aus mindestens 4 Ziffern bestehen."
+
+#: ../modules/settings.module:471
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "Voicemail"
+
+#: ../modules/settings.module:477
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "Voicemail"
+
+#: ../modules/settings.module:539
+msgid "Audio Format:"
+msgstr "Audio-Format"
+
+#: ../modules/settings.module:542
+msgid "Best Quality"
+msgstr "Beste Qualit&auml;t"
+
+#: ../modules/settings.module:543
+msgid "Smallest Download"
+msgstr "F&uuml;r geringen Download"
+
+#: ../modules/settings.module:551
+msgid "Voicemail Settings"
+msgstr "Voicemail-Einstellungen"
+
+#: ../modules/settings.module:591
+msgid "Call Monitor Settings"
+msgstr "Call Monitor Einstellungen"
+
+#: ../modules/settings.module:594
+msgid "Record INCOMING:"
+msgstr "Aufnahme eingehender Telefonate:"
+
+#: ../modules/settings.module:596 ../modules/settings.module:604
+msgid "Always"
+msgstr "Immer"
+
+#: ../modules/settings.module:597 ../modules/settings.module:605
+msgid "Never"
+msgstr "Nie"
+
+#: ../modules/settings.module:598 ../modules/settings.module:606
+msgid "On-Demand"
+msgstr "Bei Bedarf"
+
+#: ../modules/settings.module:602
+msgid "Record OUTGOING:"
+msgstr "Aufnahme abgehende Telefonate"
+
+#: ../modules/settings.module:649
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Einstellungen f&uuml;r"
+
+#: ../modules/settings.module:685
+msgid "Update"
+msgstr "Erneuern"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "Voicemail"
+
+#: ../modules/voicemail.module:161
+msgid "A folder must be selected before the message can be moved."
+msgstr ""
+"Ein Ordner muss gew&auml;hlt werden, bevor die Nachricht verschoben werden "
+"kann."
+
+#: ../modules/voicemail.module:175
+msgid "An extension must be selected before the message can be forwarded."
+msgstr ""
+"Ein Anschluss muss gew&auml;hlt werden, bevor die Nachricht weitergeleitet "
+"werden kann."
+
+#: ../modules/voicemail.module:239
+msgid "No Voicemail Recordings for Admin"
+msgstr "No Voicemail Recordings for Admin"
+
+#: ../modules/voicemail.module:306
+msgid "move_to"
+msgstr ""
+
+#: ../modules/voicemail.module:309
+msgid "Folder"
+msgstr "Ordner"
+
+#: ../modules/voicemail.module:313
+msgid "forward_to"
+msgstr ""
+
+#: ../modules/voicemail.module:330
+msgid "Priority"
+msgstr "Prirorit&auml;t"
+
+#: ../modules/voicemail.module:332
+msgid "Orig Mailbox"
+msgstr "Orig Mailbox"
+
+#: ../modules/voicemail.module:364
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:379
+msgid "Voicemail recording(s) was not found."
+msgstr "Sprachnachricht(en) nicht gefunden"
+
+#: ../modules/voicemail.module:380
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:412
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Voicemail"
+
+#: ../modules/voicemail.module:662
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Konnte Mailbox-Ordner nicht erstellen"
+
+#: ../modules/voicemail.module:702
+#, fuzzy, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "Zugriff verweigert auf Ordner"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "Download"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "Kein Verzeichnis, oder nicht lesbar"
+
+#~ msgid "No database connection"
+#~ msgstr "Keine Verbindung zur Datenbank"
+
+#~ msgid "of"
+#~ msgstr "von"
+
+#~ msgid "Login used"
+#~ msgstr "Login genutzt"
+
+#~ msgid "Use your"
+#~ msgstr "Nutze Deine"
+
+#~ msgid "for"
+#~ msgstr "f&uuml;r"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "Das Passwort muss aus mindestens 4 Ziffern bestehen."
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr "Check voicemail audio format on settings page to change from"
+
+#~ msgid "Searching of voicemail is not yet implemented"
+#~ msgstr "Searching of voicemail is not yet implemented"
+
+#~ msgid "on the server"
+#~ msgstr "auf dem Server"
+
+#~ msgid "Folders"
+#~ msgstr "Ordner"
diff --git a/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..6b00b14
Binary files /dev/null and b/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..2566494
--- /dev/null
@@ -0,0 +1,648 @@
+# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER\r
+# This file is distributed under the same license as the PACKAGE package.\r
+# Elias Sofronas <esofronas@gmail.com>, 2005.\r
+# \r
+# \r
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: 2005-11-14 10:06+0200\n"
+"Last-Translator: Elias Sofronas <esofronas@gmail.com>\n"
+"Language-Team: English <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Ο διαχειριστής κλήσεων Asterisk δεν αποκρίνεται"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Η πιστοποίηση στο Asterisk απέτυχε:"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "Η εντολή Asterisk επαναφόρτωσης δεν αναγνωρίστηκε"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Αδύνατη η σύνδεση στον Asterisk Manager"
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"Ελέγχτε την εγκατάσταση του AMP, την βάση δεδομένων του asterisk, ή το ARI "
+"main.conf"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "Αποσύνδεση"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Η σελίδα δεν βρέθηκε"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Εύρεση"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Εύρεση για"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Αποτελέσματα"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "Αποτελέσματα"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Πρώτο"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Τελευταίο"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Λάθος Κωδικός"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Λάθος όνομα χρήστη ή κωδικός"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "Θυρίδα"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "Κωδικός"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "Είσοδος"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "Απομνημόνευση Κωδικού"
+
+#: ../includes/login.php:451
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Θυρίδα Τηλεφωνητή και Κωδικό"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "Αυτό είναι ο ίδιος κωδικός που χρησιμοποιήθηκε για το τηλέφωνο"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Για αλλαγή κωδικού ή υποστήριξη, επικοινωνήστε με τον Διαχειριστή του "
+"συστήματος"
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "ΕΣΕΡΧΟΜΕΝΑ"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "ΟΙΚΟΓΕΝΕΙΑ"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "ΦΙΛΟΙ"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "ΠΑΛΙΑ"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "ΔΟΥΛΕΙΑ"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "Ώρα"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+#, fuzzy
+msgid "IVR Recording"
+msgstr "Μυνήματα Θυρίδας"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Παρακολούθηση Κλήσεων"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr "διαγραφή"
+
+#: ../modules/callmonitor.module:147
+#, fuzzy
+msgid "duration"
+msgstr "Διάρκεια"
+
+#: ../modules/callmonitor.module:150
+#, fuzzy
+msgid "ignore"
+msgstr "κανένα"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "Ημερομηνία"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "Ταυτότητα Καλούντος"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "Πηγή"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "Προορισμός"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Περιεχόμενο"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "Διάρκεια"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Παρακολούθηση"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "άκουσε"
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Παρακολούθηση Κλήσεων"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "επιλογή"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "όλα"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "κανένα"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr ""
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "Τηλεφωνητής"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, fuzzy, php-format
+msgid "Help for %s (%s)"
+msgstr "Ρυθμίσεις για"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Ρυθμίσεις"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "Ο κωδικός του τηλεφωνητή δεν άλλαξε"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr "Ο κωδικός και η επιβεβαίωση κωδικού δεν πρέπει να είναι κενά"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "Οι κωδικοί πρέπει να είναι μόνο 4 αριθμοί"
+
+#: ../modules/settings.module:162
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "Οι κωδικοί πρέπει να είναι μόνο 4 αριθμοί"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "Ο κωδικός και η επιβεβαίωση κωδικού δεν συμφωνούν"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "Δεν υπάρχει ή δεν είναι εγγράψιμο"
+
+#: ../modules/settings.module:223
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "Ο κωδικός του τηλεφωνητή δεν άλλαξε"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "Ο κωδικός του τηλεφωνητή δεν άλλαξε"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "Γλώσσα:"
+
+#: ../modules/settings.module:408
+#, fuzzy
+msgid "Call Routing"
+msgstr "Ρυθμίσεις Παρακολούθησης Κλήσεων"
+
+#: ../modules/settings.module:411
+#, fuzzy
+msgid "Call Forwarding:"
+msgstr "Ρυθμίσεις Παρακολούθησης Κλήσεων"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+#, fuzzy
+msgid "Enable"
+msgstr "στο πεδίο"
+
+#: ../modules/settings.module:431
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "Οι κωδικοί πρέπει να είναι μόνο 4 αριθμοί"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "Οι κωδικοί πρέπει να είναι μόνο 4 αριθμοί"
+
+#: ../modules/settings.module:439
+#, fuzzy
+msgid "Voicemail Password:"
+msgstr "Κωδικός Τηλεφωνητή"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "Εισάγετε ξανά για επιβεβαίωση:"
+
+#: ../modules/settings.module:492
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "Τηλεφωνητής"
+
+#: ../modules/settings.module:498
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "Τηλεφωνητής"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "Ποιότητα Ήχου:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "Μέγιστη Ποιότητα"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "Μικρότερο Download"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "Ρυθμίσεις Τηλεφωνητή"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "Ρυθμίσεις Παρακολούθησης Κλήσεων"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "Ηχογράφηση ΕΙΣΕΡΧΟΜΕΝΟΥ:"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "Πάντα"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "Ποτέ"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "Επιτόπου"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "Ηχογράφηση ΕΞΕΡΧΟΜΕΝΟΥ:"
+
+#: ../modules/settings.module:669
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Ρυθμίσεις για"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "Ανανέωση"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "Τηλεφωνητής"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "Πρέπει να επιλεχθεί ένας κατάλογος πρίν μεταφερεθεί το μύνημα."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "Πρέπει να επιλεχθεί Θυρίδα παραλήπτη πρίν προωθηθεί το μύνημα."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr "μετακίνηση"
+
+#: ../modules/voicemail.module:307
+#, fuzzy
+msgid "Folder"
+msgstr "Κατάλογοι"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr "προώθηση"
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "Προτεραιότητα"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "Αρχικός Κατάλογος Μυνημάτων"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "Δεν βρέθηκαν εγγραφή(ές) στον τηλεφωνητή."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Δεν βρέθηκε πρόσβαση για θυρίδα μυνημάτων"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "Καμία πρόσβαση στον τηλεφωνητή"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "Δεν Υπάρχουν Εγγραφές Μυνημάτων για τον Διαχειριστή"
+
+#: ../modules/voicemail.module:428
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Τηλεφωνητής"
+
+#: ../modules/voicemail.module:678
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Αδύνατη η δημιουργία καταλόγου μυνημάτων"
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr ""
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "κατέβασμα"
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "Οι κωδικοί πρέπει να είναι μόνο 4 αριθμοί"
+
+#~ msgid "Folders"
+#~ msgstr "Κατάλογοι"
+
+#~ msgid "Login used"
+#~ msgstr "Όνομα χρήστη που χρησιμοποιήθηκε"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Ο διαχειριστής κλήσεων Asterisk δεν αποκρίνεται"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "δεν είναι κατάλογος ή δεν είναι αναγνώσιμος"
+
+#~ msgid "of"
+#~ msgstr "από"
+
+#~ msgid "Use your"
+#~ msgstr "Χρησιμοποίησε την δικιά σου"
+
+#~ msgid "for"
+#~ msgstr "για"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "Ο κωδικός πρέπει να έιναι 4 αριθμοί"
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr ""
+#~ "Ελέγχτε το audio format του μυνήματος στην σελίδα ρυθμίσεων για αλλαγή"
+
+#~ msgid "on the server"
+#~ msgstr "στον server"
+
+#~ msgid "No database connection"
+#~ msgstr "Δεν υπάρχει σύνδεση με την βάση δεδομένων"
diff --git a/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..e0fbdd9
Binary files /dev/null and b/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..0518573
--- /dev/null
@@ -0,0 +1,616 @@
+# SOME DESCRIPTIVE TITLE.\r
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\r
+# This file is distributed under the same license as the PACKAGE package.\r
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\r
+# Grupo Ikusnet,  Antonio F. Cano <antonio@igestec.com>, 2006.
+# Grupo Ikusnet, Agustin Vericat <agustin@igestec.com>, 2006.
+# \r
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: 2006-03-31 13:00\n"
+"Last-Translator: Antonio F. Cano <antonio@igestec.com>\n"
+"Language-Team: Espanol  <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "La Centralita no responde"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Fallo la Autenticacion con la Centralita"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+msgid "Asterisk command not understood"
+msgstr "La recarga no funcino"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr "Demasiados directorios en %s, notodos los archivos han sido procesados"
+
+#: ../includes/bootstrap.php:226
+#, fuzzy
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr "Necesita una versi&oacute; de PHP 4.0 o superior"
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+"PHP PEAR debe estar instalado. Visite http://pear.php.net para obtener ayuda"
+
+#: ../includes/common.php:173
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "No es posible conectar con la Centralita"
+
+#: ../includes/common.php:174
+#, fuzzy
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+"Compruebe el archivo 'main.conf' para configuar la conexi&oacute;n con "
+"Asterisk Manager"
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+"Compruebe /etc/asterisk/manager.conf para crear una cuenta Asterisk Manager"
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr "Compruebe la instalacion de FreePBX, DDBB o ARI en main.conf"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "Salir"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Pagina No encontrada"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Buscar"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Buscado para"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Resultados %d de %d"
+
+#: ../includes/display.php:141
+#, php-format
+msgid "Results %d"
+msgstr "Resultados %d"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Primero"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Ultimo"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Contrase&ntilde;a Incorrecta"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Contrase&ntilde; Incorrecta"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "Usuario"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "Contrase&ntilde;a"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "Enviar"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "Recordar Contrase&ntilde;a"
+
+#: ../includes/login.php:451
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Use su Buz&oacute;n de Voz (Usuario)  y contrase&ntilde;a"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "Esta es es la misma contrase&ntilde;a usada para el telefono"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Para mantenimiento de contrase&ntilde;as o asistencia, pongase en contacto "
+"con el Administrador."
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "Entrada"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "Familiares"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "Amigos"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "Antiguos"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "Trabajo"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr "Directorio"
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr "Test Eco"
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "Hora"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr "Tiempo"
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr "Programar llamada despertador"
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr "Test festival tts (su extension es XXX)"
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr "Activar Llamada en Espera (Desactivada por defecto)"
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr "Desactivar Llamada en Espera"
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr "Desv&iacute;o de llamada"
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr "Desactivar el Desv&iacute;o de Llamada"
+
+#: ../includes/main.conf.php:239
+msgid "IVR Recording"
+msgstr "Grabaciones"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr "Activar No-Molestar"
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr "Desactivar No-Molestar"
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr "Desv&iacute;o de llamada cuando est&eacute; Ocupado"
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr "Desactivar el Desv&iacute;o de llamada cuando est&eacute; Ocupado"
+
+#: ../includes/main.conf.php:244
+#, fuzzy
+msgid "Message Center (does not ask for extension)"
+msgstr "Centro de Mensajes (no pregunta la extens&iacute;n)"
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr "Entrar en el Centro de Mensajes"
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr "Escuchar la grabaci&oacute;n realizada"
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr "Probar Fax"
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr "Simular una llamada entrante"
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr "Adjuntar el mensaje de voz en el correo electr&oacute;nico"
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+"Indica el CallerID en la grabaci&oacute;n enviada por correo electr&oacute;"
+"nico"
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+"Indica la etiqueta (tiempo/hora) en la grabaci&oacute;n enviada por correo "
+"electr&oacute;nico"
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+"Eliminar el mensaje de voz una vez enviado  por correo electr&oacute;nico"
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr "Reproducir el siguiente mensaje una vez eliminado el actual"
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Registro de Llamadas"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr "La ruta no es un directorio: %s"
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr "Eliminar"
+
+#: ../modules/callmonitor.module:147
+msgid "duration"
+msgstr "Duraci&oacute;n"
+
+#: ../modules/callmonitor.module:150
+msgid "ignore"
+msgstr "ninguno"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "Fecha"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "Caller ID"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "Origen"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "Destino"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Contexto"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "Duraci&oacute;n"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Monitor para"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "escuchar"
+
+#: ../modules/callmonitor.module:259
+#, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Registro de Llamadas de %s (%s)"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "Selecionar"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "todos"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "ninguno"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr "Solo elimina los archivos grabados, no el log en el CDR"
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "Buz&oacute;n de Voz de %s (%s)"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr "Ayuda"
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr "Ayuda para %s (%s)"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr "Teclas de Marcaci&oacute;n"
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr "Acci&oacute;n"
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Opciones"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr "El n&uacute;mero del desv&iacute;o no ha cambiado"
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+"El n&uacute;mero %s debe contener n&uacte;meros marcables (caracteres como "
+"'(', '-', y ')' son v&aacute;lidos)"
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "La Contrase&ntilde;a del Buz&oacute;n de Voz no ha cambiado"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr ""
+"Contrase&ntilde;a y la confirmacion de esta no deben de estar en blanco"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "Contrase&ntilde;a ha de ser numerica y de longitud %d digitos"
+
+#: ../modules/settings.module:162
+#, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "Contrase&ntilde;a ha de ser numerica y de longitud %d digitos"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "Contrase&ntilde;a y conformacion no corresponden"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, php-format
+msgid "%s does not exist or is not writable"
+msgstr "%s No existe o no se puede escribir"
+
+#: ../modules/settings.module:223
+msgid "Voicemail email and pager address not changed"
+msgstr "La Contrase&ntilde;a del Buz&oacute;n de Voz no ha cambiado"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+msgid "Voicemail email settings not changed"
+msgstr "La Contrase&ntilde;a del Buz&oacute;n de Voz no ha cambiado"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "Idioma:"
+
+#: ../modules/settings.module:408
+msgid "Call Routing"
+msgstr "Enrutado de llamadas"
+
+#: ../modules/settings.module:411
+msgid "Call Forwarding:"
+msgstr "Desviar llamadas a:"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+msgid "Enable"
+msgstr "Activar"
+
+#: ../modules/settings.module:431
+#, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "Contrase&ntilde;a ha de ser numerica y de longitud %s digitos"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "Contrase&ntilde;a ha de ser numerica y de longitud %s digitos"
+
+#: ../modules/settings.module:439
+msgid "Voicemail Password:"
+msgstr "Contrase&ntilde;a del Buz&oacute;n de Voz"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "Introduzca otra vez para confirmar:"
+
+#: ../modules/settings.module:492
+msgid "Email Voicemail To:"
+msgstr "Buz&oacute;n de Voz para"
+
+#: ../modules/settings.module:498
+msgid "Pager Voicemail To:"
+msgstr "Buz&oacute;n de Voz para"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "Formato del Audio:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "Mejor Calidad"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "Descarga rapida"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "Propiedades del Buz&oacute;n de Voz"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "Propiedades del Registro de Llamadas"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "Grabaciones Entrantes:"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "Siempre"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "Nunca"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "Bajo demanda"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "Grabaciones Salientes:"
+
+#: ../modules/settings.module:669
+#, php-format
+msgid "Settings for %s (%s)"
+msgstr "Ajustes para %s (%s)"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "Actualizar"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "Buz&oacute;n de Voz"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "Debe elegir primero una carpeta antes de mover el mensaje."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "Debe de seleccionar una extension antes de reenviar el mensaje"
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr "Mover a"
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr "Carpetas"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr "Enviar a"
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "Prioridad"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "Buz&oacute;n de Voz Orig"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr "Mensaje"
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "No se ha encontrado grabaciones en el Buz&oacute;n de Voz."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+msgid "Voicemail Login not found."
+msgstr ""
+"No se encontro el usuario del Buz&oacute;n de Voz, se usa el usuario de la "
+"extension"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "No tiene permiso para acceder al Buz&oacute;n de Voz"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "No hay grabaciones en el Buz&oacute;n de Voz de Admin"
+
+#: ../modules/voicemail.module:428
+#, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Buz&oacute;n de Voz de %s (%s)"
+
+#: ../modules/voicemail.module:678
+#, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "No puedo crear la carpeta %s en el buz&oacute;n de voz"
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "Permiso denegado en el directorio %s o %s"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "Descargar"
+
+#~ msgid "Settings for"
+#~ msgstr "Configuracion de"
+
+#~ msgid "Folders"
+#~ msgstr "Carpetas"
diff --git a/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..78d4733
Binary files /dev/null and b/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..7f15c7a
--- /dev/null
@@ -0,0 +1,635 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <jbp@phileas-com.net>, 15/11/2005.
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: 2006-04-29 11:30+0100\n"
+"Last-Translator: Xavier Ourcière <xourciere@propolys.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Asterisk Call Manager ne répond pas"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Authentification Asterisk échoue :"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+msgid "Asterisk command not understood"
+msgstr "Asterisk: commande non comprise"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Connexion impossible à Asterisk Manager"
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"Vérifiez l'installation d'AMP, de Asterisk, ou le fichier ARI main.conf"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "Déconexion"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Fichier introuvable"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Rechercher"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Rechercher pour"
+
+#: ../includes/display.php:139
+#, php-format
+msgid "Results %d - %d of %d"
+msgstr "Résultats %d à %s sur %d"
+
+#: ../includes/display.php:141
+#, php-format
+msgid "Results %d"
+msgstr "Résultats %d"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Premier"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Dernier"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Mot de Passe eronné"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Login ou Mot de Passe erroné"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "Authentification"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "Mot de Passe"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "Valider"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "Se souvenir du mot de passe"
+
+#: ../includes/login.php:451
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Utilisez votre <b>numéro de la boîte vocale et votre mot de passe</b>"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "C'est le même Mot de Passe que sur le téléphone"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr "Pour de l'assistance contactez votre administrateur de téléphonie."
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "NOUVEAUX"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "Famille"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "Amis"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "Anciens"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "Travail"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr "Annuaire local"
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr "Test d'echo"
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "Heure"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr "Météo"
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr "Programmation de réveil"
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr "test de festival (votre numéro de téléphone est le XXXX)"
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+#, fuzzy
+msgid "IVR Recording"
+msgstr "Enregistrement"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr "Active ne pas déranger"
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr "Désactive ne pas déranger"
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+#, fuzzy
+msgid "Message Center (does not ask for extension)"
+msgstr "Boite vocale personnelle"
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr "Centre de messageries"
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr "Simulation d'appel entrant"
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Journal d'Appels"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr "Supprimer"
+
+#: ../modules/callmonitor.module:147
+msgid "duration"
+msgstr "Durée supérieure à"
+
+#: ../modules/callmonitor.module:150
+msgid "ignore"
+msgstr "Filtrer"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "Date"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "ID Appelant"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr ""
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr ""
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Contexte"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "Durée"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Enregistrement"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "Ecouter"
+
+#: ../modules/callmonitor.module:259
+#, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Journal d'Appels de %s (%s)"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "Sélection"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "Tous"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "Aucun"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr "Supprime seulement les fichiers des enregistrements mais pas les CDRs"
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "Boîte Vocale de %s (%s)"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr "Aide"
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr "Aide: %s (%s)"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Paramètres"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "Mot de passe de boite vocale non changé"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr "Le mot de passe et sa confirmation ne peuvent pas être vides"
+
+#: ../modules/settings.module:157
+#, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr ""
+"Le mot de passe doit comporter uniquement des chiffres et doit avoir une "
+"longueur supérieure à %d"
+
+#: ../modules/settings.module:162
+#, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr ""
+"Le mot de passe doit comporter uniquement des chiffres et doit avoir une "
+"longueur de %d"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr ""
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, php-format
+msgid "%s does not exist or is not writable"
+msgstr "%s n'existe pas ou n'a pas l'autorisation en écriture"
+
+#: ../modules/settings.module:223
+msgid "Voicemail email and pager address not changed"
+msgstr "Email voicemail et adresse de pager inchangés"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+msgid "Voicemail email settings not changed"
+msgstr "Paramètres de la boite vocale inchangés"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "Langue"
+
+#: ../modules/settings.module:408
+msgid "Call Routing"
+msgstr "Routage d'appels"
+
+#: ../modules/settings.module:411
+msgid "Call Forwarding:"
+msgstr "Transfert vers:"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+msgid "Enable"
+msgstr "Activer"
+
+#: ../modules/settings.module:431
+#, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr ""
+"Le mot de passe doit comporter uniquement des chiffres et seulement 4 "
+"chiffres"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr ""
+"Le mot de passe doit comporter uniquement des chiffres et seulement 4 "
+"chiffres"
+
+#: ../modules/settings.module:439
+msgid "Voicemail Password:"
+msgstr "Mot de passe de la boîte vocale"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "Repetez le mot de passe:"
+
+#: ../modules/settings.module:492
+msgid "Email Voicemail To:"
+msgstr "Adresse émail pour le Voicemail:"
+
+#: ../modules/settings.module:498
+msgid "Pager Voicemail To:"
+msgstr ""
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "Format audio:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "Meilleure Qualité"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "Taille réduite"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "Paramètres boîte vocale"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "Enregistrements d'appels"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "Enregistrements ENTRANTS"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "Toujours"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "Jamais"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "Sur demande"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "Enregistrements SORTANTS"
+
+#: ../modules/settings.module:669
+#, php-format
+msgid "Settings for %s (%s)"
+msgstr "Paramètres de %s (%s)"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "Mettre à jour"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "Boîte Vocale"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "Sélection un dossier avant de déplacer le message."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "Sélectionnez d'abord une extension pour le transfert du message."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr "Déplacer vers"
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr "Dossier"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr "Transmettre à"
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "Priorité"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "Boîte Source"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "Enregistrement audio non trouvé"
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Enregistrement audio non trouvé"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "Aucun accès à la boîte vocale"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "Pas d'enregistrement pour Admin"
+
+#: ../modules/voicemail.module:428
+#, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Boîte Vocale de %s (%s)"
+
+#: ../modules/voicemail.module:678
+#, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "N'a pas pu créer le dossier %s"
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr ""
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr ""
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr ""
+#~ "Le mot de passe doit comporter que des chiffres et 4 chiffres maximum"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Asterisk Call Manager ne répond pas"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "pas un répertoire ou non lisible"
+
+#~ msgid "of"
+#~ msgstr "de"
+
+#~ msgid "Use your"
+#~ msgstr "Utilisez votre"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr ""
+#~ "Le mot de passe doit comporter que des chiffres et 4 chiffres maximum"
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr "Vérifiez le format audio à la page paramètres"
+
+#~ msgid "on the server"
+#~ msgstr "sur le serveur"
+
+#~ msgid "No database connection"
+#~ msgstr "Pas de connexion à la base de données"
+
+#~ msgid "Format Audio:"
+#~ msgstr "Format Audio :"
diff --git a/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..3b00bd1
Binary files /dev/null and b/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..7c9ae97
--- /dev/null
@@ -0,0 +1,646 @@
+# translation of ari-he.po to Hebrew
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER.
+# Diego Iastrubni <diego.iastrubni@xorcom.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: ari-he\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: 2006-02-05 11:48+0200\n"
+"Last-Translator: Diego Iastrubni <diego.iastrubni@xorcom.com>\n"
+"Language-Team: Hebrew <xorcom-users@xorcom.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "מנהל השיחות של Asterisk לא מגיב"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "האימות מול Asterisk נכשל:"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "פקודת reload של Asterisk לא מובנת"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "אין אפשרות להתחבר למנהל של Asterisk"
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"בדוק את ההתקנה של AMP, בסיס הנתונים של asterisk או הקובץ main.conf של ARI"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "יציאה"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "דף לא נמצא"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "חפש"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "חיפוש של"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "תוצאות"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "תוצאות"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "ראשון"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "אחרון"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "ססמה לא נכונה"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "שם משתמש לא נכון או ססמה לא נכונה"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "שם משתמש"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "ססמה"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "שלח"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "זכור ססמה"
+
+#: ../includes/login.php:451
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "תיבה קולית וססמה"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "זוהי אותה ססמה שבשימוש בטלפון שלך"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr "עבור ססמה התחזוקה, אנא פנה אל מנהל הטלפוניה שלך."
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "נכנסות"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "משפחה"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "חברים"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "ישנים"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "עבודה"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "שעה"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+#, fuzzy
+msgid "IVR Recording"
+msgstr "הקלטות"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "צג שיחות"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+#, fuzzy
+msgid "delete"
+msgstr "בחר"
+
+#: ../modules/callmonitor.module:147
+#, fuzzy
+msgid "duration"
+msgstr "משך"
+
+#: ../modules/callmonitor.module:150
+#, fuzzy
+msgid "ignore"
+msgstr "כלום"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "תאריך"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "שיחה מזוהה"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "מקור"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "יעד"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "הקשר"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "משך"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "ניטור"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "נגן"
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "צג שיחות"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "בחר"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "הכל"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "כלום"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr "מחק הקלטות בלבד, לא את רישום ה־cdr"
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "תיבה קולית"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, fuzzy, php-format
+msgid "Help for %s (%s)"
+msgstr "הגדרות עבור"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "הגדרות"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "ססמת התיבה הקולית לא שונתה"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr "הסממה והאימות של הססמה לא יכולים להיות רקים"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "הסממאות חייבת להכיל 4 ספרות בלבד"
+
+#: ../modules/settings.module:162
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "הסממאות חייבת להכיל 4 ספרות בלבד"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "הסממה והאימות של הססמה לא תואמים"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "לא קיים או אין אפשרות לכתוב עליו"
+
+#: ../modules/settings.module:223
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "ססמת התיבה הקולית לא שונתה"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "ססמת התיבה הקולית לא שונתה"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "שפה:"
+
+#: ../modules/settings.module:408
+#, fuzzy
+msgid "Call Routing"
+msgstr "הגדרות ניתור שיחות"
+
+#: ../modules/settings.module:411
+#, fuzzy
+msgid "Call Forwarding:"
+msgstr "הגדרות ניתור שיחות"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+#, fuzzy
+msgid "Enable"
+msgstr "בטבלה"
+
+#: ../modules/settings.module:431
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "הסממאות חייבת להכיל 4 ספרות בלבד"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "הסממאות חייבת להכיל 4 ספרות בלבד"
+
+#: ../modules/settings.module:439
+#, fuzzy
+msgid "Voicemail Password:"
+msgstr "ססמת תיבה קולית:"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "הכנס שוב לאימות:"
+
+#: ../modules/settings.module:492
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "תיבה קולית"
+
+#: ../modules/settings.module:498
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "תיבה קולית"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "תבנית שמע:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "איכות הכי טובה"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "הורדה הכי קטנה"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "הגדרות תיבה קולית"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "הגדרות ניתור שיחות"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "הקלטת שיחות נכנסות:"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "תמיד"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "אף פעם"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "לפי דרישה"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "הקלטה שיחות יוצאות:"
+
+#: ../modules/settings.module:669
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "הגדרות עבור"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "עדכן"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "תיבה קולית"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "יש לבחור תיקייה לפני שאפשר להעביר את ההודעה."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "יש לבחור שלוחה לפני שאפשר העביר את השיחה הלאה."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr ""
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr "תיקייה"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr ""
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "עדיפות"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "תיבת דואר מקורית"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "הקלטת תיבה  קולית לא נמצאה."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "שם המשתמש של תיבת הקול"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "אין גישה לתיבת הקול"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "אין הקלטות בתיבת הקול של המנהל"
+
+#: ../modules/voicemail.module:428
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "תיבה קולית"
+
+#: ../modules/voicemail.module:678
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "אין אפשרות ליצור את תיקיית הדואר"
+
+#: ../modules/voicemail.module:718
+#, fuzzy, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "הגישה נדחתה בתיקייה"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "הורדה"
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "הסממאות חייבת להכיל 4 ספרות בלבד"
+
+#~ msgid "Folders"
+#~ msgstr "תיקיות"
+
+#~ msgid "Login used"
+#~ msgstr "שם השמשתש"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "מנהל השיחות של Asterisk לא מגיב"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "לא ספרייה, או אין אפשרות לקרא"
+
+#~ msgid "of"
+#~ msgstr "של "
+
+#~ msgid "Use your"
+#~ msgstr "השתמש בשלך"
+
+#~ msgid "for"
+#~ msgstr "עבור"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "הסממה חייבת להכיל 4 ספרות בלבד"
+
+#, fuzzy
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr "בחר את תבנית השמע של התיבה הקולית בחלון ההגדרות "
+
+#~ msgid "on the server"
+#~ msgstr "ברשת"
+
+#~ msgid "No database connection"
+#~ msgstr "אין חיבור לבסיס נתונים"
diff --git a/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..ff5a922
Binary files /dev/null and b/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..c9d9e44
--- /dev/null
@@ -0,0 +1,645 @@
+# SOME DESCRIPTIVE TITLE.\r
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER\r
+# This file is distributed under the same license as the PACKAGE package.\r
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.\r
+# \r
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Varasdy Imre <csvarasdy@softpbx.hu>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Asterisk Call Manager nem válaszol"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Asterisk bejelentkezés elutasítva:"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "Asterisk frissítés parancs ismeretlen"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Nem tudok csatlakozni az Asterisk Managerhez"
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"Ellen&otilde;rizze az AMP telepítést, asterisk adatbázist, vagy az ARI main."
+"conf filet"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "Kilépés"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Nincs ilyen oldal."
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Keres"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Keresés"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Eredmény"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "Eredmény"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Els&otilde;"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Utolsó"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Hibás jelszó"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Rossz Felhasználonév vagy jelszó"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "Azonosító"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "Jelszó"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "Rögzít"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "Jelszó megjegyzése"
+
+#: ../includes/login.php:451
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Hangposta és Jelszó"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "A jelszó ugyanaz, mint a telefonhoz"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Om du har problem med lösenord eller behöver hjälp ska du kontakta din vÃ"
+"¤xel ansvarig"
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "Bejövõ"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "Család"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "Barátok"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "Régi"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "Munka"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "Idõ"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+#, fuzzy
+msgid "IVR Recording"
+msgstr "Felvétel"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Hangrögzítés"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr "Töröl"
+
+#: ../modules/callmonitor.module:147
+#, fuzzy
+msgid "duration"
+msgstr "Hossz"
+
+#: ../modules/callmonitor.module:150
+#, fuzzy
+msgid "ignore"
+msgstr "semmi"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "Dátum"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "Hivószám"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "Hívó"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "Hívott"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Csoport"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "Hossz"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Rögzítés"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "Lejátszás"
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Hangrögzítés"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "Választ"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "Mind"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "semmi"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr "Csak a hangfileokat törli, a CDR-t nem"
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "Hangposta"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, fuzzy, php-format
+msgid "Help for %s (%s)"
+msgstr "Beállítások"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Beállítások"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "A jelszót nem változtattam meg"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr "A jelszavakat nem hagyhatja üresen"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "A jelszó csak számból állhat és csak 4 karakteres lehet"
+
+#: ../modules/settings.module:162
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "A jelszó csak számból állhat és csak 4 karakteres lehet"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "A két jelszó nem egyezik"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "nem létezik vagy nem írható"
+
+#: ../modules/settings.module:223
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "A jelszót nem változtattam meg"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "A jelszót nem változtattam meg"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "Nyelv"
+
+#: ../modules/settings.module:408
+#, fuzzy
+msgid "Call Routing"
+msgstr "Hangrögzítés beállításai"
+
+#: ../modules/settings.module:411
+#, fuzzy
+msgid "Call Forwarding:"
+msgstr "Hangrögzítés beállításai"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+#, fuzzy
+msgid "Enable"
+msgstr "táblában"
+
+#: ../modules/settings.module:431
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "A jelszó csak számból állhat és csak 4 karakteres lehet"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "A jelszó csak számból állhat és csak 4 karakteres lehet"
+
+#: ../modules/settings.module:439
+#, fuzzy
+msgid "Voicemail Password:"
+msgstr "Hangposta jelszó:"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "Irja be újra:"
+
+#: ../modules/settings.module:492
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "Hangposta"
+
+#: ../modules/settings.module:498
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "Hangposta"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "Hangformátum:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "Legjobb minõség"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "Legkisebb méret"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "Hangposta beállítások"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "Hangrögzítés beállításai"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "Hangrögzítés - Bejövõ:"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "Mindíg"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "Soha"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "Igény esetén"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "Hangrögzítés - Bejövõ:"
+
+#: ../modules/settings.module:669
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Beállítások"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "Frissít"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "Hangposta"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "Áthelyezés elõtt ki kell jelölni egy mappát."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "Üzenet áthelyezése elõtt ki kell jelölni egy melléket."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr "Áthelyez"
+
+#: ../modules/voicemail.module:307
+#, fuzzy
+msgid "Folder"
+msgstr "Mappa"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr "Átirányít"
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "Prioritás"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "Eredeti Postafiók"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "Nem találok rögzítés(eke)t."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Hangposta Azonosító nem található"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "Nincs hozzáférés a hangpostához"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "Nincs hangfelvétel az Admin részére"
+
+#: ../modules/voicemail.module:428
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Hangposta"
+
+#: ../modules/voicemail.module:678
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Nem tudom létrehozni a hangposta mappát"
+
+#: ../modules/voicemail.module:718
+#, fuzzy, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "Hozzáférés elutasítva"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "letöltés"
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "A jelszó csak számból állhat és csak 4 karakteres lehet"
+
+#~ msgid "Folders"
+#~ msgstr "Mappák"
+
+#~ msgid "Login used"
+#~ msgstr "Azonosító használt"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Asterisk Call Manager nem válaszol"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "nem k&ouml;nyvtár vagy nem olvasható"
+
+#~ msgid "of"
+#~ msgstr "av"
+
+#~ msgid "Use your"
+#~ msgstr "Használja "
+
+#~ msgid "for"
+#~ msgstr " - "
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "A jelszó csak számból állhat és 4 karakteres lehet"
+
+#~ msgid "on the server"
+#~ msgstr "a serveren"
+
+#~ msgid "No database connection"
+#~ msgstr "Nincs adatbázis kapcsolat"
diff --git a/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..d5a7da8
Binary files /dev/null and b/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..db245f9
--- /dev/null
@@ -0,0 +1,999 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.1\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2007-08-24 12:33+0200\n"
+"PO-Revision-Date: 2007-08-25 22:41-0600\n"
+"Last-Translator: Francesco Romano\n"
+"Language-Team: Italian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Il Call Manager di Asterisk non risponde"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Autenticazione Asterisk fallita:"
+
+# 
+#: ../includes/asi.php:96 ../includes/asi.php:111 ../includes/asi.php:130
+#: ../includes/asi.php:144
+msgid "Asterisk command not understood"
+msgstr "comando reload di Asterisk non eseguito"
+
+# 
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr "Troppe directory in %s Non tutti i files sono stati processati"
+
+#: ../includes/bootstrap.php:226
+#, fuzzy
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr "ARI richiede PHP 4.0 o superiore"
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+"PHP PEAR deve essere installato. Visitare http://pear.php.net per aiuto "
+"nell'installazione."
+
+# 
+#: ../includes/common.php:180
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Impossibile connettersi all'Asterisk Manager"
+
+#: ../includes/common.php:181
+##, fuzzy
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+"Controllare il file di configurazione main.conf di ARI per l'impostazione "
+"sull'account dell'Asterisk Manager."
+
+#: ../includes/common.php:182
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+"Controllare /etc/asterisk/manager.conf per un valido account Asterisk Manager"
+
+#: ../includes/common.php:183
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+"assicurarsi che in [general] sia presente enable = yes e la riga 'permit=' "
+"con l'indirizzo localhost o il webserver."
+
+# 
+#: ../includes/common.php:200 ../includes/common.php:215
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"Controllare l'installazione di AMP, il database di asterisk o il file main."
+"conf di ARI"
+
+#: ../includes/common.php:351
+msgid "Logout"
+msgstr "Esci"
+
+#: ../includes/common.php:356
+msgid "Page Not Found."
+msgstr "Pagina Non Trovata"
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "Cerca"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Ricerca per"
+
+#  
+#: ../includes/display.php:139
+##, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Risultati %d - %d di %d"
+
+#  
+#: ../includes/display.php:141
+#, php-format
+msgid "Results %d"
+msgstr "Risultati %d"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Prima"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Ultima"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Password sbagliata"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Nome Utente o Password sbagliati"
+
+#: ../includes/login.php:404 ../includes/login.php:413
+msgid "Login"
+msgstr "Login"
+
+#: ../includes/login.php:421
+msgid "Password"
+msgstr "Password"
+
+#: ../includes/login.php:430
+msgid "Submit"
+msgstr "Invia"
+
+#: ../includes/login.php:438
+msgid "Remember Password"
+msgstr "Ricorda Password"
+
+# 
+#: ../includes/login.php:453
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr ""
+"Utilizzare come login il numero della <b>Casella Vocale e relativa "
+"Password</b>"
+
+#: ../includes/login.php:454
+msgid "This is the same password used for the phone"
+msgstr "Sono gli stessi utilizzati dal proprio telefono"
+
+#: ../includes/login.php:456
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Per assistenza o manutenzione, contattare l'amministratore del Centralino."
+
+#: ../includes/main.conf.php:150
+msgid "INBOX"
+msgstr "NUOVI"
+
+#: ../includes/main.conf.php:152
+msgid "Family"
+msgstr "Personali"
+
+#: ../includes/main.conf.php:154
+msgid "Friends"
+msgstr "Amici"
+
+#: ../includes/main.conf.php:156
+msgid "Old"
+msgstr "Vecchi"
+
+#: ../includes/main.conf.php:158
+msgid "Work"
+msgstr "Lavoro"
+
+#: ../includes/main.conf.php:237
+msgid "Call Forward All Activate"
+msgstr "Attivazione Trasferimento di Chiamata Incondizionato"
+
+#: ../includes/main.conf.php:238
+msgid "Call Forward All Deactivate"
+msgstr "Disattivazione Trasferimento di Chiamata Incondizionato"
+
+#: ../includes/main.conf.php:239
+msgid "Call Forward All Prompting Deactivate"
+msgstr "Disattivazione Trasferimento di Chiamata Incondizionato (chiede dettagli)"
+
+#: ../includes/main.conf.php:240
+msgid "Call Forward Busy Activate"
+msgstr "Attivazione Trasferimento di Chiamata su Occupato"
+
+#: ../includes/main.conf.php:241
+msgid "Call Forward Busy Deactivate"
+msgstr "Disattivazione Trasferimento di Chiamata su Occupato"
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward Busy Prompting Deactivate"
+msgstr "Disattivazione Trasferimento di Chiamata su Occupato (chiede dettagli)"
+
+#: ../includes/main.conf.php:243
+msgid "Call Forward No Answer/Unavailable Activate"
+msgstr "Attivazione Trasferimento di Chiamata su nessuna risposta"
+
+#: ../includes/main.conf.php:244
+msgid "Call Forward No Answer/Unavailable Deactivate"
+msgstr "Disattivazione Trasferimento di Chiamata su nessuna risposta"
+
+#: ../includes/main.conf.php:245
+msgid "Call Waiting - Activate"
+msgstr "Attivazione Avviso di chiamata"
+
+#: ../includes/main.conf.php:247
+msgid "Do-Not-Disturb Activate"
+msgstr "Attivazione Non-Disturbare"
+
+#: ../includes/main.conf.php:248
+msgid "Do-Not-Disturb Deactivate"
+msgstr "Disattivazione Non-Disturbare"
+
+#: ../includes/main.conf.php:249
+msgid "My Voicemail"
+msgstr "Propria Casella Vocale"
+
+#: ../includes/main.conf.php:250
+msgid "Dial Voicemail"
+msgstr "Casella Vocale"
+
+#: ../includes/main.conf.php:303
+msgid "Email voicemail as attachment"
+msgstr "Invia messaggio vocale come allegato email"
+
+#: ../includes/main.conf.php:304
+msgid "Say caller id in recording emailed"
+msgstr "Riproduci ID chiamante nella registrazione inviata"
+
+#: ../includes/main.conf.php:305
+msgid "Say envelop (date/time) in recording emailed"
+msgstr "Riproduci data/ora nella registrazione inviata"
+
+#: ../includes/main.conf.php:306
+msgid "Delete voicemail when emailed"
+msgstr "Elimina messaggio vocale dopo aver spedito l'email"
+
+#: ../includes/main.conf.php:307
+msgid "Play next message after deleting current message"
+msgstr ""
+"Riproduci il messaggio seguente dopo aver eliminato il messaggio corrente"
+
+#: ../includes/main.conf.php:308
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:309
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/VmX.module:58
+msgid "VmX&#8482 Locator"
+msgstr "VmX&#8482 Locator"
+
+#: ../modules/VmX.module:115
+msgid ""
+"Your Premium VmX Locator service has been disabled, REFRESH your browser to "
+"remove this message"
+msgstr ""
+"Il proprio VmX Locator è stato disabilitato, AGGIORNARE la pagina per "
+"rimuovere questo messaggio"
+
+#: ../modules/VmX.module:116 ../modules/followme.module:101
+#, php-format
+msgid ""
+"Check with your Telephone System Administrator if you think there is a "
+"problem"
+msgstr ""
+"Contattare l'amministratore del Sistema Telefonico se ci sono dei problemi"
+
+#: ../modules/VmX.module:147
+msgid "Option 0 not changed"
+msgstr "Opzione 0 non cambiata"
+
+# 
+#: ../modules/VmX.module:148 ../modules/VmX.module:181
+#: ../modules/VmX.module:201 ../modules/phonefeatures.module:302
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+"Il numero %s deve contenere cifre valide (vanno benne caratteri come '(', "
+"'-' e ')')"
+
+#: ../modules/VmX.module:180
+msgid "Option 1 not changed"
+msgstr "Opzione 1 non cambiata"
+
+#: ../modules/VmX.module:200
+msgid "Option 2 not changed"
+msgstr "opzione 2 non cambiata"
+
+#: ../modules/VmX.module:300
+msgid "Use When:"
+msgstr "Utilizzare quando:"
+
+#: ../modules/VmX.module:300
+msgid ""
+"Menu options below are available during your personal voicemail greeting "
+"playback. <br/><br/>Check both to use at all times."
+msgstr ""
+"Le opzioni del menu disponibili qui sotto sono proposte durante il messaggio "
+"di benvenuto della casella vocale. <br/><br/>"
+
+#: ../modules/VmX.module:302
+msgid "unavailable"
+msgstr "non disponibile"
+
+#: ../modules/VmX.module:306
+msgid "busy"
+msgstr "occupato"
+
+#: ../modules/VmX.module:310
+msgid "Voicemail Instructions:"
+msgstr "Istruzioni Casella Vocale:"
+
+#: ../modules/VmX.module:310
+msgid "Uncheck to play a beep after your personal voicemail greeting."
+msgstr "Deselezionare per riprodurre un tono dopo il messaggio di benvenuto."
+
+#: ../modules/VmX.module:313
+msgid "Standard voicemail prompts."
+msgstr "Messaggi standard Casella Vocale"
+
+#: ../modules/VmX.module:321
+msgid "Press 0:"
+msgstr "Premere 0:"
+
+#: ../modules/VmX.module:321
+msgid ""
+"Pressing 0 during your personal voicemail greeing goes to the Operator. \n"
+"\t\t\t\t\tUncheck to enter another destination here."
+msgstr ""
+"Premendo 0 durante il messaggio di benvenuto della Casella Vocale, la "
+"chiamata sarà reindirizzata all'operatore. \n"
+"\t\t\t\t\tDeselezionare per inserire un'altra destinazione."
+
+#: ../modules/VmX.module:329
+msgid "Go To Operator"
+msgstr "Per andare all'Operatore"
+
+#: ../modules/VmX.module:333
+msgid "Press 1:"
+msgstr "Premere 1:"
+
+#: ../modules/VmX.module:336
+msgid ""
+"The remaining options can have internal extensions, ringgroups, queues and "
+"external numbers that may be rung. It is often used to include your cell "
+"phone. You should run a test to make sure that the number is functional any "
+"time a change is made so you don't leave a caller stranded or receiving "
+"invalid number messages."
+msgstr ""
+
+#: ../modules/VmX.module:338
+msgid ""
+"Enter an alternate number here, then change your personal voicemail greeting "
+"to let callers know to press 1 to reach that number. <br/><br/>If you'd like "
+"to use your Follow Me List, check \"Send to Follow Me\" and disable Follow "
+"Me above."
+msgstr ""
+"Immettere una destinazione alternativa, dopo, cambiare il messaggio di "
+"benvenuto per permettere ai chiamanti di premere 1 per raggiungere quella "
+"numerazione. <br/><br/> Se si vuole utilizzare la Lista Seguimi, selezionare "
+"\"Invia al Seguimi\" e disattivare sopra il Seguimi."
+
+#: ../modules/VmX.module:351
+msgid "Send to Follow-Me"
+msgstr "Invia al Seguimi"
+
+#: ../modules/VmX.module:359
+msgid "Press 2:"
+msgstr "Premere 2:"
+
+#: ../modules/VmX.module:359
+msgid ""
+"Use any extensions, ringgroups, queues or external numbers. <br/><br/"
+">Remember to re-record your personal voicemail greeting and include "
+"instructions. Run a test to make sure that the number is functional."
+msgstr ""
+"Utilizzare qualsiasi interno, gruppo di chiamata, coda o numero esterno. <br/"
+"><br/>Ricordarsi di ri-registrare il proprio messaggio di benvenuto e "
+"includere delle istruzioni. Fare dei test per assicurarsi che tutto funzioni."
+
+#  
+#: ../modules/VmX.module:373
+##, fuzzy, php-format
+msgid "VmX Locator&#8482; Settings for %s (%s)"
+msgstr "Impostazioni di %s (%s)"
+
+#: ../modules/VmX.module:415 ../modules/followme.module:384
+#: ../modules/phonefeatures.module:180 ../modules/settings.module:625
+msgid "Update"
+msgstr "Aggiorna"
+
+#: ../modules/callmonitor.module:36 ../modules/callmonitor.module:256
+msgid "Call Monitor"
+msgstr "Registrazioni Chiamate"
+
+# 
+#: ../modules/callmonitor.module:131
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr "Il percorso non è una directory: %s"
+
+#: ../modules/callmonitor.module:140 ../modules/voicemail.module:318
+msgid "delete"
+msgstr "elimina"
+
+# 
+#: ../modules/callmonitor.module:146
+msgid "duration"
+msgstr "durata"
+
+# 
+#: ../modules/callmonitor.module:149
+msgid "ignore"
+msgstr "niente"
+
+#: ../modules/callmonitor.module:158 ../modules/voicemail.module:339
+msgid "Date"
+msgstr "Data"
+
+#: ../modules/callmonitor.module:160 ../modules/voicemail.module:341
+msgid "Time"
+msgstr "Ora"
+
+#: ../modules/callmonitor.module:162 ../modules/voicemail.module:343
+msgid "Caller ID"
+msgstr "ID Chiamante"
+
+#: ../modules/callmonitor.module:164
+msgid "Source"
+msgstr "Sorgente"
+
+#: ../modules/callmonitor.module:166
+msgid "Destination"
+msgstr "Destinazione"
+
+#: ../modules/callmonitor.module:168
+msgid "Context"
+msgstr "Contesto"
+
+#: ../modules/callmonitor.module:170 ../modules/voicemail.module:349
+msgid "Duration"
+msgstr "Durata"
+
+#: ../modules/callmonitor.module:201
+msgid "Monitor"
+msgstr "Registrazione"
+
+#: ../modules/callmonitor.module:221 ../modules/voicemail.module:390
+msgid "play"
+msgstr "riproduci"
+
+#  
+#: ../modules/callmonitor.module:258
+#, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Registrazioni Chiamate di %s (%s)"
+
+#: ../modules/callmonitor.module:310 ../modules/voicemail.module:492
+msgid "select"
+msgstr "seleziona"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:493
+msgid "all"
+msgstr "tutto"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:494
+msgid "none"
+msgstr "niente"
+
+#: ../modules/callmonitor.module:532
+msgid "Only deletes recording files, not cdr log"
+msgstr "Eliminati solo i file di registrazione, non i log delle chiamate"
+
+#: ../modules/featurecodes.module:36 ../modules/featurecodes.module:63
+##, fuzzy
+msgid "Feature Codes"
+msgstr "Codici Servizi"
+
+#  
+#: ../modules/featurecodes.module:65
+##, fuzzy, php-format
+msgid " for %s (%s)"
+msgstr " per %s (%s)"
+
+#: ../modules/featurecodes.module:72
+msgid "Handset Feature Code"
+msgstr "Codice"
+
+#: ../modules/featurecodes.module:75
+msgid "Action"
+msgstr "Azione"
+
+#: ../modules/followme.module:43
+msgid "Follow Me"
+msgstr "Seguimi"
+
+#: ../modules/followme.module:100
+msgid ""
+"Your Follow-Me has been disabled, REFRESH your browser to remove this message"
+msgstr ""
+"Il Seguimi è disattivato, AGGIORNA la pagina per rimuovere questo messaggio"
+
+#: ../modules/followme.module:118
+msgid "Follow-Me pre-ring time not changed"
+msgstr "Tempo di pre-squillo per il Seguimi non cambiato"
+
+#: ../modules/followme.module:119 ../modules/followme.module:142
+#, php-format
+msgid "Number %s must be an interger number of seconds"
+msgstr "Il numero %s deve contenere numeri interi"
+
+#: ../modules/followme.module:141
+msgid "Follow-Me list ring time not changed"
+msgstr "Tempo di squillo Lista Seguimi non cambiato"
+
+#: ../modules/followme.module:185
+msgid "Follow-Me list must contain at least one valid number"
+msgstr "Il Seguimi deve contenere almeno un numero valido"
+
+#: ../modules/followme.module:186
+#, php-format
+msgid "The following: %s is not valid"
+msgstr "Il seguente: %s non è valido"
+
+# 
+#: ../modules/followme.module:291 ../modules/followme.module:344
+#: ../modules/phonefeatures.module:335 ../modules/settings.module:420
+msgid "Enable"
+msgstr "Attiva"
+
+#: ../modules/followme.module:292
+msgid ""
+"Dial-by-name Directory, IVR, and internal \n"
+"\t\t\t\t\t\t\t\t\t\t\t\t\tcalls will ring the numbers in the FollowMe \n"
+"\t\t\t\t\t\t\t\t\t\t\t\t\tList. Any FreePBX routes that directly \n"
+"\t\t\t\t\t\t\t\t\t\t\t\t\treference a FollowMe are unaffected by this \n"
+"\t\t\t\t\t\t\t\t\t\t\t\t\tenable/disable setting."
+msgstr "L'Elenco Telefonico, l'IVR e le chiamate interne chiameranno i numeri definiti nella Lista Seguimi. Qualsiasi rotta che ha come referenza un Seguimi non sarà affetto dall'attivazione o dalla disattivazione di questa impostazione."
+
+#: ../modules/followme.module:304
+msgid "Follow Me List:"
+msgstr "Lista Seguimi:"
+
+#: ../modules/followme.module:305
+#, php-format
+msgid "Extensions and outside numbers to ring next."
+msgstr "Interni e numeri esterni da chiamare dopo."
+
+#: ../modules/followme.module:306
+#, php-format
+msgid "Include %s to keep it ringing."
+msgstr "Immettere %s per lasciar squillare."
+
+#: ../modules/followme.module:312
+#, php-format
+msgid "Ring %s First For:"
+msgstr "Chiama prima %s per:"
+
+#: ../modules/followme.module:313
+#, php-format
+msgid "Time to ring extension %s before ringing the %s Follow Me List %s"
+msgstr ""
+"Il tempo di chiamata per l'interno %s prima di far squillare la %s Lista "
+"Seguimi %s"
+
+#: ../modules/followme.module:323 ../modules/followme.module:336
+msgid "seconds"
+msgstr "secondi"
+
+#: ../modules/followme.module:326
+msgid "Ring Followme List for:"
+msgstr "Chiama la Lista Seguimi per:"
+
+#: ../modules/followme.module:326
+msgid "Time to ring the Follow Me List."
+msgstr "Il tempo di chiamata per la Lista Seguimi."
+
+#: ../modules/followme.module:341
+msgid "Use Confirmation:"
+msgstr "Utilizza Conferma:"
+
+#: ../modules/followme.module:341
+msgid ""
+"Outside lines that are part of the Follow Me List will be called and offered "
+"a menu:<br/><br/> \"You have an incoming call. Press 1 to accept or 2 to "
+"decline.\"<br/><br/> This keeps calls from ending up in external voicemail. "
+"Make sure that the List Ring Time is long enough to allow for you to hear "
+"and react to this message."
+msgstr ""
+"Ai Numeri esterni che fanno parte della Lista Seguimi sarà proposto un menu:"
+"<br/><br/> \"Hai una chiamata in arrivo. Premere 1 per accettare o 2 per "
+"rifiutare.\" Questo evita alle chiamate esterne di finire in una segreteria. "
+"Assicurarsi che il tempo di chiamata sia abbastanza lungo per rispondere a "
+"questo messaggio."
+
+#: ../modules/followme.module:356
+##, fuzzy
+msgid "Followme Settings"
+msgstr "Impostazioni Seguimi"
+
+#  
+#: ../modules/followme.module:358
+##, fuzzy, php-format
+msgid "Followme Settings for %s (%s)"
+msgstr "Impostazioni Seguimi per %s (%s)"
+
+#: ../modules/phonefeatures.module:25 ../modules/phonefeatures.module:96
+#: ../modules/phonefeatures.module:163
+msgid "Phone Features"
+msgstr "Servizi Telefonici"
+
+# 
+#: ../modules/phonefeatures.module:149
+##, fuzzy
+msgid "Call Forwarding"
+msgstr "Trasferimento di Chiamata"
+
+#  
+#: ../modules/phonefeatures.module:165
+##, fuzzy, php-format
+msgid "Features for %s (%s)"
+msgstr "Impostazioni per %s (%s)"
+
+#: ../modules/phonefeatures.module:301
+msgid "Call forward number not changed"
+msgstr "Numero per il trasferimento di chiamata non cambiato"
+
+#: ../modules/settings.module:56
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: ../modules/settings.module:118 ../modules/settings.module:123
+#: ../modules/settings.module:128 ../modules/settings.module:133
+#: ../modules/settings.module:143 ../modules/settings.module:148
+msgid "Voicemail password not changed"
+msgstr "Password Casella Vocale non cambiata"
+
+#: ../modules/settings.module:119
+msgid "Password and password confirm must not be blank"
+msgstr "Password e conferma password non possono essere vuoti"
+
+#  
+#: ../modules/settings.module:124
+##, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "La Password deve essere minimo di %d numeri"
+
+#  
+#: ../modules/settings.module:129
+##, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "La Password deve essere di %d numeri"
+
+#: ../modules/settings.module:134
+msgid "Password and password confirm do not match"
+msgstr "Password e Conferma password non corrispondono"
+
+#  
+#: ../modules/settings.module:144 ../modules/settings.module:149
+#: ../modules/settings.module:200 ../modules/settings.module:205
+##, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "%s non esiste o non Ã¨ scrivile"
+
+# 
+#: ../modules/settings.module:189
+msgid "Voicemail email and pager address not changed"
+msgstr "Password Casella Vocale non cambiata"
+
+# 
+#: ../modules/settings.module:199 ../modules/settings.module:204
+msgid "Voicemail email settings not changed"
+msgstr "Password Casella Vocale non cambiata"
+
+#: ../modules/settings.module:347
+msgid "Language:"
+msgstr "Lingua:"
+
+#  
+#: ../modules/settings.module:357
+#, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "La Password deve essere di solo numeri e %s cifre"
+
+#  
+#: ../modules/settings.module:360
+##, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "La Password deve essere di solo numeri e minimo %s cifre"
+
+# 
+#: ../modules/settings.module:365
+msgid "Voicemail Password:"
+msgstr "Password Casella Vocale:"
+
+#: ../modules/settings.module:371
+msgid "Enter again to confirm:"
+msgstr "Conferma password:"
+
+# 
+#: ../modules/settings.module:419
+msgid "Email Notification"
+msgstr "Notifica Email"
+
+# 
+#: ../modules/settings.module:423
+msgid "Email Voicemail To:"
+msgstr "Notifica Email a:"
+
+# 
+#: ../modules/settings.module:429
+msgid "Pager Email Notification To:"
+msgstr "Invia Notifica Email al Pager:"
+
+#: ../modules/settings.module:485
+msgid "Audio Format:"
+msgstr "Formato Audio:"
+
+#: ../modules/settings.module:488
+msgid "Best Quality"
+msgstr "Migliore Qualità"
+
+#: ../modules/settings.module:489
+msgid "Smallest Download"
+msgstr "Download Veloci"
+
+#: ../modules/settings.module:497
+msgid "Voicemail Settings"
+msgstr "Impostazioni Casella Vocale"
+
+#: ../modules/settings.module:538
+msgid "Call Monitor Settings"
+msgstr "Impostazioni Registrazioni Chiamate"
+
+#: ../modules/settings.module:541
+msgid "Record INCOMING:"
+msgstr "Registra ENTRANTI:"
+
+#: ../modules/settings.module:543 ../modules/settings.module:551
+msgid "Always"
+msgstr "Sempre"
+
+#: ../modules/settings.module:544 ../modules/settings.module:552
+msgid "Never"
+msgstr "Mai"
+
+#: ../modules/settings.module:545 ../modules/settings.module:553
+msgid "On-Demand"
+msgstr "Su richiesta"
+
+#: ../modules/settings.module:549
+msgid "Record OUTGOING:"
+msgstr "Registra USCENTI:"
+
+#  
+#: ../modules/settings.module:592
+##, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Impostazioni per %s (%s)"
+
+#: ../modules/voicemail.module:44
+msgid "Voicemail"
+msgstr "Casella Vocale"
+
+#: ../modules/voicemail.module:163
+msgid "A folder must be selected before the message can be moved."
+msgstr ""
+"Prima di spostare un messaggio, selezionare una cartella di destinazione"
+
+#: ../modules/voicemail.module:177
+msgid "An extension must be selected before the message can be forwarded."
+msgstr "Prima di inoltrare un messaggio, selezionare l'interno di destinazione"
+
+#: ../modules/voicemail.module:321
+msgid "move_to"
+msgstr "sposta_verso"
+
+#: ../modules/voicemail.module:324
+msgid "Folder"
+msgstr "Cartella"
+
+#: ../modules/voicemail.module:328
+msgid "forward_to"
+msgstr "inoltra_a"
+
+#: ../modules/voicemail.module:345
+msgid "Priority"
+msgstr "Priorità"
+
+#: ../modules/voicemail.module:347
+msgid "Orig Mailbox"
+msgstr "Casella Orig"
+
+#: ../modules/voicemail.module:379
+msgid "Message"
+msgstr "Messaggio"
+
+#: ../modules/voicemail.module:394
+msgid "Voicemail recording(s) was not found."
+msgstr "Registrazioni Casella Vocale non trovate."
+
+# 
+#: ../modules/voicemail.module:395
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+"Nella pagina delle impostazioni, cambiare il formato dei messaggi vocali. "
+"Adesso è impostato su %s"
+
+# 
+#: ../modules/voicemail.module:422
+msgid "Voicemail Login not found."
+msgstr "Login Casella Vocale non trovato"
+
+#: ../modules/voicemail.module:423
+msgid "No access to voicemail"
+msgstr "Accesso alla Casella Vocale disabilitato"
+
+#: ../modules/voicemail.module:429
+msgid "No Voicemail Recordings for Admin"
+msgstr "Nessuna Casella Vocale per Admin"
+
+#  
+#: ../modules/voicemail.module:445
+#, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Casella Vocale di %s (%s)"
+
+#  
+#: ../modules/voicemail.module:695
+##, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Non posso creare la cartella %s sul server"
+
+#  
+#: ../modules/voicemail.module:735
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "Permessi negati nella cartella %s o %s"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "scarica"
+
+msgid "Unconditional:"
+msgstr "Incondizionato:"
+
+msgid "Unavailable:"
+msgstr "Non disponibile:"
+
+msgid "Busy:"
+msgstr "Occupato:"
+
+# 
+##, fuzzy
+msgid "Call Waiting"
+msgstr "Avviso di Chiamata"
+
+##, fuzzy
+msgid "Do Not Disturb"
+msgstr " Non-Disturbare"
+
+#  
+##, fuzzy
+msgid "Passwords must be all numbers and at least 3 digits"
+msgstr "La Password deve essere di solo numeri e minimo di 3 cifre"
+
+#~ msgid "Directory"
+#~ msgstr "Directory"
+
+#~ msgid "Echo Test"
+#~ msgstr "Test Echo"
+
+#~ msgid "Weather"
+#~ msgstr "Meteo"
+
+#~ msgid "Schedule wakeup call"
+#~ msgstr "Sveglia"
+
+#~ msgid "festival test (your extension is XXX)"
+#~ msgstr "Test Festival (il tuo interno è XXX)"
+
+#~ msgid "Deactivate Call Waiting"
+#~ msgstr "Disattiva Avviso di Chiamata"
+
+#~ msgid "Disable Call Forwarding"
+#~ msgstr "Disattiva Inoltro di Chiamata"
+
+# 
+#~ msgid "IVR Recording"
+#~ msgstr "Registrazione IVR"
+
+#~ msgid "Disable Do-Not-Disturb"
+#~ msgstr "Disattiva Non-Disturbare"
+
+#~ msgid "Disable Call Forward on Busy"
+#~ msgstr "Disattiva Inoltro di Chiamata su Occupato"
+
+##, fuzzy
+#~ msgid "Message Center (does not ask for extension)"
+#~ msgstr "Centro Messaggi (non chiede l'interno)"
+
+#~ msgid "Enter Message Center"
+#~ msgstr "Centro Messaggi"
+
+#~ msgid "Playback IVR Recording"
+#~ msgstr "Riproduce Registrazione IVR"
+
+#~ msgid "Test Fax"
+#~ msgstr "Test Fax"
+
+#~ msgid "Simulate incoming call"
+#~ msgstr "Simula chiamata entrante"
+
+#  
+##, fuzzy
+#~ msgid "Conference for %s (%s%s)"
+#~ msgstr "Conferenza per %s (%s%s)"
+
+#~ msgid "Help"
+#~ msgstr "Aiuto"
+
+# 
+#~ msgid "Pager Voicemail To:"
+#~ msgstr "Casella Vocale"
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "La Password deve essere di solo numeri e 4 cifre"
+
+msgid "Folders"
+msgstr "Cartelle"
+
+#~ msgid "Login used"
+#~ msgstr "Login utilizzato"
+
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Impossibile connettersi all'Asterisk Manager Interface"
+
+#~ msgid "Cannot connect to the"
+#~ msgstr "Impossibile connettersi al"
+
+#~ msgid "database"
+#~ msgstr "database"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "non è una directory o non è leggibile"
+
+#~ msgid "of"
+#~ msgstr "di"
+
+#~ msgid "Use your"
+#~ msgstr "Utilizzare il "
+
+#~ msgid "for"
+#~ msgstr "di"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "La Password deve essere di 4 numeri"
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr "Controllare il formato audio nella pagina delle impostazioni"
+
+#~ msgid "on the server"
+#~ msgstr "nel server"
+
+#~ msgid "No database connection"
+#~ msgstr "Connessione al database fallita"
+
+msgid "Email a notification, including audio file if indicated below. "
+msgstr "Invia una notifica per posta elettronica, incluso il file audio se impostato sotto."
+
+msgid "Email a short notification "
+msgstr "Invia una breve notifica"
+
+msgid "Phone Features for %s (%s)"
+msgstr "Servizi Telefonici per %s (%s)"
+
+msgid "User Portal"
+msgstr "Portale Utente"
\ No newline at end of file
diff --git a/fs_selfservice/fri/locale/locale.txt b/fs_selfservice/fri/locale/locale.txt
new file mode 100644 (file)
index 0000000..6b93e2e
--- /dev/null
@@ -0,0 +1,37 @@
+// To create the .po (write your translations to this file):
+$ find *.php ../includes/* ../modules/*.module ../misc/*.php ../theme/* | xargs xgettext -L PHP -o ari.po --keyword=_ -
+
+// To create the utf-8 .po  
+$ iconv -f iso-8859-1 -t utf-8 -o ari.utf-8.po ari.po
+
+// To create the .mo:  
+$ msgfmt -v ari.utf-8.po -o ari.mo
+
+// To update (assume both files to be merged are utf-8)
+$ msgmerge es_ES/LC_MESSAGES/ari.po ari.utf-8.po --output-file=es_ES/LC_MESSAGES/ari.po
+$ msgfmt -v es_ES/LC_MESSAGES/ari.po -o es_ES/LC_MESSAGES/ari.mo
+
+
+// script
+//   for this to work all translated files need to be converted to utf-8 (use iconv)
+//
+find ../*.php ../includes/* ../modules/*.module ../misc/*.php ../theme/*.css | xargs xgettext -L PHP -o ari.po --keyword=_ -
+iconv -f iso-8859-1 -t utf-8 -o ari.utf-8.po ari.po
+msgmerge el_GR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=el_GR/LC_MESSAGES/ari.po
+msgfmt -v el_GR/LC_MESSAGES/ari.po -o el_GR/LC_MESSAGES/ari.mo 
+msgmerge es_ES/LC_MESSAGES/ari.po ari.utf-8.po --output-file=es_ES/LC_MESSAGES/ari.po
+msgfmt -v es_ES/LC_MESSAGES/ari.po -o es_ES/LC_MESSAGES/ari.mo 
+msgmerge fr_FR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=fr_FR/LC_MESSAGES/ari.po
+msgfmt -v fr_FR/LC_MESSAGES/ari.po -o fr_FR/LC_MESSAGES/ari.mo 
+msgmerge he_IL/LC_MESSAGES/ari.po ari.utf-8.po --output-file=he_IL/LC_MESSAGES/ari.po
+msgfmt -v he_IL/LC_MESSAGES/ari.po -o he_IL/LC_MESSAGES/ari.mo 
+msgmerge hu_HU/LC_MESSAGES/ari.po ari.utf-8.po --output-file=hu_HU/LC_MESSAGES/ari.po
+msgfmt -v hu_HU/LC_MESSAGES/ari.po -o hu_HU/LC_MESSAGES/ari.mo 
+msgmerge it_IT/LC_MESSAGES/ari.po ari.utf-8.po --output-file=it_IT/LC_MESSAGES/ari.po
+msgfmt -v ot_IT/LC_MESSAGES/ari.po -o it_IT/LC_MESSAGES/ari.mo
+msgmerge pt_BR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=pt_BR/LC_MESSAGES/ari.po
+msgfmt -v pt_BR/LC_MESSAGES/ari.po -o pt_BR/LC_MESSAGES/ari.mo 
+msgmerge sv_SE/LC_MESSAGES/ari.po ari.po --output-file=sv_SE/LC_MESSAGES/ari.po
+msgfmt -v sv_SE/LC_MESSAGES/ari.po -o sv_SE/LC_MESSAGES/ari.mo 
+
+
diff --git a/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..baa1a11
Binary files /dev/null and b/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..0ab45fa
--- /dev/null
@@ -0,0 +1,647 @@
+# Brazilian portuguese translation
+# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Arnaldo M. Pereira <arnaldo@ansi-c.org>, 2005.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Arnaldo M. Pereira <arnaldo@ansi-c.org>\n"
+"Language-Team: Brazilian Portuguese <arnaldo@ansi-c.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Asterisk Call Manager não responde"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Autenticação no Asterisk falhou:"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "Comando reload do Asterisk não compreendido"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr ""
+
+#: ../includes/bootstrap.php:226
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr ""
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+
+#: ../includes/common.php:173
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Não foi possível conectar ao Asterisk Manager"
+
+#: ../includes/common.php:174
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+
+#: ../includes/common.php:175
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+
+#: ../includes/common.php:176
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+
+#: ../includes/common.php:193 ../includes/common.php:208
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr ""
+"Verifique a instalação do AMP, do banco de dados do asterisk ou do main.conf "
+"do ARI"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr ""
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Página não encontrada."
+
+#: ../includes/display.php:92
+#, fuzzy
+msgid "Search"
+msgstr "Procurado"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "Procurado"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Resultados"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "Resultados"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "Primeiro"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr ""
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Senha incorreta"
+
+#: ../includes/login.php:279
+#, fuzzy
+msgid "Incorrect Username or Password"
+msgstr "Senha incorreta"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr ""
+
+#: ../includes/login.php:419
+#, fuzzy
+msgid "Password"
+msgstr "Senha incorreta"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr ""
+
+#: ../includes/login.php:436
+#, fuzzy
+msgid "Remember Password"
+msgstr "Voicemail para"
+
+#: ../includes/login.php:451
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr "Mailbox e senha do Voicemail"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "Esta é a mesma senha utilizada para o telefone"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Para manutenção e assistência, entre em contato com o Administrador de seu "
+"Sistema de Telefonia"
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr ""
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr ""
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr ""
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr ""
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr ""
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr ""
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr ""
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr ""
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr ""
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr ""
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr ""
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr ""
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr ""
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr ""
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr ""
+
+#: ../includes/main.conf.php:239
+msgid "IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr ""
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr ""
+
+#: ../includes/main.conf.php:244
+msgid "Message Center (does not ask for extension)"
+msgstr ""
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr ""
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr ""
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr ""
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr ""
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr ""
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:291
+msgid "Say envelop (date/time) in recording emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr ""
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr ""
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+#, fuzzy
+msgid "Call Monitor"
+msgstr "Monitor de ligações para"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr ""
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr ""
+
+#: ../modules/callmonitor.module:147
+msgid "duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:150
+msgid "ignore"
+msgstr ""
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr ""
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr ""
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr ""
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr ""
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr ""
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr ""
+
+#: ../modules/callmonitor.module:202
+#, fuzzy
+msgid "Monitor"
+msgstr "Monitor de ligações para"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr ""
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Monitor de ligações para"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr ""
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr ""
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr ""
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr ""
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "Voicemail para"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr ""
+
+#: ../modules/help.module:70
+#, fuzzy, php-format
+msgid "Help for %s (%s)"
+msgstr "Configurações para"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr ""
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr ""
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Configurações"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr ""
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "Senha do Voicemail não alterada"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr "Senha e confirmação de senha não pode ser não pode estar em branco"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#: ../modules/settings.module:162
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "Senha e confirmação de senha não batem"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "não existe ou não tem permissão de escrita"
+
+#: ../modules/settings.module:223
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "Senha do Voicemail não alterada"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "Senha do Voicemail não alterada"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr ""
+
+#: ../modules/settings.module:408
+#, fuzzy
+msgid "Call Routing"
+msgstr "Monitor de ligações para"
+
+#: ../modules/settings.module:411
+#, fuzzy
+msgid "Call Forwarding:"
+msgstr "Monitor de ligações para"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+msgid "Enable"
+msgstr ""
+
+#: ../modules/settings.module:431
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#: ../modules/settings.module:439
+#, fuzzy
+msgid "Voicemail Password:"
+msgstr "Voicemail para"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr ""
+
+#: ../modules/settings.module:492
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "Voicemail para"
+
+#: ../modules/settings.module:498
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "Voicemail para"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr ""
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr ""
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr ""
+
+#: ../modules/settings.module:570
+#, fuzzy
+msgid "Voicemail Settings"
+msgstr "Voicemail para"
+
+#: ../modules/settings.module:611
+#, fuzzy
+msgid "Call Monitor Settings"
+msgstr "Monitor de ligações para"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr ""
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr ""
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr ""
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr ""
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr ""
+
+#: ../modules/settings.module:669
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Configurações para"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr ""
+
+#: ../modules/voicemail.module:45
+#, fuzzy
+msgid "Voicemail"
+msgstr "Voicemail para"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "Uma pasta deve ser selecionada antes que a mensagem possa ser movida."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr ""
+"Uma extensão deve ser selecionada antes que a mensagem possa ser repassada."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr ""
+
+#: ../modules/voicemail.module:307
+msgid "Folder"
+msgstr ""
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr ""
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr ""
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr ""
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr ""
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "Gravação do(s) Voicemail(s) não encontrada."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Login do Voicemail não encontrado, utilizado login SIP"
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "Sem acesso ao voicemail"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "Sem gravações para Admin"
+
+#: ../modules/voicemail.module:428
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "Voicemail para"
+
+#: ../modules/voicemail.module:678
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Não foi possível criar caixa de mensagens"
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr ""
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr ""
+
+#, fuzzy
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Asterisk Call Manager não responde"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "não é um diretório ou não pode ser lido"
+
+#~ msgid "of"
+#~ msgstr "de"
+
+#~ msgid "Use your"
+#~ msgstr "Use seu"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "A senha deve conter apenas números e apenas 4 dígitos"
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr ""
+#~ "Verifique o formato do audio do voicemail na página de configurações para "
+#~ "mudar de"
+
+#~ msgid "on the server"
+#~ msgstr "no servidor"
+
+#~ msgid "No database connection"
+#~ msgstr "Sem conexão com o banco de dados"
diff --git a/fs_selfservice/fri/locale/readme.txt b/fs_selfservice/fri/locale/readme.txt
new file mode 100644 (file)
index 0000000..2491865
--- /dev/null
@@ -0,0 +1,37 @@
+// To create the .po (write your translations to this file):
+$ find *.php ../includes/* ../modules/*.module ../misc/*.php ../theme/* | xargs xgettext -L PHP -o ari.po --keyword=_ -
+
+// To create the utf-8 .po  
+$ iconv -f iso-8859-1 -t utf-8 -o ari.utf-8.po ari.po
+
+// To create the .mo:  
+$ msgfmt -v ari.utf-8.po -o ari.mo
+
+// To update (assume both files to be merged are utf-8)
+$ msgmerge es_ES/LC_MESSAGES/ari.po ari.utf-8.po --output-file=es_ES/LC_MESSAGES/ari.po
+$ msgfmt -v es_ES/LC_MESSAGES/ari.po -o es_ES/LC_MESSAGES/ari.mo
+
+
+// script
+//   for this to work all translated files need to be converted to utf-8 (use iconv)
+//
+find *.php ../includes/* ../modules/*.module ../misc/*.php ../theme/* | xargs xgettext -L PHP -o ari.po --keyword=_ -
+iconv -f iso-8859-1 -t utf-8 -o ari.utf-8.po ari.po
+msgmerge el_GR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=el_GR/LC_MESSAGES/ari.po
+msgfmt -v el_GR/LC_MESSAGES/ari.po -o el_GR/LC_MESSAGES/ari.mo
+msgmerge es_ES/LC_MESSAGES/ari.po ari.utf-8.po --output-file=es_ES/LC_MESSAGES/ari.po
+msgfmt -v es_ES/LC_MESSAGES/ari.po -o es_ES/LC_MESSAGES/ari.mo
+msgmerge fr_FR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=fr_FR/LC_MESSAGES/ari.po
+msgfmt -v fr_FR/LC_MESSAGES/ari.po -o fr_FR/LC_MESSAGES/ari.mo
+msgmerge he_IL/LC_MESSAGES/ari.po ari.utf-8.po --output-file=he_IL/LC_MESSAGES/ari.po
+msgfmt -v he_IL/LC_MESSAGES/ari.po -o he_IL/LC_MESSAGES/ari.mo
+msgmerge hu_HU/LC_MESSAGES/ari.po ari.utf-8.po --output-file=hu_HU/LC_MESSAGES/ari.po
+msgfmt -v hu_HU/LC_MESSAGES/ari.po -o hu_HU/LC_MESSAGES/ari.mo
+msgmerge it_IT/LC_MESSAGES/ari.po ari.utf-8.po --output-file=it_IT/LC_MESSAGES/ari.po
+msgfmt -v ot_IT/LC_MESSAGES/ari.po -o it_IT/LC_MESSAGES/ari.mo
+msgmerge pt_BR/LC_MESSAGES/ari.po ari.utf-8.po --output-file=pt_BR/LC_MESSAGES/ari.po
+msgfmt -v pt_BR/LC_MESSAGES/ari.po -o pt_BR/LC_MESSAGES/ari.mo
+msgmerge sv_SE/LC_MESSAGES/ari.po ari.utf-8.po --output-file=sv_SE/LC_MESSAGES/ari.po
+msgfmt -v sv_SE/LC_MESSAGES/ari.po -o sv_SE/LC_MESSAGES/ari.mo
+
+
diff --git a/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.mo b/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.mo
new file mode 100644 (file)
index 0000000..c8ea152
Binary files /dev/null and b/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.mo differ
diff --git a/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.po b/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.po
new file mode 100644 (file)
index 0000000..f8f0ad3
--- /dev/null
@@ -0,0 +1,678 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-03 08:32-0400\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Niklas Larsson <pnsystem@comhem.se>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../includes/asi.php:46
+msgid "Asterisk Call Manager not responding"
+msgstr "Asterisk Call Manager svara ej"
+
+#: ../includes/asi.php:54
+msgid "Asterisk authentication failed:"
+msgstr "Ej godk&auml;nd autentisering mot Asterisk:"
+
+#: ../includes/asi.php:96 ../includes/asi.php:111
+#, fuzzy
+msgid "Asterisk command not understood"
+msgstr "Asterisk f&ouml;rstod ej omladdningskommandot"
+
+#: ../includes/bootstrap.php:123
+#, php-format
+msgid "To many directories in %s Not all files processed"
+msgstr "F&ouml;r m&aring;nga mappar i %s Alla filer har inte behandlats"
+
+#: ../includes/bootstrap.php:226
+#, fuzzy
+msgid "ARI requires a version of PHP 4.3 or later"
+msgstr "ARI kr&auml;ver version 4.0 eller h&ouml;gre av PHP"
+
+#: ../includes/bootstrap.php:245
+msgid ""
+"PHP PEAR must be installed.  Visit http://pear.php.net for help with "
+"installation."
+msgstr ""
+"PHP PEAR m&aring;ste installeras. G&aring; till http://pear.php.net, och "
+"installera."
+
+#: ../includes/common.php:173
+#, fuzzy
+msgid "ARI does not appear to have access to the Asterisk Manager."
+msgstr "Kan ej ansluta till Asterisk Manager"
+
+#: ../includes/common.php:174
+#, fuzzy
+msgid ""
+"Check the ARI 'main.conf.php' configuration file to set the Asterisk Manager "
+"Account."
+msgstr ""
+"Kontrollera ARI 'main.conf' filen och inst&auml;llningarna f&ouml;r Asterisk "
+"Manager kontot."
+
+#: ../includes/common.php:175
+#, fuzzy
+msgid "Check /etc/asterisk/manager.conf for a proper Asterisk Manager Account"
+msgstr ""
+"Kontrollera /etc/asterisk/manager.conf, se till att det finns ett korrekt "
+"Asterisk Manager konto"
+
+#: ../includes/common.php:176
+#, fuzzy
+msgid ""
+"make sure [general] enabled = yes and a 'permit=' line for localhost or the "
+"webserver."
+msgstr ""
+" som bla har [general] enabled = yes och en 'permit=' f&ouml;r localhost "
+"eller ip nummret f&ouml;r webservern"
+
+#: ../includes/common.php:193 ../includes/common.php:208
+#, fuzzy
+msgid "Check AMP installation, asterisk, and ARI main.conf"
+msgstr "Kontrollera AMP installationen, asterisk databas eller ARI main.conf"
+
+#: ../includes/common.php:344
+msgid "Logout"
+msgstr "Logga ut"
+
+#: ../includes/common.php:349
+msgid "Page Not Found."
+msgstr "Sidan hittas ej."
+
+#: ../includes/display.php:92
+msgid "Search"
+msgstr "S&ouml;k"
+
+#: ../includes/display.php:135
+msgid "Searched for"
+msgstr "S&ouml;kte efter"
+
+#: ../includes/display.php:139
+#, fuzzy, php-format
+msgid "Results %d - %d of %d"
+msgstr "Resultat %d av %d"
+
+#: ../includes/display.php:141
+#, fuzzy, php-format
+msgid "Results %d"
+msgstr "Resultat %d"
+
+#: ../includes/display.php:195
+msgid "First"
+msgstr "F&ouml;rst"
+
+#: ../includes/display.php:208
+msgid "Last"
+msgstr "Sist"
+
+#: ../includes/login.php:267
+msgid "Incorrect Password"
+msgstr "Felaktigt l&ouml;senord"
+
+#: ../includes/login.php:279
+msgid "Incorrect Username or Password"
+msgstr "Felaktigt l&ouml;senord"
+
+#: ../includes/login.php:402 ../includes/login.php:411
+msgid "Login"
+msgstr "Anv&auml;ndarnamn"
+
+#: ../includes/login.php:419
+msgid "Password"
+msgstr "L&ouml;senord"
+
+#: ../includes/login.php:428
+msgid "Submit"
+msgstr "Logga in"
+
+#: ../includes/login.php:436
+msgid "Remember Password"
+msgstr "Kom ih&aring;g l&ouml;senord"
+
+#: ../includes/login.php:451
+#, fuzzy
+msgid "Use your <b>Voicemail Mailbox and Password</b>"
+msgstr ""
+"Anv&auml;nd din <b>R&ouml;stbrevl&aring;das nummer och l&ouml;senord</b>"
+
+#: ../includes/login.php:452
+msgid "This is the same password used for the phone"
+msgstr "Det &auml;r samma l&ouml;senord som till din telefon"
+
+#: ../includes/login.php:454
+msgid ""
+"For password maintenance or assistance, contact your Phone System "
+"Administrator."
+msgstr ""
+"Om du har problem med l&ouml;senord eller beh&ouml;ver hj&auml;lp ska du "
+"kontakta din v&auml;xel ansvarig"
+
+#: ../includes/main.conf.php:152
+msgid "INBOX"
+msgstr "Inbox"
+
+#: ../includes/main.conf.php:154
+msgid "Family"
+msgstr "Familj"
+
+#: ../includes/main.conf.php:156
+msgid "Friends"
+msgstr "V&auml;nner"
+
+#: ../includes/main.conf.php:158
+msgid "Old"
+msgstr "Gamla"
+
+#: ../includes/main.conf.php:160
+msgid "Work"
+msgstr "Arbete"
+
+#: ../includes/main.conf.php:229
+msgid "Directory"
+msgstr "Katalog"
+
+#: ../includes/main.conf.php:230
+msgid "Echo Test"
+msgstr "Eko test"
+
+#: ../includes/main.conf.php:231 ../modules/callmonitor.module:161
+#: ../modules/voicemail.module:324
+msgid "Time"
+msgstr "Tid"
+
+#: ../includes/main.conf.php:232
+msgid "Weather"
+msgstr "V&auml;der"
+
+#: ../includes/main.conf.php:233
+msgid "Schedule wakeup call"
+msgstr "Schemal&auml;gg v&auml;ckningssamtal"
+
+#: ../includes/main.conf.php:234
+msgid "festival test (your extension is XXX)"
+msgstr "Festival test (din anknytning &auml;r XXX)"
+
+#: ../includes/main.conf.php:235
+msgid "Activate Call Waiting (deactivated by default)"
+msgstr "Aktivera Samtal V&auml;ntar"
+
+#: ../includes/main.conf.php:236
+msgid "Deactivate Call Waiting"
+msgstr "Avaktivera Samtal V&auml;ntar"
+
+#: ../includes/main.conf.php:237
+msgid "Call Forwarding System"
+msgstr "Vidarekoppla"
+
+#: ../includes/main.conf.php:238
+msgid "Disable Call Forwarding"
+msgstr "Avaktivera vidarekoppling"
+
+#: ../includes/main.conf.php:239
+#, fuzzy
+msgid "IVR Recording"
+msgstr "R&ouml;stmeny inspelning"
+
+#: ../includes/main.conf.php:240
+msgid "Enable Do-Not-Disturb"
+msgstr "Aktivera St&ouml;r Ej"
+
+#: ../includes/main.conf.php:241
+msgid "Disable Do-Not-Disturb"
+msgstr "Avaktivera St&ouml;r Ej"
+
+#: ../includes/main.conf.php:242
+msgid "Call Forward on Busy"
+msgstr "Vidarekoppla vid upptaget"
+
+#: ../includes/main.conf.php:243
+msgid "Disable Call Forward on Busy"
+msgstr "Avaktivera vidarekoppla vid upptaget"
+
+#: ../includes/main.conf.php:244
+#, fuzzy
+msgid "Message Center (does not ask for extension)"
+msgstr "R&ouml;stbrevl&aring;da (fr&aring;ga ej efter anknytning)"
+
+#: ../includes/main.conf.php:245
+msgid "Enter Message Center"
+msgstr "G&aring; till r&ouml;stbrevl&aring;dan"
+
+#: ../includes/main.conf.php:246
+msgid "Playback IVR Recording"
+msgstr "Spela upp r&ouml;stmeny"
+
+#: ../includes/main.conf.php:247
+msgid "Test Fax"
+msgstr "Fax test"
+
+#: ../includes/main.conf.php:248
+msgid "Simulate incoming call"
+msgstr "Simulera inkommande samtal"
+
+#: ../includes/main.conf.php:289
+msgid "Email voicemail as attachment"
+msgstr "Bifoga meddeladen i E-Post"
+
+#: ../includes/main.conf.php:290
+msgid "Say caller id in recording emailed"
+msgstr "L&auml;ser upp nummret i meddelandet"
+
+#: ../includes/main.conf.php:291
+#, fuzzy
+msgid "Say envelop (date/time) in recording emailed"
+msgstr "L&auml;ser upp informationen i meddelandet"
+
+#: ../includes/main.conf.php:292
+msgid "Delete voicemail when emailed"
+msgstr "Radera meddelandet n&auml;r det e-postats"
+
+#: ../includes/main.conf.php:293
+msgid "Play next message after deleting current message"
+msgstr "Spelar upp n&auml;sta eftera att ha raderat nuvarande"
+
+#: ../includes/main.conf.php:294
+msgid "Ask caller to review their voicemail before sending"
+msgstr ""
+
+#: ../includes/main.conf.php:295
+msgid "Maximum time in seconds a voicemail will record"
+msgstr ""
+
+#: ../modules/callmonitor.module:37 ../modules/callmonitor.module:257
+msgid "Call Monitor"
+msgstr "Samtalsregister"
+
+#: ../modules/callmonitor.module:132
+#, php-format
+msgid "Path is not a directory: %s"
+msgstr "S&oulm;kv&auml;gen leder ej till en mapp: %s"
+
+#: ../modules/callmonitor.module:141 ../modules/voicemail.module:301
+msgid "delete"
+msgstr "Radera"
+
+#: ../modules/callmonitor.module:147
+#, fuzzy
+msgid "duration"
+msgstr "L&auml;ngd"
+
+#: ../modules/callmonitor.module:150
+#, fuzzy
+msgid "ignore"
+msgstr "ignorera"
+
+#: ../modules/callmonitor.module:159 ../modules/voicemail.module:322
+msgid "Date"
+msgstr "Datum"
+
+#: ../modules/callmonitor.module:163 ../modules/voicemail.module:326
+msgid "Caller ID"
+msgstr "Nummerpresentation"
+
+#: ../modules/callmonitor.module:165
+msgid "Source"
+msgstr "K&auml;lla"
+
+#: ../modules/callmonitor.module:167
+msgid "Destination"
+msgstr "M&aring;l"
+
+#: ../modules/callmonitor.module:169
+msgid "Context"
+msgstr "Sammanhang"
+
+#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332
+msgid "Duration"
+msgstr "L&auml;ngd"
+
+#: ../modules/callmonitor.module:202
+msgid "Monitor"
+msgstr "Inspelning"
+
+#: ../modules/callmonitor.module:222 ../modules/voicemail.module:373
+msgid "play"
+msgstr "spela"
+
+#: ../modules/callmonitor.module:259
+#, fuzzy, php-format
+msgid "Call Monitor for %s (%s)"
+msgstr "Samtalsregister f&ouml;r %s (%s)"
+
+#: ../modules/callmonitor.module:311 ../modules/voicemail.module:475
+msgid "select"
+msgstr "Val"
+
+#: ../modules/callmonitor.module:312 ../modules/voicemail.module:476
+msgid "all"
+msgstr "alla"
+
+#: ../modules/callmonitor.module:313 ../modules/voicemail.module:477
+msgid "none"
+msgstr "inga"
+
+#: ../modules/callmonitor.module:533
+msgid "Only deletes recording files, not cdr log"
+msgstr "Raderar endast inspelade filer, inte samtalsloggen"
+
+#: ../modules/conference.module:55
+msgid "My Conference room"
+msgstr ""
+
+#: ../modules/conference.module:78
+#, fuzzy, php-format
+msgid "Conference for %s (%s%s)"
+msgstr "R&ouml;stbrevl&aring;da f&ouml;r %s (%s)"
+
+#: ../modules/help.module:39 ../modules/help.module:68
+msgid "Help"
+msgstr "Hj&auml;lp"
+
+#: ../modules/help.module:70
+#, php-format
+msgid "Help for %s (%s)"
+msgstr "Hj&auml;lp f&ouml;r %s (%s)"
+
+#: ../modules/help.module:77
+msgid "Handset Feature Code"
+msgstr "Kortkoder"
+
+#: ../modules/help.module:80
+msgid "Action"
+msgstr "Utf&ouml;r"
+
+#: ../modules/settings.module:61 ../modules/settings.module:667
+msgid "Settings"
+msgstr "Inst&auml;llningar"
+
+#: ../modules/settings.module:125
+msgid "Call forward number not changed"
+msgstr "Vidarekopplingsnummret ej &auml;ndrat"
+
+#: ../modules/settings.module:126
+#, php-format
+msgid ""
+"Number %s must contain dial numbers (characters like '(', '-', and ')' are "
+"ok)"
+msgstr ""
+"Nummer %s ska inneh&aring;lla nummer (tecknen; '(', '-' och ')' &auml;r "
+"till&aring;tna"
+
+#: ../modules/settings.module:151 ../modules/settings.module:156
+#: ../modules/settings.module:161 ../modules/settings.module:166
+#: ../modules/settings.module:176 ../modules/settings.module:181
+msgid "Voicemail password not changed"
+msgstr "L&ouml;senord f&ouml;r r&ouml;stbrevl&aring;dan har inte &auml;ndrats"
+
+#: ../modules/settings.module:152
+msgid "Password and password confirm must not be blank"
+msgstr ""
+"L&ouml;senord och bekr&auml;fta l&ouml;senord f&aring;r inte vara tomma"
+
+#: ../modules/settings.module:157
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and greater than %d digits"
+msgstr "L&ouml;senordet m&aring;ste vara %d siffror"
+
+#: ../modules/settings.module:162
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %d digits"
+msgstr "L&ouml;senordet m&aring;ste vara %d siffror"
+
+#: ../modules/settings.module:167
+msgid "Password and password confirm do not match"
+msgstr "L&ouml;senord och bekr&auml;ftat l&ouml;senord st&auml;mmer inte"
+
+#: ../modules/settings.module:177 ../modules/settings.module:182
+#: ../modules/settings.module:234 ../modules/settings.module:239
+#, fuzzy, php-format
+msgid "%s does not exist or is not writable"
+msgstr "%s finns ej eller &auml;r ej l&auml;sbar"
+
+#: ../modules/settings.module:223
+#, fuzzy
+msgid "Voicemail email and pager address not changed"
+msgstr "L&ouml;senord f&ouml;r r&ouml;stbrevl&aring;dan har inte &auml;ndrats"
+
+#: ../modules/settings.module:233 ../modules/settings.module:238
+#, fuzzy
+msgid "Voicemail email settings not changed"
+msgstr "L&ouml;senord f&ouml;r r&ouml;stbrevl&aring;dan har inte &auml;ndrats"
+
+#: ../modules/settings.module:385
+msgid "Language:"
+msgstr "Spr&aring;k:"
+
+#: ../modules/settings.module:408
+#, fuzzy
+msgid "Call Routing"
+msgstr "Inst&auml;llningar f&ouml;r Vidarekoppling"
+
+#: ../modules/settings.module:411
+#, fuzzy
+msgid "Call Forwarding:"
+msgstr "Vidarekoppling"
+
+#: ../modules/settings.module:419 ../modules/settings.module:507
+#, fuzzy
+msgid "Enable"
+msgstr "Aktivera"
+
+#: ../modules/settings.module:431
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and only %s digits"
+msgstr "L&ouml;senordet m&aring;ste vara %s siffror"
+
+#: ../modules/settings.module:434
+#, fuzzy, php-format
+msgid "Passwords must be all numbers and at least %s digits"
+msgstr "L&ouml;senordet m&aring;ste vara %s siffror"
+
+#: ../modules/settings.module:439
+#, fuzzy
+msgid "Voicemail Password:"
+msgstr "L&ouml;senord f&ouml;r r&ouml;stbrevl&aring;da"
+
+#: ../modules/settings.module:445
+msgid "Enter again to confirm:"
+msgstr "Bekr&auml;fta:"
+
+#: ../modules/settings.module:492
+#, fuzzy
+msgid "Email Voicemail To:"
+msgstr "R&ouml;stbrevl&aring;da"
+
+#: ../modules/settings.module:498
+#, fuzzy
+msgid "Pager Voicemail To:"
+msgstr "R&ouml;stbrevl&aring;da"
+
+#: ../modules/settings.module:558
+msgid "Audio Format:"
+msgstr "Ljud format:"
+
+#: ../modules/settings.module:561
+msgid "Best Quality"
+msgstr "B&auml;sta kvaliten"
+
+#: ../modules/settings.module:562
+msgid "Smallest Download"
+msgstr "Minsta storlek"
+
+#: ../modules/settings.module:570
+msgid "Voicemail Settings"
+msgstr "Inst&auml;llningar f&ouml;r R&ouml;stbrevl&aring;da"
+
+#: ../modules/settings.module:611
+msgid "Call Monitor Settings"
+msgstr "Inst&auml;llningar f&ouml;r Samtalsregister"
+
+#: ../modules/settings.module:614
+msgid "Record INCOMING:"
+msgstr "Spela in inkommande samtal:"
+
+#: ../modules/settings.module:616 ../modules/settings.module:624
+msgid "Always"
+msgstr "Alltid"
+
+#: ../modules/settings.module:617 ../modules/settings.module:625
+msgid "Never"
+msgstr "Aldrig"
+
+#: ../modules/settings.module:618 ../modules/settings.module:626
+msgid "On-Demand"
+msgstr "Vid behov"
+
+#: ../modules/settings.module:622
+msgid "Record OUTGOING:"
+msgstr "Spela in utg&aring;ende samtal:"
+
+#: ../modules/settings.module:669
+#, fuzzy, php-format
+msgid "Settings for %s (%s)"
+msgstr "Inst&auml;llningar f&ouml;r %s (%s)"
+
+#: ../modules/settings.module:705
+msgid "Update"
+msgstr "Uppdatera"
+
+#: ../modules/voicemail.module:45
+msgid "Voicemail"
+msgstr "R&ouml;stbrevl&aring;da"
+
+#: ../modules/voicemail.module:164
+msgid "A folder must be selected before the message can be moved."
+msgstr "En mapp m&aring;sta v&auml;ljas innan meddelandet kan flyttas."
+
+#: ../modules/voicemail.module:178
+msgid "An extension must be selected before the message can be forwarded."
+msgstr ""
+"En anknytning m&aring;ste v&auml;ljas innan meddelandet kan vidarebefodras."
+
+#: ../modules/voicemail.module:304
+msgid "move_to"
+msgstr "Flytta till"
+
+#: ../modules/voicemail.module:307
+#, fuzzy
+msgid "Folder"
+msgstr "Mappar"
+
+#: ../modules/voicemail.module:311
+msgid "forward_to"
+msgstr "Vidarebefodra till"
+
+#: ../modules/voicemail.module:328
+msgid "Priority"
+msgstr "Prioritet"
+
+#: ../modules/voicemail.module:330
+msgid "Orig Mailbox"
+msgstr "Ursprunglig r&ouml;stbrevl&aring;da"
+
+#: ../modules/voicemail.module:362
+msgid "Message"
+msgstr "Meddelande"
+
+#: ../modules/voicemail.module:377
+msgid "Voicemail recording(s) was not found."
+msgstr "R&ouml;stmeddelande hittades inte."
+
+#: ../modules/voicemail.module:378
+#, php-format
+msgid ""
+"On settings page, change voicemail audio format.  It is currently set to %s"
+msgstr ""
+"P&aring; inst&auml;llningssidan, &auml;ndra r&ouml;stbrevl&aring;dans "
+"ljudformat. Det &auml;r nu %s"
+
+#: ../modules/voicemail.module:405
+#, fuzzy
+msgid "Voicemail Login not found."
+msgstr "Hittar inte r&ouml;stbrevl&aring;da."
+
+#: ../modules/voicemail.module:406
+msgid "No access to voicemail"
+msgstr "Inget tilltr&auml;de till r&ouml;stbrevl&aring;dan"
+
+#: ../modules/voicemail.module:412
+msgid "No Voicemail Recordings for Admin"
+msgstr "Inga r&ouml;stmeddelande f&ouml;r Admin"
+
+#: ../modules/voicemail.module:428
+#, fuzzy, php-format
+msgid "Voicemail for %s (%s)"
+msgstr "R&ouml;stbrevl&aring;da f&ouml;r %s (%s)"
+
+#: ../modules/voicemail.module:678
+#, fuzzy, php-format
+msgid "Could not create mailbox folder %s on the server"
+msgstr "Kan inte skapa mapp f&ouml;r r&ouml;stbrevl&aring;da"
+
+#: ../modules/voicemail.module:718
+#, php-format
+msgid "Permission denied on folder %s or %s"
+msgstr "Saknar r&auml;ttigheter f&ouml;r mappen %s eller %s"
+
+#: ../misc/recording_popup.php:39
+msgid "download"
+msgstr "ladda ner"
+
+#~ msgid "Folders"
+#~ msgstr "Mappar"
+
+#~ msgid "Version"
+#~ msgstr "Version"
+
+#~ msgid "Passwords must be all numbers and only 4 digits"
+#~ msgstr "L&ouml;senordet m&aring;ste vara 4 siffror"
+
+#~ msgid "Unable to connect to Asterisk Manager"
+#~ msgstr "Kan ej ansluta till Asterisk Manager"
+
+#, fuzzy
+#~ msgid "No Asterisk Manager Interface connection"
+#~ msgstr "Asterisk Call Manager svara ej"
+
+#~ msgid "of"
+#~ msgstr "av"
+
+#~ msgid "Login used"
+#~ msgstr "Anv&auml;nd Login"
+
+#~ msgid "help"
+#~ msgstr "hj&auml;lp"
+
+#~ msgid "not a directory or not readable"
+#~ msgstr "inte en mapp eller ej l&auml;sbar"
+
+#~ msgid "Use your"
+#~ msgstr "Anv&auml;nd din"
+
+#~ msgid "for"
+#~ msgstr "f&ouml;r"
+
+#~ msgid "Password must be all numbers and 4 digits"
+#~ msgstr "L&ouml;senordet m&aring;ste vara 4 siffror"
+
+#~ msgid "Check voicemail audio format on settings page to change from"
+#~ msgstr ""
+#~ "&Auml;ndra inst&auml;llningar f&ouml;r r&ouml;stbrevl&aring;dans ljud "
+#~ "format f&ouml;r att &auml;ndra fr&aring;n"
+
+#~ msgid "on the server"
+#~ msgstr "p&aring; servern"
+
+#~ msgid "No database connection"
+#~ msgstr "Ingen kontakt med databasen"
diff --git a/fs_selfservice/fri/misc/audio.php b/fs_selfservice/fri/misc/audio.php
new file mode 100644 (file)
index 0000000..2dc355c
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+
+/**
+ * @file
+ * plays recording file
+ */
+
+
+
+if (isset($_GET['recording'])) {
+
+  chdir("..");
+  include_once("./includes/bootstrap.php");
+
+  global $ARI_CRYPT_PASSWORD;
+
+  $crypt = new Crypt();
+
+  $path = $crypt->decrypt($_GET['recording'],$ARI_CRYPT_PASSWORD);
+
+  // strip ".." from path for security
+  $path = preg_replace('/\.\./','',$path);
+  
+  // See if the file exists
+  if (!is_file($path)) { die("<b>404 File not found!</b>"); }
+
+  // Gather relevent info about file
+  $size = filesize($path);
+  $name = basename($path);
+  $extension = strtolower(substr(strrchr($name,"."),1));
+
+  // This will set the Content-Type to the appropriate setting for the file
+  $ctype ='';
+  switch( $extension ) {
+    case "mp3": $ctype="audio/mpeg"; break;
+    case "wav": $ctype="audio/x-wav"; break;
+    case "Wav": $ctype="audio/x-wav"; break;
+    case "WAV": $ctype="audio/x-wav"; break;
+    case "gsm": $ctype="audio/x-gsm"; break;
+
+    // not downloadable
+    default: die("<b>404 File not found!</b>"); break ;
+  }
+
+  // need to check if file is mislabeled or a liar.
+  $fp=fopen($path, "rb");
+  if ($size && $ctype && $fp) {
+    header("Pragma: public");
+    header("Expires: 0");
+    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
+    header("Cache-Control: public");
+    header("Content-Description: wav file");
+    header("Content-Type: " . $ctype);
+    header("Content-Disposition: attachment; filename=" . $name);
+    header("Content-Transfer-Encoding: binary");
+    header("Content-length: " . $size);
+    fpassthru($fp);
+  } 
+}
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/misc/popup.css b/fs_selfservice/fri/misc/popup.css
new file mode 100644 (file)
index 0000000..7a53528
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * popup
+ */
+
+.popup_download {
+  color: #105D90; 
+  margin: 250px; 
+  font-size: 12px; 
+  text-align: right;
+}
\ No newline at end of file
diff --git a/fs_selfservice/fri/misc/recording_popup.php b/fs_selfservice/fri/misc/recording_popup.php
new file mode 100644 (file)
index 0000000..1546adc
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * @file
+ * popup window for playing recording
+ */
+
+chdir("..");
+include_once("./includes/bootstrap.php");
+
+?>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <TITLE>ARI</TITLE>
+    <link rel="stylesheet" href="popup.css" type="text/css">
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+  </head>
+  <body>
+
+<?php
+
+  global $ARI_CRYPT_PASSWORD;
+
+  $crypt = new Crypt();
+
+  $path = $crypt->encrypt($_GET['recording'],$ARI_CRYPT_PASSWORD);
+
+  if (isset($path)) {
+    if (isset($_GET['date'])) {
+      echo($_GET['date'] . "<br>");
+    }
+    if (isset($_GET['time'])) {
+      echo($_GET['time'] . "<br>");
+    }
+    echo("<br>");
+    echo("<embed src='audio.php?recording=" . $path . "' width=300, height=20 autoplay=true loop=false></embed><br>");
+    echo("<a class='popup_download' href=/recordings/misc/audio.php?recording="  . $path . ">" . _("download") . "</a><br>");
+  }
+
+?>
+
+  </body>
+</html>
+
diff --git a/fs_selfservice/fri/modules/VmX.module b/fs_selfservice/fri/modules/VmX.module
new file mode 100644 (file)
index 0000000..61ef653
--- /dev/null
@@ -0,0 +1,661 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the call monitor recordings
+ */
+
+/**
+  * Class for Followme
+  */
+class VmX {
+
+  var $protocol_table;
+  var $protocol_config_files;
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+       $rank = 6;
+       return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+       function navMenu($args) {
+               
+               global $SETTINGS_ALLOW_VMX_SETTINGS;
+               global $ARI_ADMIN_USERNAME;
+               
+               $ret = "";
+
+               // We are only going to show the menu 
+               // if VmX is allowed
+               if ($SETTINGS_ALLOW_VMX_SETTINGS) {
+
+                       $exten = $_SESSION['ari_user']['extension'];
+                       
+                       // and we are not logged in as admin
+                       if ($exten!=$ARI_ADMIN_USERNAME) {
+                       
+                               $vmx_enabled    = $this->getVmxState($exten,'unavail');
+                               
+                               // and vmx is enabled for this user
+                               if ($vmx_enabled !== false)
+                                       $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] .  "?m=VmX&f=display'>" . _("VmX&#8482 Locator") . "</a></small></small></p>";
+                       }
+               }
+               
+               return $ret;
+       }
+
+  /*
+   * Acts on the user settings
+   *
+   * @param $args
+   *   Common arguments
+   * @param $a
+   *   action
+   */
+  function action($args) {
+
+       global $STANDALONE;
+       global $ARI_ADMIN_USERNAME;
+       global $SETTINGS_ALLOW_VMX_SETTINGS;
+
+       // args
+       $m = getArgument($args,'m');
+       $a = getArgument($args,'a');
+
+       $follow_me_disabled                             = getArgument($args,'follow_me_disabled');
+
+       $vmx_option_0_number                    = getArgument($args, 'vmx_option_0_number');
+       $vmx_option_0_system_default    = getArgument($args, 'vmx_option_0_system_default');
+       $vmx_option_1_number                    = getArgument($args, 'vmx_option_1_number');
+       $vmx_option_1_system_default    = getArgument($args, 'vmx_option_1_system_default');
+       $vmx_option_2_number                    = getArgument($args, 'vmx_option_2_number');
+       $vmx_unavail_enabled                    = getArgument($args, 'vmx_unavail_enabled');
+       $vmx_busy_enabled                               = getArgument($args, 'vmx_busy_enabled');
+       $vmx_play_instructions                  = getArgument($args, 'vmx_play_instructions');
+       $vmx_disabled                                   = getArgument($args, 'vmx_disabled');
+
+       $exten = $_SESSION['ari_user']['extension'];
+
+       // The action is 'update
+       if ($a=='update') {
+       
+                       $follow_me_disabled = ($this->getFollowMeListRingTime($exten) > 0)?0:1;
+                       
+               
+                       $vmx_disabled = $this->getVmxState($exten,'unavail');
+                       if ($vmx_disabled === false) {
+                               $vmx_disabled = true;
+                               $SETTINGS_ALLOW_VMX_SETTINGS=false;
+                       } else {
+                               $vmx_disabled = false;
+                       }
+                       if ($vmx_disabled) {
+                       
+                               setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
+                               $vmx_disabled_delayed = $vmx_disabled;
+                               $_SESSION['ari_error'] = 
+                               _("Your Premium VmX Locator service has been disabled, REFRESH your browser to remove this message") . "<br>" .
+                               sprintf(_("Check with your Telephone System Administrator if you think there is a problem"));
+                       }
+               
+               if (! $vmx_disabled) {
+               
+                       // set database
+                       $this->setVmxState($exten,'unavail',$vmx_unavail_enabled);
+                       $this->setVmxState($exten,'busy',$vmx_busy_enabled);
+                       $this->setVmxPlayInstructions($exten,'unavail',$vmx_play_instructions);
+                       $this->setVmxPlayInstructions($exten,'busy',$vmx_play_instructions);
+                       
+                       // store cookie
+                       setcookie("ari_vmx_unavail_enabled", $vmx_unavail_enabled, time()+365*24*60*60);
+                       setcookie("ari_vmx_busy_enabled", $vmx_busy_enabled, time()+365*24*60*60);
+                       setcookie("ari_vmx_play_instructions", $vmx_play_instructions, time()+365*24*60*60);
+                       
+                       $stripped_vmx_option_0_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_0_number);
+                       
+                       if ($vmx_option_0_system_default) {
+                               $this->setVmxOptionNumber($exten,'0','unavail',"");
+                               $this->setVmxOptionNumber($exten,'0','busy',"");
+                               setcookie("ari_vmx_option_0_system_default", $vmx_option_0_system_default, time()+365*24*60*60);
+                               if (is_numeric($stripped_vmx_option_0_number) || !$stripped_vmx_option_0_number) {
+                                       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
+                                       if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
+                                               setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
+                                       }
+                               }
+                       } else {
+                               if (!is_numeric($stripped_vmx_option_0_number) && $stripped_vmx_option_0_number) {
+                                       $_SESSION['ari_error'] = 
+                                       _("Option 0 not changed") . "<br>" .
+                                       sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_0_number);
+                               }
+                               else {
+                                       
+                                       // set database
+                                       $this->setVmxOptionNumber($exten,'0','unavail',$stripped_vmx_option_0_number);
+                                       $this->setVmxOptionNumber($exten,'0','busy',$stripped_vmx_option_0_number);
+                                       
+                                       // store cookie
+                                       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_0_number']);
+                                       if ($vmx_option_0_number && $stripped!=$stripped_vmx_option_0_number) {
+                                               setcookie("ari_vmx_option_0_number", $call_vmx_option_0_number, time()+365*24*60*60);
+                                       }
+                               }
+                       }
+                       
+                       $stripped_vmx_option_1_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_1_number);
+                       if ($vmx_option_1_system_default && !$follow_me_disabled) {
+                               $this->setVmxOptionFollowMe($exten,'1','unavail');
+                               $this->setVmxOptionFollowMe($exten,'1','busy');
+                               setcookie("ari_vmx_option_1_system_default", $vmx_option_1_system_default, time()+365*24*60*60);
+                               if (is_numeric($stripped_vmx_option_1_number) || !$stripped_vmx_option_1_number) {
+                                       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
+                                       if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
+                                               setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
+                                       }
+                               }
+                       }
+                       else {
+                       
+                               if (!is_numeric($stripped_vmx_option_1_number) && $stripped_vmx_option_1_number) {
+                                       $_SESSION['ari_error'] = 
+                                       _("Option 1 not changed") . "<br>" .
+                                       sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_1_number);
+                               }
+                               else {
+                                       
+                                       // set database
+                                       $this->setVmxOptionNumber($exten,'1','unavail',$stripped_vmx_option_1_number);
+                                       $this->setVmxOptionNumber($exten,'1','busy',$stripped_vmx_option_1_number);
+                                       
+                                       // store cookie
+                                       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_1_number']);
+                                       if ($vmx_option_1_number && $stripped!=$stripped_vmx_option_1_number) {
+                                               setcookie("ari_vmx_option_1_number", $call_vmx_option_1_number, time()+365*24*60*60);
+                                       }
+                               }
+                       }
+                       
+                       $stripped_vmx_option_2_number = preg_replace('/-|\(|\)|\s/','',$vmx_option_2_number);
+                       if (!is_numeric($stripped_vmx_option_2_number) && $stripped_vmx_option_2_number) {
+                               $_SESSION['ari_error'] = 
+                               _("Option 2 not changed") . "<br>" .
+                               sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"),$vmx_option_2_number);
+                       }
+                       else {
+                               
+                               // set database
+                               $this->setVmxOptionNumber($exten,'2','unavail',$stripped_vmx_option_2_number);
+                               $this->setVmxOptionNumber($exten,'2','busy',$stripped_vmx_option_2_number);
+                               
+                               // store cookie
+                               $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_vmx_option_2_number']);
+                               if ($vmx_option_2_number && $stripped!=$stripped_vmx_option_2_number) {
+                                       setcookie("ari_vmx_option_2_number", $call_vmx_option_2_number, time()+365*24*60*60);
+                               }
+                       }
+               } // vmx_disabled false
+       }
+
+       // redirect to see updated page
+       $ret .= "
+         <head>
+               <script>
+               <!--
+                 window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
+               // -->
+               </script>
+       </head>";
+  
+       return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+       global $SETTINGS_ALLOW_VMX_SETTINGS;
+
+       global $loaded_modules;
+
+       // args
+       $m              = getArgument($args,'m');
+       $q              = getArgument($args,'q');
+       $start  = getArgument($args,'start');
+       $span   = getArgument($args,'span');
+
+       $displayname    = $_SESSION['ari_user']['displayname'];
+       $exten                  = $_SESSION['ari_user']['extension'];
+
+       $display = new DisplaySearch();
+
+       $follow_me_listring_time = $this->getFollowMeListRingTime($exten);
+
+       //TODO: Set this better than this?
+       $follow_me_disabled = ($follow_me_listring_time > 0)?0:1;
+       setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
+
+
+       $vmx_unavail_enabled=$this->getVmxState($exten,'unavail');
+       if ($vmx_unavail_enabled === false) {
+               $vmx_disabled = true;
+               setcookie("ari_vmx_disabled", $vmx_disabled, time()+365*24*60*60);
+               $SETTINGS_ALLOW_VMX_SETTINGS=false;
+       } else {
+               $vmx_disabled = false;
+               setcookie("ari_vmx_disabled", false, time()+365*24*60*60);
+               $vmx_busy_enabled=$this->getVmxState($exten,'busy');
+               $vmx_play_instructions=$this->getVmxPlayInstructions($exten);
+               $vmx_option_0_number=$this->getVmxOptionNumber($exten,'0');;
+               $vmx_option_1_number=$this->getVmxOptionNumber($exten,'1');;
+               $vmx_option_2_number=$this->getVmxOptionNumber($exten,'2');;
+               
+               if (is_numeric($vmx_option_0_number)) {
+                       $vmx_option_0_system_default='';
+                       $vmx_option_0_number_text_box_options='';
+               } else {
+                       $vmx_option_0_system_default='checked';
+                       $vmx_option_0_number_text_box_options="disabled style='background: #DDD;'";
+               }
+               
+               // if follow-me is enabled then the options are a numberic value (dial a phone number)
+               // or a followme target (FMnnn) which should not be displayed but means the box is checked
+               // or otherwise blank (or garbage in which case blank it)
+               //
+               if (!$follow_me_disabled) {
+                       $vmx_option_1_system_default=$this->getVmxOptionFollowMe($exten,'1');
+                       if ($vmx_option_1_system_default) {
+                               $vmx_option_1_number = '';
+                               $vmx_option_1_number_text_box_options="disabled style='background: #DDD;'";
+                       }
+               }
+       }
+               
+       $set_vmx_text .= 
+               "
+               <br>
+               <table class='settings'>
+                       <tr>
+                               <td><a href='#' class='info'>" . _("Use When:") . "<span>" . _("Menu options below are available during your personal voicemail greeting playback. <br/><br/>Check both to use at all times.") . "<br></span></a></td> <td>
+                                       <input " . $vmx_unavail_enabled . " type=checkbox name='vmx_unavail_enabled' value='checked'>
+                                       <small>" . _("unavailable") . "</small>
+                               </td>
+                               <td>
+                                       <input " . $vmx_busy_enabled . " type=checkbox name='vmx_busy_enabled' value='checked'>
+                                       <small>" . _("busy") . "</small>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td><a href='#' class='info'>" . _("Voicemail Instructions:") ."<span>" . _("Uncheck to play a beep after your personal voicemail greeting.") . "<br></span></a></td>
+                               <td>
+                                       <input " . $vmx_play_instructions . " type=checkbox name='vmx_play_instructions' value='checked'>
+                                       <small>" . _("Standard voicemail prompts.") . "</small>
+                               </td>
+                       </tr>
+               </table>
+               <br>
+               <br>
+               <table class='settings'>
+                       <tr>
+                               <td><a href='#' class='info'>" . _("Press 0:") . "<span>" . _("Pressing 0 during your personal voicemail greeing goes to the Operator. 
+                                       Uncheck to enter another destination here.") . "<br></span></a>
+                               </td>
+                               <td>
+                                       <input " . $vmx_option_0_number_text_box_options . " name='vmx_option_0_number' type='text' size=24 value='" . $vmx_option_0_number . "'>
+                               </td>
+                               <td>
+                                       <input " . $vmx_option_0_system_default . " type=checkbox name='vmx_option_0_system_default' value='checked' OnClick=\"disable_fields(); return true;\">
+                                       <small>" . _("Go To Operator") . "</small>
+                               </td>
+                       </tr>
+                       <tr>
+                               <td><a href='#' class='info'>" . _("Press 1:") . "<span>";
+                       
+       if ($follow_me_disabled)
+               $set_vmx_text .= _("The remaining options can have internal extensions, ringgroups, queues and external numbers that may be rung. It is often used to include your cell phone. You should run a test to make sure that the number is functional any time a change is made so you don't leave a caller stranded or receiving invalid number messages.");
+       else
+               $set_vmx_text .= _("Enter an alternate number here, then change your personal voicemail greeting to let callers know to press 1 to reach that number. <br/><br/>If you'd like to use your Follow Me List, check \"Send to Follow Me\" and disable Follow Me above.");
+       
+       
+       $set_vmx_text .=  
+               "                       <br></span></a>
+                               </td>
+                               <td>
+                                       <input " . $vmx_option_1_number_text_box_options . " name='vmx_option_1_number' type='text' size=24 value='" . $vmx_option_1_number . "'>
+                               </td>
+                               <td>";
+                               
+                               
+       if (!$follow_me_disabled)
+               $set_vmx_text .=  "<input " . $vmx_option_1_system_default . " type=checkbox name='vmx_option_1_system_default' value='checked' OnClick=\"disable_fields(); return true;\"><small>" . _("Send to Follow-Me") . "</small>";
+                                       
+                                       
+       $set_vmx_text .=  
+                               "       
+                               </td>
+                       </tr>
+                       <tr>
+                               <td><a href='#' class='info'>" . _("Press 2:") . "<span>" . _("Use any extensions, ringgroups, queues or external numbers. <br/><br/>Remember to re-record your personal voicemail greeting and include instructions. Run a test to make sure that the number is functional.") . "<br></span></a></td>
+                               <td>
+                                       <input " . $vmx_option_2_number_text_box_options . " name='vmx_option_2_number' type='text' size=24 value='" . $vmx_option_2_number . "'>
+                               </td>
+                       </tr>
+               </table>
+               <br>
+               <br>            
+               ";
+
+
+       // Now we should be ready to build the page
+       $ret .= checkErrorMessage();
+
+       $headerText = sprintf(_("VmX Locator&#8482; Settings for %s (%s)"),$displayname,$exten);
+
+       $ret .= $display->displayHeaderText($headerText);
+       $ret .= $display->displayLine();
+
+       $ret .= 
+               "<SCRIPT LANGUAGE='JavaScript'>
+                       <!-- Begin
+                               function disable_fields() {
+                               
+                                       if (document.ari_settings.vmx_option_0_system_default.checked) {
+                                               document.ari_settings.vmx_option_0_number.style.backgroundColor = '#DDD';
+                                               document.ari_settings.vmx_option_0_number.disabled = true;
+                                       } 
+                                       else {
+                                               document.ari_settings.vmx_option_0_number.style.backgroundColor = '#FFF';
+                                               document.ari_settings.vmx_option_0_number.disabled = false;
+                                       }";
+                                       
+                                       if (!$follow_me_disabled) {
+                                               $ret .= "
+                                                       if (document.ari_settings.vmx_option_1_system_default.checked) {
+                                                               document.ari_settings.vmx_option_1_number.style.backgroundColor = '#DDD';
+                                                               document.ari_settings.vmx_option_1_number.disabled = true;
+                                                       } 
+                                                       else {
+                                                               document.ari_settings.vmx_option_1_number.style.backgroundColor = '#FFF';
+                                                               document.ari_settings.vmx_option_1_number.disabled = false;
+                                                       }";
+                                       }
+                                       $ret .=  
+                               "}
+                       // End -->
+               </script>";
+
+       $ret .= 
+               "<form class='settings' name='ari_settings' action='' method='GET'>
+                       <input type=hidden name=m value=" . $m . ">
+                       <input type=hidden name=f value='action'>
+                       <input type=hidden name=a value='update'>
+                       " . $set_vmx_text . "
+                       <br>
+                       <input name='submit' type='submit' value='" . _("Update") . "'>
+               </form>";
+
+       return $ret;
+  }
+
+  /*
+   * Gets VMX option FollowMe
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @param $digit
+   *   Option number to get
+   * @param $mode
+        *      Mode to get (unavail/busy)
+   * @return $response
+   *   checked if set to got to extesion's follow-me on this option
+   */
+  function getVmxOptionFollowMe($exten, $digit, $mode='unavail') {
+
+       global $asterisk_manager_interface;
+
+               $digit = trim($digit);
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
+       return (($response == 'FM'.$exten) ? 'checked':'');
+  }
+
+  /*
+   * Sets VMX option FollowMe
+   *
+   * @param $exten
+   *   Extension to set information about
+   * @param $digit
+   *   Option number to set
+   * @param $mode
+        *      Mode to set (unavail/busy)
+   * @param $context
+        *      Context to set ext to (default from-findmefollow)
+   * @param $priority
+        *      Priority to set ext to (default 1)
+   */
+  function setVmxOptionFollowMe($exten, $digit, $mode, $context='ext-findmefollow', $priority='1') {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = "FM$exten";
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
+  }
+
+  /*
+   * Gets VMX option number
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @param $digit
+   *   Option number to get
+   * @param $mode
+        *      Mode to get (unavail/busy)
+   * @return $number
+   *   Number to use or blank if disabled
+   */
+  function getVmxOptionNumber($exten, $digit, $mode='unavail') {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+               $digit = trim($digit);
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/$digit/ext\r\n\r\n");
+       if (is_numeric($response)) {
+         $number = $response;
+       }
+
+       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE["ari_vmx_option_${digit}_number"]);
+       if ($stripped==$number) {
+         $number = $_COOKIE["ari_vmx_option_${digit}_number"];
+       }
+
+       return $number;
+  }
+
+  /*
+   * Sets VMX option number
+   *
+   * @param $exten
+   *   Extension to set information about
+   * @param $digit
+   *   Option number to set
+   * @param $mode
+        *      Mode to set (unavail/busy)
+   * @param $number
+        *      Number to set ext to (blank will delete it)
+   * @param $context
+        *      Context to set ext to (default from-internal)
+   * @param $priority
+        *      Priority to set ext to (default 1)
+   */
+  function setVmxOptionNumber($exten, $digit, $mode, $number, $context='from-internal', $priority='1') {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = trim($number);
+
+               if (is_numeric($value_opt)) {
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/ext $value_opt\r\n\r\n");
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/context $context\r\n\r\n");
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/$digit/pri $priority\r\n\r\n");
+               } else {
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database deltree AMPUSER $exten/vmx/$mode/$digit\r\n\r\n");
+               }
+  }
+
+  /*
+   * Sets VMX State
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $mode
+        *      Mode to set (unavail/busy)
+   * @param $vmx_state
+   *   enabled/disabled state based on check box value
+   */
+  function setVmxState($exten,$mode,$vmx_state) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = ($vmx_state)?'enabled':'disabled';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/state $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets VMX State
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @param $mode
+        *      Mode to get (unavail/busy)
+   * @return $data
+   *   state of variable (checked/blank) or false if no poper value
+   */
+  function getVmxState($exten, $mode='unavail') {
+
+       global $asterisk_manager_interface;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/state\r\n\r\n");
+
+       if (preg_match("/enabled/",$response)) {
+                       $response='checked';
+       } 
+       elseif (preg_match("/disabled/",$response)) {
+                       $response='';
+       }
+               else {
+                       $response = false;
+               }
+
+       //TODO: really need to check for a bogus response, see how other side does it
+       //
+       return $response;
+
+  }
+
+  /*
+   * Sets VMX Play Instructions
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $vmx_play_instructions
+   *   play instructions or just beep (checked, blank)
+   * @param $mode
+        *      Mode to set (unavail/busy)
+   */
+  function setVmxPlayInstructions($exten,$mode,$vmx_play_instructions) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = ($vmx_play_instructions)?'""':'s';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/vmx/$mode/vmxopts/timeout $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Get VMX Play Instructions
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @param $mode
+        *      Mode to get (unavail/busy)
+   * @return $data
+   *   state of variable (checked/blank) or false if no poper value
+   */
+  function getVmxPlayInstructions($exten, $mode='unavail') {
+
+       global $asterisk_manager_interface;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/vmx/$mode/vmxopts/timeout\r\n\r\n");
+
+       if (preg_match("/s/",$response)) {
+                       $response='';
+       } 
+               else {
+                       $response='checked';
+               }
+
+       //TODO: really need to check for a bogus response, see how other side does it
+       //
+       return $response;
+
+  }
+
+
+  /*
+   * Gets Follow Me List-Ring Time if set
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $number
+   *   follow me list-ring time returned if set
+   */
+  function getFollowMeListRingTime($exten) {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grptime\r\n\r\n");
+       if (is_numeric($response)) {
+         $number = $response;
+       }
+
+       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_listring_time']);
+       if ($stripped==$number) {
+         $number = $_COOKIE['ari_follow_me_listring_time'];
+       }
+
+       return $number;
+  }
+
+
+} // class
+
+?>
diff --git a/fs_selfservice/fri/modules/callmonitor.module b/fs_selfservice/fri/modules/callmonitor.module
new file mode 100644 (file)
index 0000000..25924d5
--- /dev/null
@@ -0,0 +1,675 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the call monitor recordings
+ */
+
+/**
+  * Class for Callmonitor
+  */
+class Callmonitor {
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+    $rank = 2;
+    return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+
+    $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Callmonitor&f=display'>" . _("Call Monitor") . "</a></small></small></p><br>";
+
+    return $ret;
+  }
+
+  /*
+   * Acts on the selected call monitor recordings in the method indicated by the action and updates page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function recAction($args) {
+
+    // args
+    $m = getArgument($args,'m');
+    $a = getArgument($args,'a');
+    $q = getArgument($args,'q');
+    $start = getArgument($args,'start');
+    $span = getArgument($args,'span');
+    $order = getArgument($args,'order');
+    $sort = getArgument($args,'sort');
+    $duration_filter = getArgument($args,'duration_filter');
+
+    // get files
+    $files = array();
+    foreach($_REQUEST as $key => $value) {
+      if (preg_match('/selected/',$key)) {
+        array_push($files, $value);
+      }
+    }
+
+    if ($a=='delete') {
+      $this->deleteRecData($files);
+    }
+
+    if ($a=='ignore') {
+
+      $start = 0;
+
+      setcookie("ari_duration_filter", $duration_filter, time()+365*24*60*60);
+    }
+
+    // redirect to see updated page
+    $ret .= "
+      <head>
+        <script>
+        <!--
+          window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&q=" . $q . "&start=" . $start . "&span=" . $span . "&order=" . $order . "&sort=" . $sort . "&duration_filter=" . $duration_filter . "\"
+        // -->
+        </script>
+      </head>";
+
+    return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+
+    global $ASTERISK_CALLMONITOR_PATH;
+    global $CALLMONITOR_ALLOW_DELETE;
+    global $AJAX_PAGE_REFRESH_ENABLE;
+
+    $display = new DisplaySearch();
+
+    // get the search string
+    $m = getArgument($args,'m');
+    $f = getArgument($args,'f');
+    $q = getArgument($args,'q');
+    $start = getArgument($args,'start');
+    $span = getArgument($args,'span');
+    $order = getArgument($args,'order');
+    $sort = getArgument($args,'sort');
+    $duration_filter = getArgument($args,'duration_filter');
+
+    $start = $start=='' ? 0 : $start;
+    $span = $span=='' ? 15 : $span;
+    $order = $order=='' ? 'calldate' : $order;
+    $sort = $sort=='' ? 'desc' : $sort;
+
+    $displayname = $_SESSION['ari_user']['displayname'];
+    $extension = $_SESSION['ari_user']['extension'];
+
+    // get data
+    $record_count = $this->getCdrCount($q,$duration_filter);
+    $data = $this->getCdrData($q,$duration_filter,$start,$span,$order,$sort);
+
+    // get the call monitor recording files
+    $paths = split(';',$ASTERISK_CALLMONITOR_PATH);
+    foreach($paths as $key => $path) {
+      if (!is_dir($path)) {
+        $_SESSION['ari_error'] .= sprintf(_("Path is not a directory: %s"),$path) . "<br>";
+      }
+    }
+    $recordings = $this->getRecordings($ASTERISK_CALLMONITOR_PATH,$data);
+
+    // build controls
+    if ($CALLMONITOR_ALLOW_DELETE) {
+      $controls .= "
+        <button class='infobar' type='submit' onclick=\"document.callmonitor_form.a.value='delete'\">
+        " . _("delete") . "
+        </button>
+        &nbsp;";
+    }
+
+    $controls .= " 
+      <small>" . _("duration") . "</small>
+      <input name='duration_filter' type='text' size=4 maxlength=8 value='" . $_COOKIE['ari_duration_filter'] . "'>
+      <button class='infobar' type='submit' onclick=\"document.callmonitor_form.a.value='ignore'\">
+      " . _("ignore") . "
+      </button>";
+
+    // table header
+    if ($CALLMONITOR_ALLOW_DELETE) {
+      $recording_delete_header = "<th></th>";
+    }
+
+    $fields[0]['field'] = "calldate";
+    $fields[0]['text'] = _("Date");
+    $fields[1]['field'] = "calldate";
+    $fields[1]['text'] = _("Time");
+    $fields[2]['field'] = "clid";
+    $fields[2]['text'] = _("Caller ID");
+    $fields[3]['field'] = "src";
+    $fields[3]['text'] = _("Source");
+    $fields[4]['field'] = "dst";
+    $fields[4]['text'] = _("Destination");
+    $fields[5]['field'] = "dcontext";
+    $fields[5]['text'] = _("Context");
+    $fields[6]['field'] = "duration";
+    $fields[6]['text'] = _("Duration");
+
+    $i = 0;
+    while ($fields[$i]) {
+
+      $field = $fields[$i]['field'];
+      $text = $fields[$i]['text'];
+      if ($order==$field) { 
+        if ($sort=='asc') {
+          $currentSort = 'desc';
+          $arrowImg = "<img src='theme/images/arrow-asc.gif' alt='sort'>";
+        }
+        else {
+          $currentSort = 'asc';
+          $arrowImg = "<img src='theme/images/arrow-desc.gif' alt='sort'>";
+        }   
+
+        if ($i==1) {
+          $arrowImg = '';
+        }    
+      }
+      else {
+        $arrowImg = '';
+        $currentSort = 'desc';
+      }
+
+      $unicode_q = urlencode($q);
+      $recording_header .= "<th><a href=" .  $_SESSION['ARI_ROOT'] . "?m=" . $m . "&f=" . $f . "&q=" . $unicode_q . "&order=" . $field . "&sort=" . $currentSort . ">" . $text . $arrowImg . "</a></th>";
+
+      $i++;
+    }
+    $recording_header .= "<th>" . _("Monitor") . "</th>";
+
+    // table body
+    foreach($data as $key=>$value) {
+
+      // recording file
+      $recording = $recordings[$value['uniqueid'] . $value['calldate']];
+
+      // date and time
+      $buf = split(' ', $value[calldate]);
+      $date = $buf[0];
+      $time = $buf[1];
+
+      // recording delete checkbox
+      if ($CALLMONITOR_ALLOW_DELETE) {
+        $recording_delete_checkbox = "<td class='checkbox'><input type=checkbox name='selected" . ++$i . "' value=" . $recording . "></td>";
+      }
+
+      $recordingLink = '';
+      if (is_file($recordings[$value['uniqueid'] . $value['calldate']])) {
+        $recordingLink = "<a href='#' onClick=\"javascript:popUp('misc/recording_popup.php?recording=" . $recording . "&date=" . $date . "&time=" . $time . "'); return false;\">" . _("play") . "</a>";
+      }
+    
+      $recording_body .= "<tr>
+                       " . $recording_delete_checkbox . "
+                      <td width=70>" . $date . "</td>
+                      <td>" . $time . "</td>
+                      <td>" . $value[clid] . "</td>
+                      <td>" . $value[src] . "</td>
+                      <td>" . $value[dst] . "</td>
+                      <td>" . $value[dcontext] . "</td>
+                      <td width=90>" . $value[duration] . " sec</td>
+                      <td>" . $recordingLink . "</td>
+                    </tr>";
+    }
+    if (!count($data)) {
+      $recording_body .= "<tr></tr>";
+    }
+
+    // options
+    $url_opts = array();
+    $url_opts['sort'] = $sort;
+    $url_opts['order'] = $order;
+    $url_opts['duration_filter'] = $duration_filter;
+
+    // build page content
+    $ret .= checkErrorMessage();
+
+    // ajax page refresh script
+    if ($AJAX_PAGE_REFRESH_ENABLE) {
+ //     $ret .= ajaxRefreshScript($args);
+    }
+
+    // header
+    if ($_SESSION['ari_user']['admin_callmonitor']) {
+      $header_text = _("Call Monitor");
+    } else {
+      $header_text = sprintf(_("Call Monitor for %s (%s)"),$displayname,$extension);
+    }
+    $ret .= $display->displayHeaderText($header_text);
+    $ret .= $display->displaySearchBlock('left',$m,$q,$url_opts,true);
+
+    // start form
+    if ($CALLMONITOR_ALLOW_DELETE) {
+
+      $ret .= "
+        <form  name='callmonitor_form' action='" . $_SESSION['ARI_ROOT'] . "' method='GET'>
+          <input type=hidden name=m value=" . $m . ">  
+          <input type=hidden name=f value=recAction>
+          <input type=hidden name=a value=''>
+          <input type=hidden name=q value=" . $q . ">
+          <input type=hidden name=start value=" . $start . ">
+          <input type=hidden name=span value=" . $span . ">
+          <input type=hidden name=order value=" . $order . ">
+          <input type=hidden name=sort value=" . $sort . ">";
+    }
+
+    $ret .= $display->displayInfoBarBlock($controls,$q,$start,$span,$record_count);
+
+    // javascript for popup and message actions
+    $ret .= "
+      <SCRIPT LANGUAGE='JavaScript'>
+      <!-- Begin
+      function popUp(URL) {
+        eval(\"page = window.open(URL, 'play', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=324,height=110');\");
+      }
+
+      function checkAll(form,set) {
+        var elem = 0;
+        var i = 0;
+        while (elem = form.elements[i]) {
+          if (set) {
+            elem.checked = true;
+          } else {
+            elem.checked = false;
+          }
+          i++;
+        }
+        return true;
+      }
+      // End -->
+      </script>";
+
+    // call monitor delete recording controls
+    if ($CALLMONITOR_ALLOW_DELETE) {
+      $ret .= "
+        <table>
+          <tr>
+            <td>
+              <small>" . _("select") . ": </small>
+              <small><a href='' OnClick=\"checkAll(document.callmonitor_form,true); return false;\">" . _("all") . "</a></small>
+              <small><a href='' OnClick=\"checkAll(document.callmonitor_form,false); return false;\">" . _("none") . "</a></small>
+            </td>
+          </tr>
+        </table>";
+    }
+    else {
+      $ret .= "<br>";
+    }
+
+    // table
+    $ret .= "
+      <table class='callmonitor'>
+        <tr>
+          " . $recording_delete_header . "
+          " . $recording_header . "
+        </tr>
+        " . $recording_body . "
+      </table>";
+
+    $start = getArgument($args,'start');
+    $span = getArgument($args,'span');
+    $order = getArgument($args,'order');
+    $sort = getArgument($args,'sort');
+
+    // end form
+    if ($CALLMONITOR_ALLOW_DELETE) {
+      $ret .= "</form>";
+    }
+
+    $ret .= $display->displaySearchBlock('center',$m,$q,$url_opts,false);
+    $ret .= $display->displayNavigationBlock($m,$q,$url_opts,$start,$span,$record_count);
+
+    return $ret;
+  }
+
+  /*
+   * Checks for a recording file
+   *
+   * @param $asterisk_callmonitor_path
+   *   path call monitor recording directory on the asterisk server
+   * @param $data
+   *   current call monitor recordings on the asterisk server
+   * @return $recording
+   *   returns an array of $recording file names if found
+   */
+  function getRecordings($asterisk_callmonitor_path,$data) {
+
+    global $CALLMONITOR_ONLY_EXACT_MATCHING;
+    global $CALLMONITOR_AGGRESSIVE_MATCHING;
+
+    $recordings = array();
+
+    $extension = $_SESSION['ari_user']['extension'];
+
+    $paths = split(';',$asterisk_callmonitor_path);
+    foreach($paths as $key => $path) {
+      $paths[$key] = fixPathSlash($paths[$key]);
+    }
+
+    $files = array();
+    if (!$CALLMONITOR_ONLY_EXACT_MATCHING) {
+      $filter = '';
+      $recursiveMax = 6;
+      $recursiveCount = 0;
+      foreach($paths as $key => $path) {
+        $path_files = getFiles($path,$filter,$recursiveMax,$recursiveCount);
+        if ($path_files) {
+          $files = array_merge($files,$path_files);
+        }
+      }
+      rsort($files);
+    }
+
+    foreach($data as $data_key => $data_value) {
+
+      $recording='';
+
+      $calldate = $data_value['calldate'];
+      $duration = $data_value['duration'];
+      $lastdata = $data_value['lastdata'];
+      $uniqueid = $data_value['uniqueid'];
+      $userfield = $data_value['userfield'];
+
+      // timestamps
+      $st = trim(strtotime($calldate));
+      $et = trim(strtotime($calldate) + $duration);   // for on-demand call recordings
+
+      // unique file key
+      if ($uniqueid) {
+        $buf = preg_replace('/\-|\:/', '', $calldate);
+        $calldate_key = preg_replace('/\s+/', '-', $buf);
+        $unique_file_key = $calldate_key . "-" . $uniqueid;
+      }
+      if ($unique_file_key=='') {
+        $buf = preg_split("/\|/", $lastdata);
+        $unique_file_key = $buf[1];
+      }
+
+      $recordingLink = '';
+      foreach($paths as $callmonitor_key => $path) {
+
+        // try to find an exact match using the uniqueid
+        if (isset($uniqueid)) {
+
+          $check_files = array();
+          array_push($check_files,$path . $uniqueid . ".WAV");
+          array_push($check_files,$path . $uniqueid . ".wav");
+          array_push($check_files,$path . $uniqueid . ".gsm");
+
+          array_push($check_files,$path . $unique_file_key . ".WAV");
+          array_push($check_files,$path . $unique_file_key . ".wav");
+          array_push($check_files,$path . $unique_file_key . ".gsm");
+
+          array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".WAV");
+          array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".wav");
+          array_push($check_files,$path . "g" . $extension . "-" . $unique_file_key . ".gsm");
+
+          array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".WAV");
+          array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".wav");
+          array_push($check_files,$path . "q" . $extension . "-" . $unique_file_key . ".gsm");
+
+          array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".WAV");
+          array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".wav");
+          array_push($check_files,$path . "OUT" . $extension . "-" . $unique_file_key . ".gsm");
+
+          array_push($check_files,$path . $userfield);
+
+          // try to match 
+          foreach($check_files as $check_file) {
+            if (is_file($check_file)) {
+              $recording = $check_file;
+              break;
+            }
+          }
+        } 
+
+        // if found do not need to check the rest of the paths
+        if ($recording!='') {
+          break;
+        }
+      }
+
+      // get all the callmonitor recordings on server and try to find a non-exact match for this log entry
+      if (!$CALLMONITOR_ONLY_EXACT_MATCHING) {
+
+        // try to find a file using the uniqueid
+        if (!$recording) {
+
+          // try and match the unique id
+          if (!$recording) { 
+            foreach($files as $key => $path) {
+              if (strlen($uniqueid)>1 && strpos($path,$uniqueid)!==FALSE) {
+                $recording = $path;
+                $files[$key] = '';  // remove it from the recording files so it will not be matched twice
+                break;
+              }
+            } 
+          }
+        } 
+
+        // try and match a file using the calldate (if no unique number from database) 
+        if (!$recording) { 
+
+          foreach($files as $key => $path) {
+            $parts = split("-", $path);
+            if (strlen($st)>1 && 
+                   (strpos($path,$st)!==FALSE) || 
+                   (strpos($path,"auto")!==FALSE && $parts[1] >= $st && $parts[1] <= $et)) {
+              $recording = $path;
+              $files[$key] = '';  // remove it from the recording files so it will not be matched twice
+              break;
+            }
+          } 
+        }
+
+        if ($CALLMONITOR_AGGRESSIVE_MATCHING) {
+
+          // one last stab at finding a recording by adding one or two seconds to the call time 
+          if (!$recording) { 
+            $st_1 = trim($st+1);
+            $st_2 = trim($st+2);
+            $et_1 = trim($et+1);
+            $et_2 = trim($et+2);
+            foreach($files as $key => $path) {
+              $split = explode("-", $path);
+              if (strlen($st)>1 
+                    && ((strpos($path,$st_1)!==FALSE) || 
+                        (strpos($path,$st_2)!==FALSE) ||
+                        (strpos($path,"auto")!==FALSE && $parts[1] >= $st_1 && $parts[1] <= $et_1) ||
+                        (strpos($path,"auto")!==FALSE && $parts[1] >= $st_2 && $parts[1] <= $et_2))) {
+                $recording = $path;
+                $files[$key] = '';  // remove it from the recording files so it will not be matched twice
+                break;
+              }
+            } 
+          }
+        }
+      }
+
+      // add to array to be returned
+      if ($recording) {
+        $recordings[$uniqueid . $calldate] = $recording;
+      }
+    }
+
+    return $recordings;
+  }
+
+  /*
+   * Deletes selected call monitor recordings
+   *
+   * @param $files
+   *   Array of files to delete
+   */
+  function deleteRecData($files) {
+
+    foreach($files as $key => $file) {
+      if (is_writable($file)) {
+        unlink($file);
+      } else {
+        $_SESSION['ari_error'] = _("Only deletes recording files, not cdr log");
+      }
+    }
+  }
+
+  /*
+   * Gets cdr record count
+   *
+   * @param $q
+   *   query text
+   */
+  function getSearchText($q,$duration_filter) {
+
+    // search text
+    if ($q!='*' && $q!=NULL) {
+      $searchText .= "WHERE ";
+      $tok = strtok($q," \n\t");
+      while ($tok) {
+        $searchText .= " (calldate regexp '" . $tok . "'
+                         OR clid regexp '" . $tok . "'
+                         OR src regexp '" . $tok . "'
+                         OR dst regexp '" . $tok . "'
+                         OR dstchannel regexp '" . $tok . "'
+                         OR dcontext regexp '" . $tok . "'
+                         OR duration regexp '" . $tok . "'
+                         OR disposition regexp '" . $tok . "'
+                         OR uniqueid regexp '" . $tok . "'
+                         OR userfield regexp '" . $tok . "'
+                       )";
+        $tok = strtok(" \n\t");
+        if ($tok) {
+          $searchText .= " AND";
+        }
+      }
+    }
+
+    // duration_filter
+    if ($duration_filter) {
+      if (!$searchText) {
+        $searchText .= "WHERE ";
+      } else {
+        $searchText .= "AND ";
+      }
+      $searchText .= "duration>" . $duration_filter . " "; 
+    }
+
+    // admin
+    if (!$_SESSION['ari_user']['admin_callmonitor']) {
+      if (!$searchText) {
+        $searchText .= "WHERE ";
+      } else {
+        $searchText .= "AND ";
+      }
+
+      // allow entries to be viewed with users extension
+      $searchText .= "(src = '" . $_SESSION['ari_user']['extension'] . "'
+                      OR dst = '" . $_SESSION['ari_user']['extension'] . "'
+
+                                       OR channel LIKE 'IAX2/" . $_SESSION['ari_user']['extension'] ."-%'
+                                       OR dstchannel LIKE 'IAX2/" . $_SESSION['ari_user']['extension'] ."-%'
+
+                     OR channel LIKE 'SIP/" . $_SESSION['ari_user']['extension'] ."-%'
+                     OR dstchannel LIKE 'SIP/" . $_SESSION['ari_user']['extension'] ."-%')";
+
+      // allow entries to be viewed with users outbound CID
+      if (isset($_SESSION['ari_user']['outboundCID']) && trim($_SESSION['ari_user']['outboundCID']) != '') {
+        $searchText .= "OR (src = '" . $_SESSION['ari_user']['outboundCID'] . "'
+                        OR dst = '" . $_SESSION['ari_user']['outboundCID'] . "')";
+      }
+    }
+
+    return $searchText;
+  }
+
+  /*
+   * Gets cdr record count
+   *
+   * @param $q
+   *   query text
+   * @return $count
+   *   Number of cdr records counted
+   */
+  function getCdrCount($q,$duration_filter) {
+
+    global $ASTERISKCDR_DBTABLE;
+
+    $searchText = $this->getSearchText($q,$duration_filter);
+
+    $dbh = $_SESSION['dbh_cdr'];
+    $sql = "SELECT count(*) 
+            FROM " . $ASTERISKCDR_DBTABLE . "
+            " . $searchText;
+
+    $result = $dbh->getAll($sql);
+    if (DB::isError($result)) {
+      $_SESSION['ari_error'] = $result->getMessage();
+      return;
+    }
+    $count = $result[0][0];
+
+    return $count;
+  }
+
+  /*
+   * Gets cdr data
+   *
+   * @param $q
+   *   query text
+   * @param $start
+   *   start record
+   * @param $span
+   *   number of records to return
+   * @return $data
+   *   cdr data to be returned
+   */
+  function getCdrData($q,$duration_filter,$start,$span,$order,$sort) {
+
+    global $ASTERISKCDR_DBTABLE;
+
+    $data = array();
+
+    $searchText = $this->getSearchText($q,$duration_filter);
+
+    $dbh = $_SESSION['dbh_cdr'];
+    $sql = "SELECT *
+            FROM " . $ASTERISKCDR_DBTABLE . " 
+            " . $searchText . "
+            ORDER BY " . $order . " " . $sort . "
+            LIMIT " . $start . "," . $span;
+    $result = $dbh->getAll($sql,DB_FETCHMODE_ASSOC);
+    if (DB::isError($result)) {
+      $_SESSION['ari_error'] = $result->getMessage();
+      return;
+    }
+    $data = $result;
+
+    return $data;
+  }
+
+
+}
+
+
+?>
diff --git a/fs_selfservice/fri/modules/featurecodes.module b/fs_selfservice/fri/modules/featurecodes.module
new file mode 100644 (file)
index 0000000..75d1d5c
--- /dev/null
@@ -0,0 +1,152 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the help page
+ */
+
+/**
+  * Class for help
+  */
+class featurecodes {
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+    $rank = 7;
+    return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+
+    $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=featurecodes&f=display'>" . _("Feature Codes") . "</a></small></small></p><br>";
+
+    return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+
+    global $ARI_HELP_FEATURE_CODES;
+
+    $display = new Display();
+
+    // args
+    $m = getArgument($args,'m');
+    $q = getArgument($args,'q');
+
+    $displayname = $_SESSION['ari_user']['displayname'];
+    $extension = $_SESSION['ari_user']['extension'];
+
+    // build page content
+    $ret .= checkErrorMessage();
+
+       $header_text = _("Feature Codes");
+       if (!$_SESSION['ari_user']['admin_help']) {
+               $header_text .= sprintf(_(" for %s (%s)"), $displayname, $extension);
+       }
+
+    // handset feature code header
+    $handset_feature_codes_header =
+      "<tr>
+         <th class='feature_codes'>
+           " . _("Handset Feature Code") . "
+         </th>
+         <th>
+           " . _("Action") . "
+         </th>
+       </tr>";
+
+    // handset feature code body
+    if (isset($_SESSION['dbh_asterisk'])) {
+
+      $sql = "
+             SELECT keycode, description
+             FROM (
+               SELECT modulename, description, defaultcode keycode
+               FROM featurecodes 
+               WHERE customcode IS NULL 
+               AND enabled = '1'
+               UNION ALL SELECT modulename, description, customcode keycode
+               FROM featurecodes
+               WHERE customcode IS NOT NULL 
+               AND enabled = '1'
+             )c
+             WHERE modulename NOT 
+             IN ( 'core', 'recordings', 'infoservices', 'polycomreassign')
+             ORDER BY modulename, keycode
+             ";
+
+               $results = $_SESSION['dbh_asterisk']->getAll($sql, DB_FETCHMODE_ASSOC);
+               if(DB::IsError($results)) {
+                       $_SESSION['ari_error'] = $results->getMessage();
+               }
+               else {
+                       foreach ($results as $item ) {
+                               $handset_feature_codes_body .= 
+                                       "<tr>
+                                       <td class='feature_codes'>
+                                       " . $item['keycode'] . "
+                                       </td>
+                                       <td>
+                                       " . $item['description'] . "
+                                       </td>
+                                       </tr>";
+                       }
+               }
+    }
+    else {
+
+      // handset feature code body
+      foreach($ARI_HELP_FEATURE_CODES as $key => $feature_code) {
+
+        $handset_feature_codes_body .= 
+          "<tr>
+             <td class='feature_codes'>
+               " . $key . "
+             </td>
+             <td>
+               " . $feature_code . "
+             </td>
+           </tr>";
+      }
+    }
+
+    // build page content
+    $ret .= checkErrorMessage();
+
+    $ret .= $display->displayHeaderText($header_text);
+    $ret .= $display->displayLine();
+
+    // table 
+    $ret .= "
+      <table class='help'>
+        " . $handset_feature_codes_header . "
+        " . $handset_feature_codes_body . "
+      </table>";
+
+    return $ret;
+  }
+
+}
+
+?>
diff --git a/fs_selfservice/fri/modules/followme.module b/fs_selfservice/fri/modules/followme.module
new file mode 100644 (file)
index 0000000..85a1f37
--- /dev/null
@@ -0,0 +1,678 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the call monitor recordings
+ */
+
+/**
+  * Class for Followme
+  */
+class followme {
+
+  var $protocol_table;
+  var $protocol_config_files;
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+       $rank = 5;
+       return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+       global $ARI_ADMIN_USERNAME;
+       
+       $exten = $_SESSION['ari_user']['extension'];
+       if ($exten!=$ARI_ADMIN_USERNAME) {
+               $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=followme&f=display'>" . _("Follow Me") . "</a></small></small></p>";
+       }
+
+       return $ret;
+  }
+
+  /*
+   * Acts on the user settings
+   *
+   * @param $args
+   *   Common arguments
+   * @param $a
+   *   action
+   */
+  function action($args) {
+
+       global $STANDALONE;
+       global $ARI_ADMIN_USERNAME;
+       global $SETTINGS_ALLOW_VMX_SETTINGS;
+
+       // args
+       $m = getArgument($args,'m');
+       $a = getArgument($args,'a');
+
+       $lang_code = getArgument($args,'lang_code');
+
+       $follow_me_prering_time                 = getArgument($args,'follow_me_prering_time');
+       $follow_me_listring_time                = getArgument($args,'follow_me_listring_time');
+       $follow_me_list                                 = getArgument($args,'follow_me_list');
+       $follow_me_confirm                              = getArgument($args,'follow_me_confirm');
+       $follow_me_ddial                                = getArgument($args,'follow_me_ddial');
+       $follow_me_disabled                             = getArgument($args,'follow_me_disabled');
+
+       $language = new Language();
+
+       // Lets see if we can make heads or tails of this code?!?
+       
+       // The action is 'update
+       if ($a=='update') {
+
+               // Get the extension and make sure we are not in 
+               // admin mode
+               $exten = $_SESSION['ari_user']['extension'];
+               if ($exten!=$ARI_ADMIN_USERNAME) {
+       
+       
+                       // Make sure Follow-Me setup has not been deleted for this user since the last refresh
+                       $follow_me_disabled_delayed = $_COOKIE['ari_follow_me_disabled'];
+                       if (! $_COOKIE['ari_follow_me_disabled']) {
+                       
+                               $follow_me_disabled = ($this->getFollowMeListRingTime($exten) > 0)?0:1;
+                               
+                               if ($follow_me_disabled) {
+                                       
+                                       setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
+                                       $follow_me_disabled_delayed = $follow_me_disabled;
+                                       $_SESSION['ari_error'] = 
+                                       _("Your Follow-Me has been disabled, REFRESH your browser to remove this message") . "<br>" .
+                                       sprintf(_("Check with your Telephone System Administrator if you think there is a problem"));
+                               }
+                       }
+       
+       
+       
+                       if (! $follow_me_disabled_delayed) {
+       
+                               // assume no errors, don't update SQL if errors occured
+                               $follow_me_update_succeeded=1;
+                               
+                               // update follow me pre-ring time
+                               if (!$STANDALONE['use']) {
+                               
+                                       $stripped_follow_me_prering_time = preg_replace('/-|\s/','',$follow_me_prering_time);
+                                       if (!is_numeric($stripped_follow_me_prering_time)) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Follow-Me pre-ring time not changed") . "<br>" .
+                                               sprintf(_("Number %s must be an interger number of seconds"),$follow_me_prering_time);
+                                               $follow_me_update_succeeded=0;
+                                       }
+                                       else {
+                                               
+                                               // set database
+                                               $this->setFollowMePreRingTime($exten,$stripped_follow_me_prering_time);
+                                               
+                                               // store cookie
+                                               $stripped = preg_replace('/-|\s/','',$_COOKIE['ari_follow_me_prering_time']);
+                                               if ($follow_me_prering_time && $stripped!=$stripped_follow_me_prering_time) {
+                                                       setcookie("ari_follow_me_prering_time", $follow_me_prering_time, time()+365*24*60*60);
+                                               }
+                                       }
+                               }
+         
+                               // update follow me list ring time
+                               if (!$STANDALONE['use']) {
+                               
+                                       $stripped_follow_me_listring_time = preg_replace('/-|\s/','',$follow_me_listring_time);
+                                       if (!is_numeric($stripped_follow_me_listring_time)) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Follow-Me list ring time not changed") . "<br>" .
+                                               sprintf(_("Number %s must be an interger number of seconds"),$follow_me_listring_time);
+                                               $follow_me_update_succeeded=0;
+                                       }
+                                       else {
+                                       
+                                               // set database
+                                               $this->setFollowMeListRingTime($exten,$stripped_follow_me_listring_time);
+                                               
+                                               // store cookie
+                                               $stripped = preg_replace('/-|\s/','',$_COOKIE['ari_follow_me_listring_time']);
+                                               if ($follow_me_listring_time && $stripped!=$stripped_follow_me_listring_time) {
+                                                       setcookie("ari_follow_me_listring_time", $follow_me_listring_time, time()+365*24*60*60);
+                                               }
+                                       }
+                               }
+         
+                               // update follow me list 
+                               if (!$STANDALONE['use']) {
+                               
+                                       $grplist = explode("\n", $follow_me_list);
+                                       
+                                       if (!$grplist) {
+                                               $grplist = null;
+                                       }
+                                       
+                                       foreach (array_keys($grplist) as $key) {
+                                               //trim it
+                                               $grplist[$key] = trim($grplist[$key]);
+                                               
+                                               // Lookup the extension and append hash if not a user, and remove invalid chars
+                                               $grplist[$key] = $this->lookupSetExtensionFormat($grplist[$key]);
+                                               
+                                               // remove blanks
+                                               if ($grplist[$key] == "") unset($grplist[$key]);
+                                       }
+                                       
+                                       // check for duplicates, and re-sequence
+                                       $grplist = array_values(array_unique($grplist));
+                                       
+                                       $stripped_follow_me_list = implode("-",$grplist);
+                                       
+                                       if ($stripped_follow_me_list == "") {
+                                               $_SESSION['ari_error'] = 
+                                               _("Follow-Me list must contain at least one valid number") . "<br>" .
+                                               sprintf(_("The following: %s is not valid"),$follow_me_list);
+                                               $follow_me_update_succeeded=0;
+                                       }
+                                       else {
+                                       
+                                               // set database
+                                               $this->setFollowMeList($exten,$stripped_follow_me_list);
+                                               
+                                               // store cookie
+                                               $stripped = preg_replace('/|\(|\)|\s/','',$_COOKIE['ari_follow_me_list']);
+                                               if ($follow_me_list && $stripped!=$stripped_follow_me_list) {
+                                                       setcookie("ari_follow_me_list", $follow_me_list, time()+365*24*60*60);
+                                               }
+                                       }
+                               }
+         
+                               // update follow me confirm
+                               if (!$STANDALONE['use']) {
+                               
+                                       // set database
+                                       $this->setFollowMeConfirm($exten,$follow_me_confirm);
+                                       $this->setFollowMeDDial($exten,$follow_me_ddial);
+                                       
+                                       // store cookie
+                                       setcookie("ari_follow_me_confirm", $follow_me_confirm, time()+365*24*60*60);
+                                       setcookie("ari_follow_me_ddial", $follow_me_ddial, time()+365*24*60*60);
+                               }
+                               
+                               //If no errors than update the SQL table to keep in sync
+                               if ($follow_me_update_succeeded) {
+                                       $this->setFollowMeMySQL($exten, $follow_me_prering_time, $follow_me_listring_time, $follow_me_list, $follow_me_confirm);
+                               }
+       
+                       } //if !follow_me_disabled
+               }
+       }
+
+       // redirect to see updated page
+       $ret .= "
+         <head>
+               <script>
+               <!--
+                 window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
+               // -->
+               </script>
+       </head>";
+  
+       return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+       function display($args) {
+               
+               global $STANDALONE;
+               global $ARI_ADMIN_USERNAME;
+               global $SETTINGS_PRERING_LOW;
+               global $SETTINGS_PRERING_HIGH;
+               global $SETTINGS_LISTRING_LOW;
+               global $SETTINGS_LISTRING_HIGH;
+               
+               global $SETTINGS_FOLLOW_ME_LIST_MAX;
+               
+               global $loaded_modules;
+               
+               // args
+               $m              = getArgument($args,'m');
+               $q              = getArgument($args,'q');
+               $start  = getArgument($args,'start');
+               $span   = getArgument($args,'span');
+               
+               $displayname    = $_SESSION['ari_user']['displayname'];
+               $exten                  = $_SESSION['ari_user']['extension'];
+               
+               $language = new Language();
+               $display = new DisplaySearch();
+               
+               // build controls
+               if ($exten!=$ARI_ADMIN_USERNAME) {
+                       
+                       // call forward settings
+                       if (!$STANDALONE['use']) {
+                               
+                               $follow_me_prering_time         = $this->getFollowMePreRingTime($exten);
+                               $follow_me_listring_time        = $this->getFollowMeListRingTime($exten);
+                               $follow_me_list                         =  explode("-", $this->getFollowMeList($exten) );
+                               $follow_me_confirm                      = $this->getFollowMeConfirm($exten);
+                               $follow_me_ddial                        = $this->getFollowMeDDial($exten);
+                               
+                               $FOLLOW_ME_LIST_MAX = (count($follow_me_list) > $SETTINGS_FOLLOW_ME_LIST_MAX) ? count($follow_me_list):$SETTINGS_FOLLOW_ME_LIST_MAX;
+                               
+                               //TODO: Set this better than this?
+                               $follow_me_disabled = ($follow_me_listring_time > 0)?0:1;
+                               setcookie("ari_follow_me_disabled", $follow_me_disabled, time()+365*24*60*60);
+                               
+                               $followme_text.= "<table class='settings'>";
+                               
+                               if (!$follow_me_disabled) {
+                                       // $followme_text .= "<tr><td><h3><br>" . _("Follow Me") . "</h3></td></tr>";
+                                       $followme_text .= "<tr><td>&nbsp;</td></tr>";   // Blank Line
+                                       
+                                       $followme_text .= "<tr><td><a href='#' class='info'>" . _("Enable") . "<span>";
+                                       $followme_text .= _(    "Dial-by-name Directory, IVR, and internal 
+                                                                                                       calls will ring the numbers in the FollowMe 
+                                                                                                       List. Any FreePBX routes that directly 
+                                                                                                       reference a FollowMe are unaffected by this 
+                                                                                                       enable/disable setting.");
+                                       $followme_text .= "<br></span></a></td>";
+                                       
+                                       $followme_text .= "<td><input " . $follow_me_ddial . " type=checkbox name='follow_me_ddial' value='checked'></td></tr>";
+
+                                       $followme_text .= "<tr><td>&nbsp;</td></tr>";   // Blank Line                                                                           
+                                       $followme_text .= "<tr><td valign='top'><a href='#' class='info'>" . _("Follow Me List:");
+                                       $followme_text .= "<span>" . sprintf(_("Extensions and outside numbers to ring next.")) ."<br/><br/>";
+                                       $followme_text .= sprintf(_("Include %s to keep it ringing."),"<strong>".$exten."</strong>") . "<br></span></a></td>";
+                                       $followme_text .= "<td><textarea " . $follow_me_list_options . " id='follow_me_list' name='follow_me_list' type='text' cols='20' rows='".$FOLLOW_ME_LIST_MAX."' value='' onKeyUp='rowCounter(this.form.follow_me_list, ".$FOLLOW_ME_LIST_MAX.");' onKeyDown='rowCounter(this.form.follow_me_list, ".$FOLLOW_ME_LIST_MAX.");'>".implode("\n",$follow_me_list)."</textarea>";
+                                       $followme_text .= "</td></tr>";
+                                       
+                                       $followme_text .= "<tr><td>&nbsp;</td></tr>";   // Blank Line                                                                                                                   
+                                       $followme_text .= "<tr><td><a href='#' class='info'>";
+                                       $followme_text .= sprintf(_("Ring %s First For:"), $exten);
+                                       $followme_text .= "<span>" . sprintf( _("Time to ring extension %s before ringing the %s Follow Me List %s"), "<strong>".$exten."</strong>","<strong>","</strong>");
+                                       $followme_text .= "<br></span></a></td><td>";
+                                       
+                                       $followme_text .= "<select " . $follow_me_prering_time_text_box_options . " name='follow_me_prering_time'/>";                           
+                                       $default_prering = $follow_me_prering_time;
+                                       for ($i=$SETTINGS_PRERING_LOW; $i <= $SETTINGS_PRERING_HIGH; $i++) {
+                                               $followme_text .=  '<option value="'.$i.'" '.($i == $default_prering ? 'SELECTED' : '').'>'.$i.'</option>';
+                                       }
+                                       $followme_text .= "</select>";
+                               
+                                       $followme_text .= "<small>" . _("seconds") . "</small>";
+                                       $followme_text .= "</td></tr>"; 
+                                       
+                                       $followme_text .= "<tr><td><a href='#' class='info'>" . _("Ring Followme List for:") . "<span>" . _("Time to ring the Follow Me List.") . "<br></span></a></td>";
+                                       $followme_text .= "<td>";
+                                       
+                                       $followme_text .= "<select " . $follow_me_listring_time_text_box_options . " name='follow_me_listring_time'/>";
+                                       $default_listring = $follow_me_listring_time;
+                                       for ($i=$SETTINGS_LISTRING_LOW; $i <= $SETTINGS_LISTRING_HIGH; $i++) {
+                                               $followme_text .=  '<option value="'.$i.'" '.($i == $default_listring ? 'SELECTED' : '').'>'.$i.'</option>';
+                                       }
+                                       $followme_text .= "</select>";
+                               
+                                       $followme_text .= "<small>" . _("seconds") . "</small></td></tr>";
+                                       
+                                       
+                                       $followme_text .= "<tr><td>&nbsp;</td></tr>";   // Blank Line   
+                                       
+                                       $followme_text .= "<tr><td><a href='#' class='info'>" . _("Use Confirmation:") . "<span>". _("Outside lines that are part of the Follow Me List will be called and offered a menu:<br/><br/> \"You have an incoming call. Press 1 to accept or 2 to decline.\"<br/><br/> This keeps calls from ending up in external voicemail. Make sure that the List Ring Time is long enough to allow for you to hear and react to this message.");
+                                       $followme_text .= "<br></span></a></td><td>";
+                                       $followme_text .= "<input " . $follow_me_confirm . " type=checkbox name='follow_me_confirm' value='checked'>";
+                                       $followme_text .= "<small>" . _("Enable") . "</small></td></tr>";
+                                       $followme_text .= "<tr><td>&nbsp;</td></tr>";   // Blank Line                                                                           
+                                       $followme_text .= "</table>";
+                               }
+                       }
+                       
+               }
+                               
+               // build page content
+               $ret .= checkErrorMessage();
+               
+               if ($_SESSION['ari_user']['admin_settings']) {
+                       $headerText = _("Followme Settings");
+               } else {
+                       $headerText = sprintf(_("Followme Settings for %s (%s)"),$displayname,$exten);
+               }
+               
+               $ret .= $display->displayHeaderText($headerText);
+               $ret .= $display->displayLine();
+               
+               $ret .= 
+               "\n<SCRIPT LANGUAGE='JavaScript'>
+               <!-- Begin
+               function rowCounter(field, maxlimit) {
+                       temp = field.value.split('\u000A',maxlimit+1)
+                       field.value = temp.join('\u000A')
+                       if (temp.length == maxlimit+1) {
+                               field.value = field.value.substring(0, field.value.length-1)
+                       }
+               }
+               // End -->
+               </script>\n";
+               
+               $ret .= 
+               "<form class='settings' name='ari_settings' action='' method='GET'>
+               <input type=hidden name=m value=" . $m . ">
+               <input type=hidden name=f value='action'>
+               <input type=hidden name=a value='update'>
+               " . $followme_text . "
+               <br>
+               <input name='submit' type='submit' value='" . _("Update") . "'>
+               </form>";
+               
+               return $ret;
+       }
+
+
+  /*
+   * Sets Follow Me Pre-Ring Time
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_prering_time
+   *   Pre-Ring Time to ring
+   */
+  function setFollowMePreRingTime($exten,$follow_me_prering_time) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = $follow_me_prering_time;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/prering $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets Follow Me Pre-Ring Time if set
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $number
+   *   follow me pre-ring time returned if set
+   */
+  function getFollowMePreRingTime($exten) {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/prering\r\n\r\n");
+       if (is_numeric($response)) {
+         $number = $response;
+       }
+
+       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_prering_time']);
+       if ($stripped==$number) {
+         $number = $_COOKIE['ari_follow_me_prering_time'];
+       }
+
+       return $number;
+  }
+
+  /*
+   * Sets Follow Me List Ring Time
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_listring_time
+   *   List Ring Time to ring
+   */
+  function setFollowMeListRingTime($exten,$follow_me_listring_time) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = $follow_me_listring_time;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grptime $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets Follow Me List-Ring Time if set
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $number
+   *   follow me list-ring time returned if set
+   */
+  function getFollowMeListRingTime($exten) {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grptime\r\n\r\n");
+       if (is_numeric($response)) {
+         $number = $response;
+       }
+
+       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_follow_me_listring_time']);
+       if ($stripped==$number) {
+         $number = $_COOKIE['ari_follow_me_listring_time'];
+       }
+
+       return $number;
+  }
+
+  /*
+   * Sets Follow Me List
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_list
+   *   Follow Me List
+   */
+  function setFollowMeList($exten,$follow_me_list) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = $follow_me_list;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grplist $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets Follow Me List if set
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $data
+   *   follow me list if set
+   */
+  function getFollowMeList($exten) {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grplist\r\n\r\n");
+
+       //TODO: really need to check for a bogus response, see how other side does it
+       //
+       return preg_replace("/[^0-9*\-]/", "", $response);
+  }
+
+  /*
+   * Sets Follow Confirmation Setting
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_cofirm
+   *   Follow Me Confirm Setting
+   */
+  function setFollowMeConfirm($exten,$follow_me_confirm) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = ($follow_me_confirm)?'ENABLED':'DISABLED';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/grpconf $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets Follow Me Confirmation Setting
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $data
+   *   follow me confirm setting
+   */
+  function getFollowMeConfirm($exten) {
+
+       global $asterisk_manager_interface;
+
+       $number = '';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/grpconf\r\n\r\n");
+
+       if (preg_match("/ENABLED/",$response)) {
+               $response='checked';
+       } 
+       else {
+               $response='';
+       }
+
+       //TODO: really need to check for a bogus response, see how other side does it
+       //
+       return $response;
+
+  }
+
+  /*
+   * Sets Follow Ddial Setting
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_ddial
+   *   Follow Me Ddial Setting
+   */
+  function setFollowMeDDial($exten,$follow_me_ddial) {
+
+       global $asterisk_manager_interface;
+
+       $value_opt = ($follow_me_ddial)?'DIRECT':'EXTENSION';
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/followme/ddial $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets Follow Me Ddial Setting
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $data
+   *   follow me ddial setting
+   */
+  function getFollowMeDDial($exten) {
+
+       global $asterisk_manager_interface;
+
+       $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/followme/ddial\r\n\r\n");
+
+       if (preg_match("/EXTENSION/",$response)) {
+               $response='';
+       } 
+       else {
+               $response='checked';
+       }
+
+       //TODO: really need to check for a bogus response, see how other side does it
+       //
+       return $response;
+
+  }
+
+
+
+
+
+  /*
+   * Gets FreePBX Version
+   */
+  function getFreePBXVersion() {
+
+       if (isset($_SESSION['dbh_asterisk'])) {
+         $sql = "SELECT * FROM admin WHERE variable = 'version'";
+         $results = $_SESSION['dbh_asterisk']->getAll($sql);
+         if(DB::IsError($results)) {
+               $_SESSION['ari_error'] = $results->getMessage();
+         }
+
+         return $results[0][1];
+       }
+  }
+
+  /*
+   * Sets Follow-Me Settings in FreePBX MySQL Database
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $follow_me_prering_time
+   *   Pre-Ring Time to ring
+   * @param $follow_me_listring_time
+   *   List Ring Time to ring
+   * @param $follow_me_list
+   *   Follow Me List
+   * @param $follow_me_list
+   *   Follow Me Confirm Setting
+   *
+   */
+  function setFollowMeMySQL($exten, $follow_me_prering_time, $follow_me_listring_time, $follow_me_list, $follow_me_confirm) {
+
+       if (isset($_SESSION['dbh_asterisk'])) {
+
+         //format for SQL database
+         $follow_me_confirm = ($follow_me_confirm)?'CHECKED':'';
+
+         $sql = "UPDATE findmefollow SET grptime = '" . $follow_me_listring_time . "', grplist = '".
+                  str_replace("'", "''", trim($follow_me_list)) . "', pre_ring = '" . $follow_me_prering_time .
+                  "', needsconf = '" . $follow_me_confirm . "' WHERE grpnum = $exten LIMIT 1";
+         $results = $_SESSION['dbh_asterisk']->query($sql);
+
+         if(DB::IsError($results)) {
+               $_SESSION['ari_error'] = $results->getMessage();
+         }
+
+         return 1;
+       }
+  }
+
+  function lookupSetExtensionFormat($exten) {
+
+       if (trim($exten) == "") return $exten;
+
+       $exten = preg_replace("/[^0-9*]/", "", $exten);
+
+       $sql = "SELECT extension FROM users WHERE extension = '".$exten."'";
+       $asa = $_SESSION['dbh_asterisk']->getrow($sql, DB_FETCHMODE_ASSOC);
+       if (!is_array($asa)) { 
+         return $exten.'#';
+       } else {
+         return $exten;
+       }
+  }
+
+
+} // class
+
+?>
diff --git a/fs_selfservice/fri/modules/phonefeatures.module b/fs_selfservice/fri/modules/phonefeatures.module
new file mode 100644 (file)
index 0000000..89dc903
--- /dev/null
@@ -0,0 +1,342 @@
+<?php
+//*****************************************************************************
+class PhoneFeatures {
+//*****************************************************************************
+  function rank() {
+
+    $rank = 4;
+    return $rank;
+  }
+
+//*****************************************************************************
+  function init() {
+  }
+//*****************************************************************************
+  function navMenu($args) {
+
+    global $ARI_NO_LOGIN;
+    global $SETTINGS_ALLOW_PHONE_SETTINGS;
+    global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
+
+       // If we're not allowing call forwarding AND PHONE SETTINGS get out of here
+       if (!$SETTINGS_ALLOW_PHONE_SETTINGS && !$SETTINGS_ALLOW_CALLFORWARD_SETTINGS) return "";
+
+      $ret .= "
+        <p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=PhoneFeatures&f=display'>" . _("Phone Features") . "</a></small></small></p>";
+
+    return $ret;
+  }
+//*****************************************************************************
+  function action($args) {
+
+    global $ARI_ADMIN_USERNAME;
+    global $SETTINGS_ALLOW_PHONE_SETTINGS;
+    global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
+
+    // args
+    $m = getArgument($args,'m');
+    $a = getArgument($args,'a');
+    $lang_code = getArgument( $args,'lang_code');
+       $exten = $_SESSION['ari_user']['extension'];
+
+       if ($a=='update') {
+
+               if ($SETTINGS_ALLOW_PHONE_SETTINGS) {
+                       if ($exten!=$ARI_ADMIN_USERNAME) {
+                               $this->storePhoneSetting( $args, $exten, 'call_waiting', 'CW', 'ENABLED');
+                               $this->storePhoneSetting( $args, $exten, 'do_not_disturb', 'DND', 'YES');
+                       }
+               }
+               
+               if ($SETTINGS_ALLOW_CALLFORWARD_SETTINGS) {
+                       if ($exten!=$ARI_ADMIN_USERNAME) {
+                               $this->storeCallForwardNumber( $args, $exten, 'call_forward', 'CF');
+                               $this->storeCallForwardNumber( $args, $exten, 'call_forward_busy', 'CFB');
+                               $this->storeCallForwardNumber( $args, $exten, 'call_forward_unavailable', 'CFU');
+                       }
+               }
+       }
+
+    // redirect to see updated page
+       $ret .= "
+         <head>
+               <script>
+               <!--
+                 window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
+               // -->
+               </script>
+       </head>";
+  
+    return $ret;
+  }
+//*****************************************************************************
+function display($args) {
+       
+       global $STANDALONE;
+       global $ARI_ADMIN_USERNAME;
+       global $SETTINGS_ALLOW_PHONE_SETTINGS;
+    global $SETTINGS_ALLOW_CALLFORWARD_SETTINGS;
+
+    // args
+    $m = getArgument($args,'m');
+    $a = getArgument($args,'a');
+    $lang_code = getArgument( $args,'lang_code');
+       $exten = $_SESSION['ari_user']['extension'];
+       
+       $displayname = $_SESSION['ari_user']['displayname'];
+       $exten = $_SESSION['ari_user']['extension'];
+
+       $display = new DisplaySearch();
+
+       // build controls
+       if ($exten!=$ARI_ADMIN_USERNAME) {
+               
+               if ($SETTINGS_ALLOW_PHONE_SETTINGS) {
+                       $dnd_cw_text = "<table class='settings'>";
+                       $dnd_cw_text.= "<tr><td><h3>" . _("Phone Features") . "</h3></td></tr>";
+                       
+                       $dnd_cw_text.=  $this->displayPhoneControls( $exten, 'call_waiting', 'CW', "Call Waiting");
+                       $dnd_cw_text.=  $this->displayPhoneControls( $exten, 'do_not_disturb', 'DND', "Do Not Disturb");
+                       
+                       $dnd_cw_text .= "</table>";
+               }
+               
+               if ($SETTINGS_ALLOW_CALLFORWARD_SETTINGS) {
+               
+                       $set_call_forward_text .= "<SCRIPT LANGUAGE='JavaScript'>
+                                                                               <!-- Begin
+                                                                               function rowCounter(field, maxlimit) {
+                                                                                       temp = field.value.split('\u000A',maxlimit+1)
+                                                                                       field.value = temp.join('\u000A')
+                                                                                       if (temp.length == maxlimit+1) {
+                                                                                               field.value = field.value.substring(0, field.value.length-1)
+                                                                                       }
+                                                                               }
+                                                                               
+                                                                               function disable_fields() {
+                                                                               
+                                                                                       if (document.ari_settings.call_forward_enable.checked) {
+                                                                                               document.ari_settings.call_forward_number.style.backgroundColor = '#FFF';
+                                                                                               document.ari_settings.call_forward_number.disabled = false;
+                                                                                       }
+                                                                                       else {
+                                                                                               document.ari_settings.call_forward_number.style.backgroundColor = '#DDD';
+                                                                                               document.ari_settings.call_forward_number.disabled = true;
+                                                                                       }
+                                                                                       
+                                                                                       if (document.ari_settings.call_forward_busy_enable.checked) {
+                                                                                               document.ari_settings.call_forward_busy_number.style.backgroundColor = '#FFF';
+                                                                                               document.ari_settings.call_forward_busy_number.disabled = false;
+                                                                                       }
+                                                                                       else {
+                                                                                               document.ari_settings.call_forward_busy_number.style.backgroundColor = '#DDD';
+                                                                                               document.ari_settings.call_forward_busy_number.disabled = true;
+                                                                                       }
+                                                                                       
+                                                                                       if (document.ari_settings.call_forward_unavailable_enable.checked) {
+                                                                                               document.ari_settings.call_forward_unavailable_number.style.backgroundColor = '#FFF';
+                                                                                               document.ari_settings.call_forward_unavailable_number.disabled = false;
+                                                                                       }
+                                                                                       else {
+                                                                                               document.ari_settings.call_forward_unavailable_number.style.backgroundColor = '#DDD';
+                                                                                               document.ari_settings.call_forward_unavailable_number.disabled = true;
+                                                                                       }
+                                                                               }
+                                                                               // End -->
+                                                                               </script>";
+               
+                       $set_call_forward_text.= "<table class='settings'>";
+                       $set_call_forward_text.= "<tr><td><h3>" . _("Call Forwarding") . "</h3></td></tr>";
+                       
+                       $set_call_forward_text.=  $this->displayCallForwardControls( $exten, 'call_forward', 'CF', "Unconditional:");
+                       $set_call_forward_text.=  $this->displayCallForwardControls( $exten, 'call_forward_unavailable', 'CFU', "Unavailable:");
+                       $set_call_forward_text.=  $this->displayCallForwardControls( $exten, 'call_forward_busy', 'CFB', "Busy:");
+                       
+                       $set_call_forward_text .= "</table>";           
+               }
+       }
+               
+       // build page content
+       $ret .= checkErrorMessage();
+       
+       if ($_SESSION['ari_user']['admin_settings']) {
+               $headerText = _("Phone Features");
+       } else {
+               $headerText = sprintf(_("Phone Features for %s (%s)"),$displayname,$exten);
+       }
+       
+       $ret .= $display->displayHeaderText($headerText);
+       $ret .= $display->displayLine();
+       $ret .= "
+       <form class='settings' name='ari_settings' action='' method='GET'>
+       <input type=hidden name=m value=" . $m . ">
+       <input type=hidden name=f value='action'>
+       <input type=hidden name=a value='update'>
+       <br>
+       " . $dnd_cw_text . "
+       <br>
+       " . $set_call_forward_text . "
+       <br>
+       <input name='submit' type='submit' value='" . _("Update") . "'>
+       </form>";
+       
+return $ret;
+}
+//*****************************************************************************
+  function setPhoneSetting( $databaseCallFwdType, $exten, $state_value) {
+
+    global $asterisk_manager_interface;
+
+       $type_opt = ($state_value != "") ? "put":"del";
+
+    $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt $databaseCallFwdType $exten $state_value\r\n\r\n");
+  }
+
+//*****************************************************************************
+       function getPhoneSetting($exten, $databaseCallFwdType) {
+               
+               global $asterisk_manager_interface;
+               $number = '';
+               
+               $result = false;
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get $databaseCallFwdType $exten\r\n\r\n");
+               if (stristr($response, 'ENABLED')) {
+                       $result = true;
+               } 
+               elseif (stristr($response, 'YES')) {
+                       $result = true;
+               }
+
+               return $result;
+       }
+//*****************************************************************************
+       function storePhoneSetting( $args, $exten, $settingType, $databaseCallFwdType, $state_value)
+       {
+               $setting_enable  = getArgument( $args, $settingType . '_enable');
+               
+               $this->setPhoneSetting( $databaseCallFwdType, $exten, ($setting_enable == 'checked')?$state_value:"");
+       }
+
+//*****************************************************************************
+       function displayPhoneControls( $exten, $callFwdType, $databaseCallFwdType, $title)
+       {
+
+               $phone_setting_enable = ($this->getPhoneSetting($exten, $databaseCallFwdType)) ? 'checked':'';
+
+               $ret = "\n<tr>";
+               $ret.= "<td>";
+               $ret.= "<label><input " . $phone_setting_enable . " type=checkbox name='" . $callFwdType . "_enable' value='checked' >";
+               $ret.= "<small>" . _($title) . "</small></label>";
+               $ret.= "</td>";
+               $ret.= "</tr>\n";
+               
+               return $ret;
+       }
+//*****************************************************************************
+  /*
+   * Sets Asterisk call forward setting
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $state
+   *   Call forward enable or disable
+   * @param $call_forward_number
+   *   Call forward number
+   * @param $variable_opt
+   *   Call forward type (CF, CFU, CFB)
+   */
+  function setCallForward($exten,$state,$call_forward_number, $variable_opt = "CF") {
+
+    global $asterisk_manager_interface;
+
+    if ($state) {
+      $type_opt = "put";
+      $value_opt = $call_forward_number;
+    }
+    else {
+      $type_opt = "del";
+    }
+
+    $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt $variable_opt $exten $value_opt\r\n\r\n");
+  }
+
+  /*
+   * Gets call forward number if set
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @return $number
+   *   call forward number returned if set
+   * @param $variable_opt
+   *   Call forward type (CF, CFU, CFB)
+   */
+       function getCallForwardNumber($exten, $variable_opt = "CF") {
+               
+               global $asterisk_manager_interface;
+               
+               $number = '';
+               
+               $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get $variable_opt $exten\r\n\r\n");
+               if (is_numeric($response)) {
+                       $number = $response;
+               }
+               
+               $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_call_forward_number']);
+               if ($stripped==$number) {
+                       $number = $_COOKIE['ari_call_forward_number'];
+               }
+               
+               return $number;
+       }
+
+
+       function storeCallForwardNumber( $args, $exten, $callFwdType, $databaseCallFwdType)
+       {
+               $call_forward_enable  = getArgument($args, $callFwdType . '_enable');
+               $call_forward_number  = getArgument($args, $callFwdType . '_number');
+       
+               $stripped_call_forward_number = preg_replace('/-|\(|\)|\s/','',$call_forward_number);
+               
+               if ($call_forward_enable && !is_numeric($stripped_call_forward_number)) {
+                       $_SESSION['ari_error'] = _("Call forward number not changed") . "<br>" .
+                       sprintf(_("Number %s must contain dial numbers (characters like '(', '-', and ')' are ok)"), $call_forward_number);
+               }
+               else {
+                       $this->setCallForward( $exten, $call_forward_enable, $stripped_call_forward_number, $databaseCallFwdType);
+                       
+                       // store cookie
+                       $stripped = preg_replace('/-|\(|\)|\s/','',$_COOKIE['ari_' . $callFwdType]);
+                       if ($call_forward_number && $stripped!=$stripped_call_forward_number) {
+                               setcookie('ari_' . $callFwdType, $call_forward_number, time()+365*24*60*60);
+                       }
+               }               
+       }
+
+       function displayCallForwardControls( $exten, $callFwdType, $databaseCallFwdType, $title)
+       {
+               $call_forward_number = $this->getCallForwardNumber($exten, $databaseCallFwdType);
+               
+               // If we have a value, we want the item checked
+               if ($call_forward_number) { 
+                       $call_forward_enable = 'checked';
+               }
+               else {
+                       $call_forward_number = $_COOKIE['ari_' . $callFwdType ];
+                       $call_forward_text_box_options = "disabled style='background: #DDD;'";
+               }
+
+               $ret = "\n<tr>";
+               $ret.= "<td>" . _($title) . "</td>";
+               $ret.= "<td>";
+               $ret.= "<input " . $call_forward_text_box_options . " name='" . $callFwdType . "_number' type='text' size=24 value='" . $call_forward_number . "'>";
+               $ret.= "</td>";
+               $ret.= "<td>";
+               $ret.= "<input " . $call_forward_enable . " type=checkbox name='" . $callFwdType . "_enable' value='checked' OnClick=\"disable_fields(); return true;\">";
+               $ret.= "<small>" . _("Enable") . "</small>";
+               $ret.= "</td>";
+               $ret.= "</tr>\n";
+               
+               return $ret;
+       }
+} // class
+?>
diff --git a/fs_selfservice/fri/modules/settings.module b/fs_selfservice/fri/modules/settings.module
new file mode 100644 (file)
index 0000000..314ce40
--- /dev/null
@@ -0,0 +1,813 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the call monitor recordings
+ */
+
+/**
+  * Class for settings
+  */
+class Settings {
+
+  var $protocol_table;
+  var $protocol_config_files;
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+    $rank = 9;
+    return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+
+    // determine what protocol user is using
+    global $ASTERISK_PROTOCOLS;
+
+    foreach ($ASTERISK_PROTOCOLS as $protocol => $value) {
+      $data = $this->getProtocolRecordSettings($value['table'],$_SESSION['ari_user']['extension']);
+      if (count($data)) {
+        $this->protocol_table = $value['table'];  
+        $this->protocol_config_files = $value['config_files'];  
+        break;
+      }  
+    }
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+
+       $ret = "";
+       $exten = $_SESSION['ari_user']['extension'];
+       
+       // and we are not logged in as admin
+       if ($exten!=$ARI_ADMIN_USERNAME) {
+               $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Settings&f=display'>" . _("Settings") . "</a></small></small></p><br>";
+       }
+
+    return $ret;
+  }
+
+  /*
+   * Acts on the user settings
+   *
+   * @param $args
+   *   Common arguments
+   * @param $a
+   *   action
+   */
+  function action($args) {
+
+    global $ARI_ADMIN_USERNAME;
+    global $ASTERISK_VOICEMAIL_CONF;
+    global $SETTINGS_ALLOW_VOICEMAIL_SETTINGS;
+    global $SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET;
+    global $SETTINGS_VOICEMAIL_PASSWORD_LENGTH;
+    global $SETTINGS_VOICEMAIL_PASSWORD_EXACT;
+    global $SETTINGS_ALLOW_CALL_RECORDING_SET;
+
+    // args
+    $m = getArgument($args,'m');
+    $a = getArgument($args,'a');
+
+    $voicemail_password                = getArgument($args,'voicemail_password');
+    $voicemail_password_confirm = getArgument($args,'voicemail_password_confirm');
+    $voicemail_email_address   = getArgument($args,'voicemail_email_address');
+    $voicemail_pager_address   = getArgument($args,'voicemail_pager_address');
+    $voicemail_email_enable    = getArgument($args,'voicemail_email_enable');
+    $voicemail_audio_format    = getArgument($args,'voicemail_audio_format');
+    $record_in                                         = getArgument($args,'record_in');
+    $record_out                                = getArgument($args,'record_out');
+    
+    if (isset($_SESSION['ari_user']['voicemail_email'])) {
+      foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
+        $var = "voicemail_email_$key"; 
+        $$var = getArgument($args,$var);
+      }
+    }
+
+    if ($a=='update') {
+
+               $exten = $_SESSION['ari_user']['extension'];
+               if ($exten!=$ARI_ADMIN_USERNAME) {
+                       
+                       // Make sure Follow-Me setup has not been deleted for this user since the last refresh
+                       $follow_me_disabled_delayed = $_COOKIE['ari_follow_me_disabled'];
+                       
+                       // voicemail settings
+                       if ($SETTINGS_ALLOW_VOICEMAIL_SETTINGS && $_SESSION['ari_user']['voicemail_enabled']==1) {
+                               
+                               
+                               // update voicemail password
+                               if ($SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET) {
+                                       
+                                       // update voicemail password
+                                       if ($voicemail_password=='' || $voicemail_password_confirm=='') {
+                                               $_SESSION['ari_error'] = 
+                                               _("Voicemail password not changed") . "<br>" .
+                                               _("Password and password confirm must not be blank");
+                                       }  
+                                       else if ((strlen($voicemail_password)<$SETTINGS_VOICEMAIL_PASSWORD_LENGTH) || !is_numeric($voicemail_password)) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Voicemail password not changed") . "<br>" .
+                                               sprintf(_("Passwords must be all numbers and greater than %d digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
+                                       }
+                                       else if (strlen($voicemail_password)!=$SETTINGS_VOICEMAIL_PASSWORD_LENGTH && $SETTINGS_VOICEMAIL_PASSWORD_EXACT || !is_numeric($voicemail_password)) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Voicemail password not changed") . "<br>" .
+                                               sprintf(_("Passwords must be all numbers and only %d digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
+                                       }
+                                       else if ($voicemail_password!=$voicemail_password_confirm) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Voicemail password not changed") . "<br>" .
+                                               _("Password and password confirm do not match");
+                                       }
+                                       else {
+                                       
+                                               // check for writable the files
+                                               $temp_file = $ASTERISK_VOICEMAIL_CONF . ".tmp";
+                                               $fp = fopen($temp_file, "w");
+                                               if (!$fp) {
+                                                       $_SESSION['ari_error'] = 
+                                                       _("Voicemail password not changed") . "<br>" .
+                                                       sprintf(_("%s does not exist or is not writable"),$temp_file);
+                                               }
+                                               else if (!is_writable($ASTERISK_VOICEMAIL_CONF)) {
+                                                       $_SESSION['ari_error'] = 
+                                                       _("Voicemail password not changed") . "<br>" .
+                                                       sprintf(_("%s does not exist or is not writable"),$ASTERISK_VOICEMAIL_CONF);
+                                               }
+                                               else {
+                                                       
+                                                       // update session
+                                                       $_SESSION['ari_user']['voicemail_password'] = $voicemail_password;
+                                                       
+                                                       // save password
+                                                       $lines = file($ASTERISK_VOICEMAIL_CONF);
+                                                       foreach ($lines as $key => $line) {
+                                                               unset($value);
+                                                               list($var,$value) = split('=>',$line);
+                                                               $var = trim($var);
+                                                               if ($var==$exten && $value) {
+                                                               
+                                                                       // write out line with password change
+                                                                       $buf = split(',',$value);
+                                                                       $buf[0] = $voicemail_password;
+                                                                       $line = $var . " => " . join(',', $buf);
+                                                                       
+                                                                       fwrite($fp, $line);
+                                                               }
+                                                               else {
+                                                                       // write out original line with no changes
+                                                                       fwrite($fp, $line);
+                                                               }
+                                                       }
+                                                       fclose($fp);
+                                                       unlink($ASTERISK_VOICEMAIL_CONF);
+                                                       rename($temp_file,$ASTERISK_VOICEMAIL_CONF);
+                                                       
+                                                       $voicemail_reload = 1;
+                                               }
+                                       }
+                                       
+                                       // voicemail email address
+                                       if ($voicemail_email_enable && 
+                                       ($voicemail_email_address && !preg_match('/@/',$voicemail_email_address) || 
+                                       ($voicemail_pager_address && !preg_match('/@/',$voicemail_pager_address)))) {
+                                               $_SESSION['ari_error'] = 
+                                               _("Voicemail email and pager address not changed") . "<br>" .
+                                               ("'$voicemail_email_address' and '$voicemail_pager_address' must be a valid email addresses");
+                                       }
+                                       else {
+                                       
+                                               // check for writable the files
+                                               $temp_file = $ASTERISK_VOICEMAIL_CONF . ".tmp";
+                                               $fp = fopen($temp_file, "w");
+                                               if (!$fp) {
+                                                       $_SESSION['ari_error'] = 
+                                                       _("Voicemail email settings not changed") . "<br>" .
+                                                       sprintf(_("%s does not exist or is not writable"),$temp_file);
+                                               }
+                                               else if (!is_writable($ASTERISK_VOICEMAIL_CONF)) {
+                                                       $_SESSION['ari_error'] = 
+                                                       _("Voicemail email settings not changed") . "<br>" .
+                                                       sprintf(_("%s does not exist or is not writable"),$ASTERISK_VOICEMAIL_CONF);
+                                               }
+                                               else {
+                                                       
+                                                       // store cookie
+                                                       if ($voicemail_email_enable) {
+                                                               setcookie("ari_voicemail_email_address", $voicemail_email_address, time()+365*24*60*60);
+                                                               setcookie("ari_voicemail_pager_address", $voicemail_pager_address, time()+365*24*60*60);
+                                                               foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
+                                                                       $var = "voicemail_email_$key";
+                                                                       $var_cookie = "ari_" . $var;
+                                                                       setcookie("$var_cookie", $$var, time()+365*24*60*60);
+                                                               }
+                                                       }
+                                                       
+                                                       // update session
+                                                       $_SESSION['ari_user']['voicemail_email_enable'] = $voicemail_email_enable;
+                                                       if ($voicemail_email_enable) {
+                                                               $_SESSION['ari_user']['voicemail_email_address'] = $voicemail_email_address;
+                                                               $_SESSION['ari_user']['voicemail_pager_address'] = $voicemail_pager_address;
+                                                               foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
+                                                                       $option = "voicemail_email_$key";
+                                                                       $_SESSION['ari_user']['voicemail_email'][$key] = $$option;
+                                                               }
+                                                       }
+                                                       
+                                                       // save settings
+                                                       if (!$voicemail_email_enable) {
+                                                               $voicemail_email_address = '';
+                                                               $voicemail_pager_address = '';
+                                                       }
+                                                       
+                                                       $lines = file($ASTERISK_VOICEMAIL_CONF);
+                                                       foreach ($lines as $key => $line) {
+                                                               unset($value);
+                                                               list($var,$value) = split('=>',$line);
+                                                               $var = trim($var);
+                                                               if ($var==$exten && $value) {
+                                                               
+                                                                       // write out line with voicemail email change
+                                                                       $buf = split(',',$value);
+                                                                       $buf[2] = $voicemail_email_address;
+                                                                       $buf[3] = $voicemail_pager_address;
+                                                                       
+                                                                       foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
+                                                                               $option = "voicemail_email_$key";
+                                                                               if ($$option && $key) {
+                                                                                       $options .= $key . "=" . $value;
+                                                                               }
+                                                                               else {
+                                                                                       $options .= $key . "=no";
+                                                                               }
+                                                                               $options .= "|";
+                                                                       }
+                                                                       $buf[4] = substr($options, 0, -1);
+                                                                       
+                                                                       $line = $var . " =>" . join(',', $buf);
+                                                                       if (substr($line, 0, -1)!="\n") {
+                                                                               $line .= "\n";
+                                                                       }
+                                                                       
+                                                                       fwrite($fp, $line);
+                                                               }
+                                                               else {
+                                                               
+                                                               // write out original line with no changes
+                                                               fwrite($fp, $line);
+                                                               }
+                                                       }
+                                                       fclose($fp);
+                                                       unlink($ASTERISK_VOICEMAIL_CONF);
+                                                       rename($temp_file,$ASTERISK_VOICEMAIL_CONF);
+                                                       
+                                                       $voicemail_reload = 1;
+                                               }
+                                       }
+                                       
+                                       // reload asterisk voicemail
+                                       if ($voicemail_reload) {
+                                       $this->reloadAsteriskVoicemail();
+                                       }
+                               }
+                               
+                               // update voicemail audio format setting
+                               setcookie("ari_voicemail_audio_format", $voicemail_audio_format, time()+365*24*60*60);
+                       }
+       
+                       // update call monitor record setting
+                       if ($SETTINGS_ALLOW_CALL_RECORDING_SET) {
+                               if ($record_in && $record_out) {
+                                       $this->setRecordSettings($exten,$record_in,$record_out);
+                               }
+                       }
+               }
+    }
+
+    // redirect to see updated page
+    $ret .= "
+      <head>
+        <script>
+        <!--
+          window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "\"
+        // -->
+        </script>
+    </head>";
+  
+    return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+    global $SETTINGS_ALLOW_VOICEMAIL_SETTINGS;
+    global $SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET;
+    global $SETTINGS_VOICEMAIL_PASSWORD_LENGTH;
+    global $SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS;
+    global $ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT;
+    global $SETTINGS_ALLOW_CALL_RECORDING_SET;
+
+    global $loaded_modules;
+
+    // args
+    $m                 = getArgument($args,'m');
+    $q                 = getArgument($args,'q');
+    $start     = getArgument($args,'start');
+    $span      = getArgument($args,'span');
+
+    $displayname = $_SESSION['ari_user']['displayname'];
+    $exten = $_SESSION['ari_user']['extension'];
+
+    $language = new Language();
+    $display = new DisplaySearch();
+
+    // get data
+    $data = $this->getRecordSettings($_SESSION['ari_user']['extension']);
+
+    // lang setting options
+    if (extension_loaded('gettext')) { 
+      $setLangText = "<p class='lang'>" . _("Language:") . " " . $language->GetForm() . "</p>";
+    } 
+
+
+       // voicemail settings
+       if ($SETTINGS_ALLOW_VOICEMAIL_SETTINGS && $_SESSION['ari_user']['voicemail_enabled']==1 && 
+       in_array('voicemail',array_keys($loaded_modules))) {
+               if ($SETTINGS_ALLOW_VOICEMAIL_PASSWORD_SET) {
+                       
+                       if ($SETTINGS_VOICEMAIL_PASSWORD_EXACT) {
+                               $voicemail_password_length_message = sprintf(_("Passwords must be all numbers and only %s digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
+                       }
+                       else {
+                               $voicemail_password_length_message = sprintf(_("Passwords must be all numbers and at least %s digits"),$SETTINGS_VOICEMAIL_PASSWORD_LENGTH);
+                       }
+                       
+                       $set_voicemail_password_text = "
+                       <tr>
+                       <td>" . _("Voicemail Password:") . "</td>
+                       <td>
+                       <input name='voicemail_password' type='password' size=16 value=" . $_SESSION['ari_user']['voicemail_password'] . ">
+                       </td>
+                       </tr>
+                       <tr>
+                       <td>" . _("Enter again to confirm:") . "</td>
+                       <td>
+                       <input name='voicemail_password_confirm' type='password' size=16 value=" . $_SESSION['ari_user']['voicemail_password'] . ">
+                       </td>
+                       </tr>
+                       <tr>
+                       <td class='note' colspan=2><small>" . $voicemail_password_length_message . "</small></td>
+                       </tr>";
+               }
+               
+               if (isset($_SESSION['ari_user']['voicemail_email'])) {
+                       
+                       if ($_SESSION['ari_user']['voicemail_email_enable']) { 
+                               $voicemail_email_address = $_SESSION['ari_user']['voicemail_email_address'];
+                               $voicemail_pager_address = $_SESSION['ari_user']['voicemail_pager_address'];
+                               $voicemail_email_enable = 'checked';
+                               
+                               foreach (array_keys($_SESSION['ari_user']['voicemail_email']) as $key) {
+                                       $var = "voicemail_email_$key";
+                                       $var_enable = $var . "enable";
+                                       if ($_SESSION['ari_user']['voicemail_email'][$key]=='yes') {
+                                               $$var_enable = 'checked';
+                                       }
+                               }
+                       }
+                       else {
+                               
+                               $voicemail_email_address = $_COOKIE['ari_voicemail_email_address'];
+                               $voicemail_email_text_box_options = "disabled style='background: #DDD;'";
+                               $voicemail_pager_address = $_COOKIE['ari_voicemail_pager_address'];
+                               $voicemail_pager_text_box_options = "disabled style='background: #DDD;'";
+                               
+                               foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
+                                       $var = "voicemail_email_$key";
+                                       $var_cookie = "ari_" . $var;
+                                       $var_enable = $var . "enable";
+                                       $var_text_box_options = $var . "text_box_options";
+                                       
+                                       $$var_text_box_options = "disabled";
+                                       if ($_COOKIE[$var_cookie]=='yes') {
+                                               $$var_enable = 'checked';
+                                       }
+                               }
+                       }
+                       
+                       $set_voicemail_email_text = "
+                       
+                               <tr>
+                               <td> " . _("Email Notification") . " <input " . $voicemail_email_enable . " type=checkbox name='voicemail_email_enable' value='1' OnClick=\"disable_fields(); return true;\">
+                               <small> " ._("Enable") . " </small>      
+                               </td>
+                               </tr><tr>
+                               <td><a href='#' class='info'>" . _("Email Voicemail To:") . "<span>" . ("Email a notification, including audio file if indicated below.") . " </span></a></td>
+                               <td>
+                               <input " . $voicemail_email_text_box_options . " name='voicemail_email_address' type='text' size=48 value='" . $voicemail_email_address . "'>
+                               </td>
+                               </tr>
+                               <tr>
+                               <td><a href='#' class='info'>" . _("Pager Email Notification To:") . "<span>" . ("Email a short notification") . " </span></a></td>
+                               <td>
+                               <input " . $voicemail_pager_text_box_options . " name='voicemail_pager_address' type='text' size=48 value='" . $voicemail_pager_address . "'>
+                               </td>
+                               </tr>
+                               <tr>
+                               <td></td>
+                               </tr>";
+                       
+                       foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
+                               
+                               $var = "voicemail_email_$key";
+                               $var_enable = $var . "enable";
+                               $var_text_box_options = $var . "text_box_options";
+                               if ($SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS[$key]) {
+                                       $var_text = $SETTINGS_VOICEMAIL_EMAIL_OPTION_DESCRIPTIONS[$key];
+                               }
+                               else {
+                                       $var_text = $key;
+                               }
+                               
+                               if ($value != 'yes' && $value != 'no' && $value !='') {
+                                       
+                                       $size = strlen($value) - 1;
+                                       $set_voicemail_email_text .= "
+                                       <tr>
+                                       <td></td>
+                                       <td>
+                                       <input type=text size='" . $size . "' name='" . $var . "' value='" . $value . "' OnClick=\"disable_fields(); return true;\">
+                                       <small>" . $var_text . "</small>
+                                       </td>
+                                       </tr>";
+                               } 
+                               else {
+                                       
+                                       $set_voicemail_email_text .= "
+                                       <tr>
+                                       <td></td>
+                                       <td>
+                                       <input " . $$var_enable . " " . $$var_text_box_options . " type=checkbox name='" . $var . "' value='yes' OnClick=\"disable_fields(); return true;\">
+                                       <small>" . $var_text . "</small>
+                                       </td>
+                                       </tr>";
+                               }
+                       }
+               }
+               
+               $wav_enable = 'selected';
+               if ($_COOKIE['ari_voicemail_audio_format']=='.gsm'|| 
+               ($_COOKIE['ari_voicemail_audio_format']=='' && $ARI_VOICEMAIL_AUDIO_FORMAT_DEFAULT='.gsm')) {
+                       $wav_enable = '';
+                       $gsm_enable = 'selected';
+               } 
+               
+               $set_voicemail_audio_format_text = "
+                       <tr>
+                       <td>" . _("Audio Format:") . "</td>
+                       <td>
+                       <select name='voicemail_audio_format'>
+                       <option value='.wav' " . $wav_enable .  ">" . _("Best Quality") . " (.wav)</option>
+                       <option value='.gsm' " . $gsm_enable .  ">" . _("Smallest Download") . " (.gsm)</option>
+                       </select>
+                       </td>
+                       </tr>";
+               
+               $set_voicemail_text = "
+                       <table class='settings'>
+                       <tr>
+                       <td><h3>" . _("Voicemail Settings") . "</h3></td>
+                       </tr>
+                       " . $set_voicemail_password_text . "
+                       " . $set_voicemail_email_text . "
+                       " . $set_voicemail_audio_format_text . "
+                       </table>";
+       }
+
+       // call monitor settings
+       if ($this->getFreePBXVersion() &&
+       $SETTINGS_ALLOW_CALL_RECORDING_SET && 
+       in_array('callmonitor',array_keys($loaded_modules))) {
+               
+               foreach($data as $key=>$value) {
+                       if ($key=='record_in') {
+                               if ($value=='Always') {
+                                       $ri_always = 'checked=checked';
+                               }
+                               elseif ($value=='Never') {
+                                       $ri_never = 'checked=checked';
+                               }
+                               elseif ($value=='Adhoc') {
+                                       $ri_on_demand = 'checked=checked';
+                               }
+                       }
+                       if ($key=='record_out') {
+                               if ($value=='Always') {
+                                       $ro_always = 'checked=checked';
+                               }
+                               elseif ($value=='Never') {
+                                       $ro_never = 'checked=checked';
+                               }
+                               elseif ($value=='Adhoc') {
+                                       $ro_on_demand = 'checked=checked';
+                               }
+                       }
+               }
+               
+               $set_callmonitor_text = "
+                       <table class='settings'>
+                       <tr>
+                       <td><h3>" . _("Call Monitor Settings") . "</h3></td>
+                       </tr>
+                       <tr>
+                       <td>" . _("Record INCOMING:") . " </td>
+                       <td>
+                       <input type='radio' name='record_in' value='Always' " . $ri_always . "/> " . _("Always") . " 
+                       <input type='radio' name='record_in' value='Never' " . $ri_never . "/> " . _("Never") . "                               
+                       <input type='radio' name='record_in' value='Adhoc' " . $ri_on_demand . "/> " . _("On-Demand") . "
+                       </td>
+                       </tr>
+                       <tr>
+                       <td>" . _("Record OUTGOING:") . " </td>
+                       <td>
+                       <input type='radio' name='record_out' value='Always' " . $ro_always . "/> " . _("Always") . "
+                       <input type='radio' name='record_out' value='Never' " . $ro_never . "/> " . _("Never") . "                              
+                       <input type='radio' name='record_out' value='Adhoc' " . $ro_on_demand . "/> " . _("On-Demand") . "
+                       </td>
+                       </tr>
+                       </table>";
+       }
+
+       // javascript enable options
+       if (isset($_SESSION['ari_user']['voicemail_email']) &&
+       in_array('voicemail',array_keys($loaded_modules))) {
+               foreach ($_SESSION['ari_user']['voicemail_email'] as $key => $value) {
+                       $var = "voicemail_email_$key";
+                       $js_voicemail_email_disable .= "
+                       document.ari_settings.$var.disabled = false;";
+                       $js_voicemail_email_enable .= "
+                       document.ari_settings.$var.disabled = true;";
+               }
+               
+               $js_voicemail_script = "
+                       if (document.ari_settings.voicemail_email_enable.checked) {
+                       document.ari_settings.voicemail_email_address.style.backgroundColor = '#FFF';
+                       document.ari_settings.voicemail_email_address.disabled = false;
+                       document.ari_settings.voicemail_email_address.value='" . $voicemail_email_address . "';
+                       document.ari_settings.voicemail_pager_address.style.backgroundColor = '#FFF';
+                       document.ari_settings.voicemail_pager_address.disabled = false;
+                       document.ari_settings.voicemail_pager_address.value='" . $voicemail_pager_address . "';
+                       " . $js_voicemail_email_disable . "
+                       }
+                       else {
+                       document.ari_settings.voicemail_email_address.style.backgroundColor = '#DDD';
+                       document.ari_settings.voicemail_email_address.disabled = true;
+                       document.ari_settings.voicemail_pager_address.style.backgroundColor = '#DDD';
+                       document.ari_settings.voicemail_pager_address.disabled = true;
+                       " . $js_voicemail_email_enable . "
+                       }";
+       }
+       
+       // build page content
+       $ret .= checkErrorMessage();
+       
+       $headerText = sprintf(_("Settings for %s (%s)"),$displayname,$exten);
+       
+       $ret .= $display->displayHeaderText($headerText);
+       $ret .= $display->displayLine();
+       
+       $ret .= "
+               <SCRIPT LANGUAGE='JavaScript'>
+               <!-- Begin
+               function rowCounter(field, maxlimit) {
+                       temp = field.value.split('\u000A',maxlimit+1)
+                       field.value = temp.join('\u000A')
+                       if (temp.length == maxlimit+1) {
+                               field.value = field.value.substring(0, field.value.length-1)
+                       }
+               }
+               
+               function disable_fields() {";
+                       $ret .= $js_voicemail_script . "
+               }
+               // End -->
+               </script>";
+       
+       $ret .= "
+               " . $setLangText . "
+               <form class='settings' name='ari_settings' action='' method='GET'>
+               <input type=hidden name=m value=" . $m . ">
+               <input type=hidden name=f value='action'>
+               <input type=hidden name=a value='update'>
+               <br>
+               " . $set_voicemail_text . "
+               <br>
+               " . $set_callmonitor_text . "
+               <br>
+               <input name='submit' type='submit' value='" . _("Update") . "'>
+               </form>";
+       
+       return $ret;
+  }
+
+
+
+
+
+
+  /*
+   * Sets Asterisk call recording setting
+   *
+   * @param $exten
+   *   Extension to modify
+   * @param $direction
+   *   Call direction
+   * @param $state
+   *   State to set to
+   */
+  function setRecordSettings($exten,$state_in,$state_out) {
+
+    global $asterisk_manager_interface;
+
+    if (version_compare($this->getFreePBXVersion(), '1.10', '<')) {
+
+      if ($state_in=="Always") {
+        $type_opt = "put";
+        $value_opt = " " . "ENABLED";
+      }
+      elseif ($state_in=="Never") {
+        $type_opt = "put";
+        $value_opt = " " . "DISABLED";
+      }
+      else {
+        $type_opt = "del";
+        $value_opt = "";
+      }
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt RECORD-IN $exten $value_opt\r\n\r\n");
+
+      if ($state_out=="Always") {
+        $type_opt = "put";
+        $value_opt = " " . "ENABLED";
+      }
+      elseif ($state_out=="Never") {
+        $type_opt = "put";
+        $value_opt = " " . "DISABLED";
+      }
+      else {
+        $type_opt = "del";
+        $value_opt = "";
+      }
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database $type_opt RECORD-OUT $exten $value_opt\r\n\r\n");
+    }
+    else {
+
+      $value_opt= "out=".$state_out."|in=".$state_in;
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database put AMPUSER $exten/recording $value_opt\r\n\r\n");
+    }
+  }
+
+  /*
+   * Gets record settings for a protocol
+   *
+   * @param $table
+   *   Table to pull information from
+   * @param $exten
+   *   Extension to get information about
+   * @return $data
+   *   call monitor record settings 
+   */
+  function getProtocolRecordSettings($table,$exten) {
+
+    global $asterisk_manager_interface;
+
+    $data = array();
+
+    if (version_compare($this->getFreePBXVersion(), '1.10', '<')) {
+
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get RECORD-IN $exten\r\n\r\n");
+      if (preg_match("/ENABLED/",$response)) {
+        $data['record_in'] = 'Always';
+      }
+      elseif (preg_match("/DISABLED/",$response)) { 
+        $data['record_in'] = 'Never';
+      }
+      else {
+        $data['record_in'] = 'Adhoc';
+      }
+
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get RECORD-OUT $exten\r\n\r\n");
+      if (preg_match("/ENABLED/",$response)) {
+        $data['record_out'] = 'Always';
+      }
+      elseif (preg_match("/DISABLED/",$response)) { 
+        $data['record_out'] = 'Never';
+      }
+      else {
+        $data['record_out'] = 'Adhoc';
+      }
+    }
+    else {
+
+      $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: database get AMPUSER $exten/recording\r\n\r\n");
+      if (strstr($response,"in=Always")) {
+        $data['record_in'] = 'Always';
+      }
+      elseif (strstr($response,"in=Never")) { 
+        $data['record_in'] = 'Never';
+      }
+      else {
+        $data['record_in'] = 'Adhoc';
+      }
+      if (strstr($response,"out=Always")) {
+        $data['record_out'] = 'Always';
+      }
+      elseif (strstr($response,"out=Never")) { 
+        $data['record_out'] = 'Never';
+      }
+      else {
+        $data['record_out'] = 'Adhoc';
+      }
+    }
+
+    return $data;
+  }
+
+  /*
+   * Gets record settings
+   *
+   * @param $exten
+   *   Extension to get information about
+   * @param $data
+   *   Reference to the variable to store the data in
+   */
+  function getRecordSettings($exten) {
+
+    // check protocol tables first
+    $data = $this->getProtocolRecordSettings($this->protocol_table,$exten);
+
+    return $data;
+  }
+
+  /*
+   * Reloads Asterisk Configuration
+   */
+  function reloadAsteriskVoicemail() {
+
+    global $asterisk_manager_interface;
+
+    $response = $asterisk_manager_interface->Command("Action: Command\r\nCommand: Reload app_voicemail.so\r\n\r\n");
+  }
+
+  /*
+   * Gets FreePBX Version
+   */
+  function getFreePBXVersion() {
+
+    if (isset($_SESSION['dbh_asterisk'])) {
+      $sql = "SELECT * FROM admin WHERE variable = 'version'";
+      $results = $_SESSION['dbh_asterisk']->getAll($sql);
+      if(DB::IsError($results)) {
+        $_SESSION['ari_error'] = $results->getMessage();
+      }
+
+      return $results[0][1];
+    }
+  }
+
+  function lookupSetExtensionFormat($exten) {
+
+    if (trim($exten) == "") return $exten;
+
+    $exten = preg_replace("/[^0-9*]/", "", $exten);
+
+    $sql = "SELECT extension FROM users WHERE extension = '".$exten."'";
+    $asa = $_SESSION['dbh_asterisk']->getrow($sql, DB_FETCHMODE_ASSOC);
+    if (!is_array($asa)) { 
+      return $exten.'#';
+    } else {
+      return $exten;
+    }
+  }
+
+
+} // class
+
+?>
diff --git a/fs_selfservice/fri/modules/voicemail.module b/fs_selfservice/fri/modules/voicemail.module
new file mode 100644 (file)
index 0000000..aad1456
--- /dev/null
@@ -0,0 +1,805 @@
+<?php
+
+/**
+ * @file
+ * Functions for the interface to the voicemail recordings
+ */
+
+/**
+  * Class for voicemail
+  */
+class Voicemail {
+
+  /*
+   * rank (for prioritizing modules)
+   */
+  function rank() {
+
+    $rank = 1;
+    return $rank;
+  }
+
+  /*
+   * init
+   */
+  function init() {
+  }
+
+  /*
+   * Adds menu item to nav menu
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navMenu($args) {
+
+    global $ARI_NO_LOGIN;
+
+    // check logout
+    if ($_SESSION['ari_user'] && !$ARI_NO_LOGIN) {
+      $logout = 1;
+    }
+
+    if ($logout!='') { 
+      $ret .= "<p><small><small><a href='" . $_SESSION['ARI_ROOT'] . "?m=Voicemail&f=display'>" . _("Voicemail") . "</a></small></small></p>";
+    } 
+
+    return $ret;
+  }
+
+  /*
+   * Deletes selected voicemails and updates page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function navSubMenu($args) {
+
+    global $ASTERISK_VOICEMAIL_PATH;
+    global $ASTERISK_VOICEMAIL_FOLDERS;
+
+    // args
+    $m = getArgument($args,'m');
+    $q = getArgument($args,'q');
+    $current_folder = getArgument($args,'folder');
+
+    $context = $_SESSION['ari_user']['context'];
+    $extension = $_SESSION['ari_user']['extension'];
+
+    // check for voicemail enabled or admin
+    if ($_SESSION['ari_user']['voicemail_enabled']!=1 ||
+          $extension=='admin') {
+      return;
+    }
+
+    // make folder list
+    $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
+    $i = 0;
+    while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) {
+
+      $f = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder'];
+      $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name'];
+
+      foreach($paths as $key => $path) {
+
+        $path = appendPath($path,$context);
+        $path = appendPath($path,$extension);
+  
+        if (is_dir($path) && is_readable($path)) {
+          $dh = opendir($path);
+          while (false!== ($folder = readdir($dh))) {
+
+            $folder_path = AppendPath($path,$folder);
+
+            if($folder!="." && $folder!=".." && 
+                 filetype($folder_path)=='dir') {
+
+              if ($f==$folder) {
+
+                // get message count
+                $indexes = $this->getVoicemailIndex($folder_path,$q,$order,$sort);
+                $record_count = 0;
+                $record_count += $this->getVoicemailCount($indexes);
+
+                // set current folder color
+                $class='';
+                if ($current_folder==$folder || 
+                     ($current_folder=='' && $ASTERISK_VOICEMAIL_FOLDERS[0]['folder']==$folder)) {
+                  $class = "class='current'";
+                }
+
+                // add folder to list
+                $ret .= "<p><small><small>
+                           <a " . $class . " href='" . $_SESSION['ARI_ROOT'] . "?m=Voicemail&q=" . $q . "&folder=" . $f. "'>
+                           " . $fn . " (" . $record_count . ")" . "
+                           </a>
+                         </small></small></p>";
+              }
+            }
+          } 
+        } 
+      }
+      $i++;
+    }
+
+    return $ret;
+  }
+
+  /*
+   * Acts on the selected voicemails in the method indicated by the action and updates page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function msgAction($args) {
+
+    global $ASTERISK_VOICEMAIL_FOLDERS;
+
+    // args
+    $m = getArgument($args,'m');
+    $a = getArgument($args,'a');
+    $folder = getArgument($args,'folder');
+    $q = getArgument($args,'q');
+    $start = getArgument($args,'start');
+    $span = getArgument($args,'span');
+    $order = getArgument($args,'order');
+    $sort = getArgument($args,'sort');
+
+    // get files
+    $files = array();
+    foreach($_REQUEST as $key => $value) {
+      if (preg_match('/selected/',$key)) {
+        array_push($files, $value);
+      }
+    }
+
+    if ($a=='delete') {
+      $this->deleteVoicemailData($files);
+    }
+    else if ($a=='move_to') {
+      $folder_rx = getArgument($args,'folder_rx');
+      if ($folder_rx=='') {
+        $_SESSION['ari_error'] 
+          = _("A folder must be selected before the message can be moved.");
+      }
+      else {
+        $context = $_SESSION['ari_user']['context'];
+        $extension = $_SESSION['ari_user']['extension'];
+        $this->moveVoicemailData($files, $context, $extension, $folder_rx);
+      }
+    } 
+    else if ($a=='forward_to') {
+
+      $mailbox_rx = getArgument($args,'mailbox_rx');
+      list($context_rx,$extension_rx) = split('/',$mailbox_rx);
+      if ($extension_rx=='') {
+        $_SESSION['ari_error'] 
+          = _("An extension must be selected before the message can be forwarded.");
+      }
+      else {
+        $folder_rx = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder'];
+        $this->moveVoicemailData($files, $context_rx, $extension_rx, $folder_rx);
+      }
+    }
+
+    // redirect to see updated page
+    $ret .= "
+      <head>
+        <script>
+        <!--
+          window.location = \"" . $_SESSION['ARI_ROOT'] . "?m=" . $m . "&folder=" . $folder . "&q=" . $q . "&start=" . $start . "&span=" . $span . "&order=" . $order . "&sort=" . $sort . "\"
+        // -->
+        </script>
+      </head>";
+
+    return $ret;
+  }
+
+  /*
+   * Displays stats page
+   *
+   * @param $args
+   *   Common arguments
+   */
+  function display($args) {
+
+    global $ASTERISK_VOICEMAIL_CONF;
+    global $ASTERISK_VOICEMAIL_PATH;
+    global $ASTERISK_VOICEMAIL_FOLDERS;
+    global $AJAX_PAGE_REFRESH_ENABLE;
+
+    $voicemail_audio_format = $_COOKIE['ari_voicemail_audio_format'];
+
+    $display = new DisplaySearch();
+
+    // args
+    $m = getArgument($args,'m');
+    $f = getArgument($args,'f');
+    $q = getArgument($args,'q');
+    $start = getArgument($args,'start');
+    $span = getArgument($args,'span');
+    $order = getArgument($args,'order');
+    $sort = getArgument($args,'sort');
+
+    $start = $start=='' ? 0 : $start;
+    $span = $span=='' ? 15 : $span;
+    $order = $order=='' ? 'calldate' : $order;
+    $sort = $sort=='' ? 'desc' : $sort;
+
+    $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
+
+    $displayname = $_SESSION['ari_user']['displayname'];
+    $extension = $_SESSION['ari_user']['extension'];
+    $context = $_SESSION['ari_user']['context'];
+    $folder = getArgument($args,'folder');
+    if (!$folder) {
+      $folder = $ASTERISK_VOICEMAIL_FOLDERS[0]['folder'];
+    }
+
+    // get data
+    $data = array();
+    foreach($paths as $key => $path) {
+      $path = fixPathSlash($path);
+      $vm_path = $path . "$context/$extension/$folder";
+      $indexes = $this->getVoicemailIndex($vm_path,$q,$order,$sort);
+      $record_count += $this->getVoicemailCount($indexes);
+      $data = array_merge($data,$this->getVoicemailData($indexes,$start,$span));
+    }
+
+    // build controls
+
+    // get the recordings from the asterisk server
+    $filter = '';
+    $recursiveMax = 1;
+    $recursiveCount = 0;
+    $files = array();
+    foreach($paths as $key => $path) {
+      $path_files = GetFiles($path,$filter,$recursiveMax,$recursiveCount);
+      $files = array_merge($files,$path_files);
+    }
+
+    // move options
+    $i=0;
+    while ($ASTERISK_VOICEMAIL_FOLDERS[$i]) {
+      $cf = $ASTERISK_VOICEMAIL_FOLDERS[$i]['folder'];
+      $fn = $ASTERISK_VOICEMAIL_FOLDERS[$i]['name'];
+      if ($cf!=$folder) {
+        $move_options .= "<option VALUE='" . $cf . "'>&nbsp;&nbsp;&nbsp;&nbsp;" .  $fn;
+      }
+      $i++;
+    }
+
+    // forward options
+    if (is_readable($ASTERISK_VOICEMAIL_CONF)) {
+      $lines = file($ASTERISK_VOICEMAIL_CONF);
+      $ext_array = array();
+      foreach ($lines as $key => $line) {
+
+        // get context for forward to mailbox
+        if (preg_match("/\[.*\]/i",$line)) {
+          $forwardContext = trim(preg_replace('/\[|\]/', '', $line));
+        }
+
+        // get username and add to options
+        if (preg_match("/\=\>/i",$line)) {
+          list($username,$value) = split('=>',$line);
+          $username = trim($username);
+          if ($username!=$_SESSION['ari_user']['extension']) {
+            //$ext_array[] = $username . "|" . $forwardContext;
+            list(,$real_name,) = split(",",$value,3);
+            $ext_array[] = $real_name . "|" . $username . "|" . $forwardContext;
+          }
+        }
+      } //foreach
+      //sort the array
+      sort($ext_array);
+
+      //get the size of the array
+      $array_size = count($ext_array) - 1;
+
+      //loop through the array and build the drop down list
+      foreach ($ext_array as $item)
+      {
+         //split the values apart
+         list($real_name,$username,$context) = explode("|",$item);
+
+         //add it to the drop down
+         $forward_options .= "<option VALUE='" . $context . "/" . $username . "'>" . substr($real_name,0,15) . " <" . $username . ">";
+      }
+    }
+    else {
+      $_SESSION['ari_error'] = "File not readable: " . $ASTERISK_VOICEMAIL_CONF;
+      return;
+    }
+
+    // table controls
+    $controls = "
+          <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='delete'\">
+          " . _("delete") . "
+          </button>
+          <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='move_to'\">
+          " . _("move_to") . "
+          </button>
+          <select name='folder_rx' style='width:124px;'>
+            <option VALUE=''>" . _("Folder") . "
+            " . $move_options . "
+          </select>
+          <button class='infobar' type='submit' onclick=\"document.voicemail_form.a.value='forward_to'\">
+          " . _("forward_to") . "
+          </button>
+          <select name='mailbox_rx'>
+            <option VALUE=''>
+            " . $forward_options . "
+          </select>";
+
+    // table header
+    $recording_delete_header = "<th></th>";
+
+    $fields[0]['field'] = "calldate";
+    $fields[0]['text'] = _("Date");
+    $fields[1]['field'] = "calldate";
+    $fields[1]['text'] = _("Time");
+    $fields[2]['field'] = "clid";
+    $fields[2]['text'] = _("Caller ID");
+    $fields[3]['field'] = "priority";
+    $fields[3]['text'] = _("Priority");
+    $fields[4]['field'] = "origmailbox";
+    $fields[4]['text'] = _("Orig Mailbox");
+    $fields[5]['field'] = "duration";
+    $fields[5]['text'] = _("Duration");
+    $i = 0;
+    while ($fields[$i]) {
+
+      $field = $fields[$i]['field'];
+      $text = $fields[$i]['text'];
+      if ($order==$field) { 
+        if ($sort=='asc') {
+          $currentSort = 'desc';
+          $arrowImg = "<img src='theme/images/arrow-asc.gif' alt='sort'>";
+        }
+        else {
+          $currentSort = 'asc';
+          $arrowImg = "<img src='theme/images/arrow-desc.gif' alt='sort'>";
+        }   
+
+        if ($i==1) {
+          $arrowImg = '';
+        }    
+      }
+      else {
+        $arrowImg = '';
+        $currentSort = 'desc';
+      }
+
+      $unicode_q = urlencode($q);
+      $recording_header .= "<th><a href=" .  $_SESSION['ARI_ROOT'] . "?m=" . $m . "&f=" . $f . "&q=" . $unicode_q . "&order=" . $field . "&sort=" . $currentSort . ">" . $text . $arrowImg . "</a></th>";
+
+      $i++;
+    }
+    $recording_header .= "<th>" . _("Message") . "</th>";
+
+    // table body
+    if (isset($data)) {
+      foreach($data as $file=>$value) {
+
+        // recording popup link
+        $voicemail_audio_format = $voicemail_audio_format=='' ? '.wav' : $voicemail_audio_format;
+        $recording = preg_replace('/.txt/', $voicemail_audio_format, $file);
+        if (is_file($recording)) {
+          $recordingLink = "<a href='#' onClick=\"javascript:popUp('misc/recording_popup.php?recording=" . $recording . "&date=" . $date . "&time=" . $time . "'); return false;\">
+            " . _("play") . "
+          </a>";
+        } 
+        else {
+          $_SESSION['ari_error'] = _("Voicemail recording(s) was not found.") . "<br>" .
+                                   sprintf(_("On settings page, change voicemail audio format.  It is currently set to %s"),$voicemail_audio_format);
+        }
+
+        $tableText .= "
+          <tr>
+            <td class='checkbox'><input type=checkbox name='selected" . ++$i . "' value=" . $file . "></td>
+            <td width=68>" . GetDateFormat($value['origtime']) . "</td>
+            <td>" . GetTimeFormat($value['origtime']) . "</td>
+            <td width=100>" . $value[callerid] . "</td>
+            <td>" . $value[priority] . "</td>
+            <td width=90>" . $value[origmailbox] . "</td>
+            <td>" . $value[duration] . " sec</td>
+            <td>" . $recordingLink . "</td>
+          </tr>";
+      }
+    }
+
+    // options
+    $url_opts = array();
+    $url_opts['folder'] = $folder;
+    $url_opts['sort'] = $sort;
+    $url_opts['order'] = $order;
+
+    $error = 0;
+
+    // check for voicemail enabled
+    if ($_SESSION['ari_user']['voicemail_enabled']!=1) {
+      $_SESSION['ari_error'] = _("Voicemail Login not found.") . "<br>" .
+                               _("No access to voicemail");
+      $error = 1;
+    }
+
+    // check admin
+    if ($extension=='admin') {
+      $_SESSION['ari_error'] = _("No Voicemail Recordings for Admin");
+      $error = 1;
+    }
+
+    // build page content
+    $ret .= checkErrorMessage();
+    if ($error) {
+      return $ret;
+    }
+
+    // ajax page refresh script
+    if ($AJAX_PAGE_REFRESH_ENABLE) {
+//      $ret .= ajaxRefreshScript($args);
+    }
+
+    // header
+    $ret .= $display->displayHeaderText(sprintf(_("Voicemail for %s (%s)"),$displayname,$extension));
+    $ret .= $display->displaySearchBlock('left',$m,$q,$url_opts,true);
+
+    // start form
+    $ret .= "
+      <form name='voicemail_form' action='" . $_SESSION['ARI_ROOT'] . "' method='GET'>
+        <input type=hidden name=m value=" . $m . ">    
+        <input type=hidden name=f value=msgAction>
+        <input type=hidden name=a value=''>
+        <input type=hidden name=q value=" . $q . ">
+        <input type=hidden name=folder value=" . $folder . ">
+        <input type=hidden name=start value=" . $start . ">
+        <input type=hidden name=span value=" . $span . ">
+        <input type=hidden name=order value=" . $order . ">
+        <input type=hidden name=sort value=" . $sort . ">";
+
+    $ret .= $display->displayInfoBarBlock($controls,$q,$start,$span,$record_count);
+
+    // add javascript for popup and message actions
+    $ret .= "
+      <SCRIPT LANGUAGE='JavaScript'>
+      <!-- Begin
+      function popUp(URL) {
+        popup = window.open(URL, 'play', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1,width=324,height=110');
+      }
+
+      function checkAll(form,set) {
+        var elem = 0;
+        var i = 0;
+        while (elem = form.elements[i]) {
+          if (set) {
+            elem.checked = true;
+          } else {
+            elem.checked = false;
+          }
+          i++;
+        }
+        return true;
+      }
+      // End -->
+      </script>";
+
+    // voicemail delete recording controls
+    $ret .= "
+      <table>
+        <tr>
+          <td>
+            <small>" . _("select") . ": </small>
+            <small><a href='' OnClick=\"checkAll(document.voicemail_form,true); return false;\">" . _("all") . "</a></small>
+            <small><a href='' OnClick=\"checkAll(document.voicemail_form,false); return false;\">" . _("none") . "</a></small>
+          </td>
+        </tr>
+      </table>";
+
+    // table
+    $ret .= "
+      <table class='voicemail'>
+        <tr>
+           " . $recording_delete_header . "
+           " . $recording_header . "
+        </tr>
+        " . $tableText . "
+      </table>";
+
+    // end form
+    $ret .= "</form>";
+
+    $ret .= $display->displaySearchBlock('center',$m,$q,$url_opts,false);
+    $ret .= $display->displayNavigationBlock($m,$q,$url_opts,$start,$span,$record_count);
+
+    return $ret;
+  }
+
+  /*
+   * Gets voicemail data
+   *
+   * @param $data
+   *   Reference to the variable to store the data in
+   * @param $q
+   *   search string
+   */
+  function getVoicemailIndex($path,$q,$order,$sort) {
+
+    $indexes = array();
+
+    $filter = '.txt';
+    $recursiveMax = 0;
+    $recursiveCount = 0;
+    $files = getFiles($path,$filter,$recursiveMax,$recursiveCount);
+
+    if (isset($files)) {
+
+      // ugly, but sorts array by time stamp
+      foreach ($files as $file) {
+
+        if (is_file($file)) {
+
+          $lines = file($file);
+          foreach ($lines as $key => $line) {
+            unset($value);
+            list($key,$value) = split('=',$line);
+            if ($value) {
+
+              if ($key=="origtime") {
+                $calldate = $value;
+                $date = GetDateFormat($value);
+                $time = GetTimeFormat($value);
+              }
+              if ($key=="callerid") {
+                $callerid = $value;
+              }
+              if ($key=="priority") {
+                $priority = $value;
+              }
+              if ($key=="origmailbox") {
+                $origmailbox = $value;
+              }
+              if ($key=="duration") {
+                $duration = (int)$value;
+              }
+            }
+          }
+
+          // search filter
+          $found = 1;
+          if ($q) {
+
+            $found = 0;
+
+            if (preg_match("/" . $q . "/", $origmailbox) || 
+                  preg_match("/" . $q . "/", $callerid) || 
+                  preg_match("/" . $q . "/", $date) || 
+                  preg_match("/" . $q . "/", $time)) {
+              $found = 1;
+            }
+          }
+        }
+
+        // add to index
+        if ($found) {
+          $indexes[$file] = $$order;
+        }
+      }
+
+      if (count($indexes)) {
+        if ($sort=='desc') {
+          arsort($indexes);
+        }
+        else {
+          asort($indexes);
+        }
+      } 
+    }
+
+    return $indexes;
+  }
+
+  /*
+   * Deletes selected voicemails
+   *
+   * @param $files
+   *   Array of files to delete
+   */
+  function deleteVoicemailData($files) {
+
+    foreach($files as $key => $path) {
+
+      // get file parts for search
+      $path_parts = pathinfo($path);
+      $path = fixPathSlash($path_parts['dirname']);
+
+      list($name,$ext) = split("\.",$path_parts['basename']);
+
+      // delete all related files using a wildcard
+      if (is_dir($path)) {
+        $hdl = opendir($path);
+        while ($fn = readdir($hdl)) {
+          if (preg_match("/" . $name ."/",$fn)) {
+            $file = $path . $fn;
+            unlink($file);
+          }
+        }
+        closedir($hdl);
+      }
+    }
+  }
+
+  /*
+   * Moves selected voicemails to a specified folder
+   *
+   * @param $files
+   *   Array of files to delete
+   * @param $extension_rx
+   *   Mailbox to move message to
+   * @param $folder_rx
+   *   Folder to move the messages to
+   */
+  function moveVoicemailData($files,$context_rx,$extension_rx,$folder_rx) {
+
+    global $ASTERISK_VOICEMAIL_PATH;
+
+    $perm = fileperms($ASTERISK_VOICEMAIL_PATH);
+    $uid = fileowner($ASTERISK_VOICEMAIL_PATH);
+    $gid = filegroup($ASTERISK_VOICEMAIL_PATH);
+
+    // recieving path
+    $paths = split(';',$ASTERISK_VOICEMAIL_PATH);
+    $path_rx = appendPath($paths[0],$context_rx);
+    if (!is_dir($path_rx)) {
+      mkdir($path_rx, $perm); 
+      chown($path_rx,intval($uid));
+      chgrp($path_rx,intval($gid));
+    }
+    $path_rx = appendPath($path_rx,$extension_rx);
+    if (!is_dir($path_rx)) {
+      mkdir($path_rx, $perm); 
+      chown($path_rx,intval($uid));
+      chgrp($path_rx,intval($gid));
+    }
+    $path_rx = appendPath($path_rx,$folder_rx);
+    if (!is_dir($path_rx)) {
+      mkdir($path_rx, $perm); 
+      chown($path_rx,intval($uid));
+      chgrp($path_rx,intval($gid));
+    }
+
+    // get recieving folder last message number
+    if (is_dir($path_rx)) {
+
+      $lastNum = -1;
+      $lastNumLen = 4;
+
+      $dh = opendir($path_rx);
+      while (false != ($filename = readdir($dh))) {
+        if($filename!="." && $filename!="..") {
+
+          $msg_path = $path_rx;
+          $msg_path = appendPath($msg_path,$filename);
+          if (is_file($msg_path)) {
+            $path_parts = pathinfo($msg_path);
+            $num = preg_replace("/[a-zA-Z]|\./",'', $path_parts['basename']);
+            if ($num > $lastNum) {
+              $lastNum = $num;
+              $lastNumLen = strlen($lastNum);
+            }
+          } 
+        }
+      } 
+    }
+    else {
+      $_SESSION['ari_error'] = sprintf(_("Could not create mailbox folder %s on the server"),$folder_rx);
+      return;
+    }
+
+    // copy files to new location, incrementing each message number 
+    asort($files);
+    foreach($files as $key => $path) {
+
+      // get file parts for search
+      $path_parts = pathinfo($path);
+      $path = $path_parts['dirname'];
+      $path = fixPathSlash($path);
+      list($name,$ext) = split("\.",$path_parts['basename']);
+      if (is_dir($path)) {
+
+        $lastNum++;
+        $hdl = opendir($path);
+        while ($fn = readdir($hdl)) {
+          if (preg_match("/" . $name . "/",$fn)) {
+            $src = $path . $fn;
+            $path_parts = pathinfo($src);
+            $folder_rx = preg_replace("/\d+/",sprintf("%0" . $lastNumLen . "d",$lastNum),$path_parts['basename']);
+            $dst = appendPath($path_rx,$folder_rx);
+            if (is_writable($src) && is_writable($path_rx)) {
+
+              $perm = fileperms($src);
+              $uid = fileowner($src);
+              $gid = filegroup($src);
+
+              copy($src,$dst);
+
+              if (is_writable($dst)) {
+                chmod($dst, $perm); 
+                chown($dst,intval($uid));
+                chgrp($dst,intval($gid));
+              }
+
+              unlink($src);
+            }
+            else {
+              $_SESSION['ari_error'] = sprintf(_("Permission denied on folder %s or %s"),$src,$path_rx);
+              return;
+            }
+          } 
+        }
+        closedir($hdl);
+      }
+    }
+  }
+
+  /*
+   * Gets voicemail record count
+   *
+   * @param $indexes
+   *   array of files to be counted
+   * @return $count
+   *   number of cdr records counted
+   */
+  function getVoicemailCount($indexes) {
+
+    $count = count($indexes);
+
+    return $count;
+  }
+
+  /*
+   * Gets voicemail data
+   *
+   * @param $indexes
+   *   array of voicemail files
+   * @param $start
+   *   message number to start page with
+   * @param $span
+   *   number of messages to display on page
+   * @param $data
+   *   Reference to the variable to store the data in
+   */
+  function getVoicemailData($indexes,$start,$span) {
+
+    $data = array();
+
+    if (!isset($indexes)) {
+      return;
+    }
+
+    // populate array 
+    $i = 0;
+    foreach ($indexes as $file => $index) {
+      if ($i>$start-1+$span) {
+        return $data;
+      }
+      elseif ($i>$start-1 && $i<$start+$span) {
+        $lines = file($file);
+        foreach ($lines as $key => $line) {
+          unset($value);
+          list($key,$value) = split('=',$line);
+          if ($value) {
+            $data[$file][$key] = $value;
+          }
+        }
+      }
+      $i++;
+    }
+
+    return $data;
+  }
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/fs_selfservice/fri/theme/global.css b/fs_selfservice/fri/theme/global.css
new file mode 100644 (file)
index 0000000..cd97aa2
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Global Styles
+ */
+
+body {
+  color: #333;
+  background-color: white;
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+}
+
+div {
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+}
+
+h2 {
+  font-size: 1.2em;
+  font-family: "Trebuchet MS", Arial, Helvetica, Tahoma, Verdana, sans-serif;
+  margin-top: 0;
+  margin-bottom: 0;
+  color: #555;
+}
+
+h3 {
+  font-size: 1em;
+  margin-top: 1.5em;
+  font-family: "Trebuchet MS", Arial, Helvetica, Tahoma, Verdana, sans-serif;
+  margin-top: 0;
+  margin-bottom: 0;
+  color: #555;
+}
+
+
+h4 {
+  font-family: "Trebuchet MS", Arial, Helvetica, Tahoma, Verdana, sans-serif;
+  margin-top: 0;
+  margin-bottom: 0;
+  color: #555;
+  margin-top:  1.5em
+}
+
+
+
+sup {
+  font-size: 9px
+}
+
+small small {
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  font-weight: bold;
+}
+
+
+
+/***** info popups *****/
+a.info {
+       position:relative;
+       color:black;
+       border-bottom:1px dashed #ccc;
+}
+/* Added to solve the z-order problem of IE 
+*/
+a.info:hover {
+       background-color: #FFA178;
+  z-index:2;
+}
+/* End */
+a.info span{
+  display: none;
+       background-color: #FFA178;
+}
+a.info:hover span{
+       display:block;
+       position:absolute;
+       z-index:1;
+       top:2em;
+       left:-10em;
+       width:25em;
+       border:1px solid #F2AF1D;
+       background-color:#FDF1D5;
+       color:#000;
+       text-align:justify;
+       font-size:10px;
+       font-weight:normal;
+       padding:3px;
+       line-height:15px;
+}
+
diff --git a/fs_selfservice/fri/theme/header.css b/fs_selfservice/fri/theme/header.css
new file mode 100644 (file)
index 0000000..1c28e7a
--- /dev/null
@@ -0,0 +1,83 @@
+/* 
+ * Header
+ */
+
+/* Header */
+
+#ariHeader {
+  position: relative;
+  background: #105D90;
+  height: 72px;
+  margin: 0;
+  padding: 0;
+  clear: both;
+}
+
+#ariHeader span.left {
+  position: relative;
+  height: 72px;
+  border: 0px;
+  padding: 0px;
+  margin: 0px;
+  float: left;
+}
+
+#ariHeader img { 
+  border: 0px; 
+}
+
+#ariHeader span.right {
+  height: 72px;
+  border: 0px;
+  padding: 0px;
+  margin: 0px;
+  float: right;
+}
+
+#ariHeader img {
+  border: 0px;
+}
+
+/* Topnav */
+
+#topnav {
+  width: 100%;
+  height: 36px;
+  border: 0;
+  padding: 0;
+  margin-top: -1px;  /* stupid browser hack */
+  color: #999;
+  background-color: #333;
+}
+
+#topnav span.left {
+  float: left;
+  text-align: left;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+
+#topnav span.right {
+  float: right;
+  text-align: right;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+
+.topnav small b  {
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  font-weight: bold;
+  background-color: #105D90;
+}
+
+/* Headerspacer */
+
+#headerspacer {
+  border: 0; 
+  padding: 0;
+  margin-top: -16px;  /* stupid browser hack */
+  background-color: #fff;
+  height: 16px
+}
\ No newline at end of file
diff --git a/fs_selfservice/fri/theme/iefixes.css b/fs_selfservice/fri/theme/iefixes.css
new file mode 100644 (file)
index 0000000..a7939a4
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * IE Fixes
+ */
+
+/*Win IE fix \*/
+* html .minwidth { border-left: 760px solid #fff; position: relative; float: left; z-index: 1; }
+
+/*End Win IE fix*/
+
+/*Win IE fix \*/
+* html .container { margin-left: -760px; position: relative; float: left; z-index :2; }
+/*End Win IE fix*/
+
+
+
+
diff --git a/fs_selfservice/fri/theme/images/arrow-asc.gif b/fs_selfservice/fri/theme/images/arrow-asc.gif
new file mode 100644 (file)
index 0000000..46a5848
Binary files /dev/null and b/fs_selfservice/fri/theme/images/arrow-asc.gif differ
diff --git a/fs_selfservice/fri/theme/images/arrow-desc.gif b/fs_selfservice/fri/theme/images/arrow-desc.gif
new file mode 100644 (file)
index 0000000..6f4e5e6
Binary files /dev/null and b/fs_selfservice/fri/theme/images/arrow-desc.gif differ
diff --git a/fs_selfservice/fri/theme/layout.css b/fs_selfservice/fri/theme/layout.css
new file mode 100644 (file)
index 0000000..a398714
--- /dev/null
@@ -0,0 +1,420 @@
+/*
+ * Layout 
+ */
+
+/* Page */
+
+#page {
+  background-color: white;
+  text-align: left;
+  min-width: 760px;
+}
+
+/* main */
+
+#main {
+  min-width: 760px;
+  float: left;
+}
+
+#main span.left {
+  float: left;
+}
+
+#main span.right {
+  float: left;
+}
+
+/* Center */
+
+#center {
+  float: left;
+  margin-bottom: 20px;
+}
+
+/* Login */
+
+#login  {  
+  margin: 0;
+  padding: 0;
+}
+#login p { 
+  font-size: 0.7em;
+}
+table#login  {  
+  width: 600px;
+  border: 0px;
+}
+table#login td.right {  
+  text-align: right;
+  width: 20%;
+}
+table#login td.left {  
+  text-align: left;
+}
+table#login td.small {  
+  font-size: 0.7em;
+}
+table#login_text  { 
+  margin-left: 60px; 
+  font-size: 0.8em;
+  text-align: left;
+}
+
+/* i18n lang */
+
+.lang {
+  display: inline;
+  font-size: 0.8em;
+  margin: 0;
+  padding: 0;
+}
+.lang_code {
+  margin: 0;
+  padding: 0;
+  width: 10em;
+}
+
+/* Line */
+
+#line {
+  min-width: 604px;
+  border: 1px solid #333; 
+  padding: 0;
+  margin: 0;  
+  color: #999;
+  background-color: #333;
+  height: 1px;
+}
+#line span.left {
+  float: left;
+  text-align: left;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+#line span.right {
+  float: right;
+  text-align: right;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+
+/* Navbar */
+
+#navbar {
+  width: 604px;
+  height: 24px;
+  border: 1px; 
+  padding: 0;
+  margin-bottom: 0;
+  color: #fff;
+  background-color: #333;
+}
+#navbar span.left {
+  margin: 2px;
+  float: left;
+  text-align: left;
+  font-weight: bold;
+  vertical-align: middle;
+  width: 49%;
+}
+#navbar span.right {
+  margin: 2px;
+  float: right;
+  text-align: right;
+  font-weight: bold;
+  vertical-align: middle;
+  width: 49%;
+}
+
+/* Info Bar */
+
+#info_bar {
+  min-width: 604px;
+  border: 1px solid #333; 
+  padding: 3px;
+  margin-top: -1px;  /* stupid browser hack */
+  color: #999;
+  background-color: #333;
+  height: 20px;
+}
+#info_bar span.left {
+  float: left;
+  text-align: left;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+#info_bar span.right {
+  float: right;
+  text-align: right;
+  font-weight: bold;
+  color: #fff;
+  width: 49%;
+}
+.info_bar a:link {
+  color: white;
+  text-decoration: none;
+}
+.info_bar a:active, a:link {
+  color: #105D90;
+}
+.info_bar a:hover {
+  color: #fc0;
+}
+.info_bar small b  {
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+  font-weight: bold;
+}
+input.infoBar {
+  font-size: 11px;
+  padding: 0px;
+  height: 22px;
+}
+
+/* bars */
+
+.bar {
+  margin: 0;
+}
+
+.bar_left {
+  width: 604px;
+  margin: 0 0 16px 0; 
+  padding: 0;
+}
+
+.bar_center {
+  width: 604px;
+  text-align: center;
+  margin: 0 0 16px 0; 
+  padding: 0;
+}
+.bar_center a:active, .bar_center a:hover {
+  color: red;
+}
+
+/* Subheader */
+
+#subheader {
+  padding: 0px; 
+  margin: 0px;
+  margin-bottom: 16px;
+}
+
+/* servBodL */
+
+.servBodL { 
+  border-left: 1px dotted #CEDCEA; 
+}
+
+/* Callmonitor */
+
+table.callmonitor { 
+  border: 1px #6699CC solid;
+  border-collapse: collapse;
+  border-spacing: 0px;
+  margin: 0 0 16px 0;
+  width: 604px;
+}
+table.callmonitor th { 
+  background-color: #BEC8D1;
+  border: 1px solid #6699CC;
+  border-bottom: 2px solid #6699CC;
+  text-align: center;
+  font-family: Verdana;
+  font-weight: bold;
+  font-size: 0.7em;
+  color: #404040;
+}
+table.callmonitor th a { 
+  color: #404040;
+}
+table.callmonitor img { 
+  border: 0;
+}
+table.callmonitor td { 
+  background-color: white;
+  border: 1px solid #6699CC;
+  color: #404040;
+  font-family: Verdana, sans-serif, Arial;
+  font-weight: normal;
+  font-size: 0.7em;
+  padding: 3px;
+  text-align: center;
+}
+table.callmonitor td.checkbox { 
+  padding: 1px;
+}
+
+/* Voicemail */
+
+.voicemail {
+  margin: 0px;
+}
+table.voicemail { 
+  border: 1px #6699CC solid;
+  border-collapse: collapse;
+  border-spacing: 0px;
+  margin: 0 0 16px 0;
+  width: 604px;
+}
+table.voicemail th { 
+  background-color: #BEC8D1;
+  border: 1px solid #6699CC;
+  border-bottom: 2px solid #6699CC;
+  text-align: center;
+  font-family: Verdana;
+  font-weight: bold;
+  font-size: 0.7em;
+  color: #404040;
+}
+table.voicemail th a { 
+  color: #404040;
+}
+table.voicemail img { 
+  border: 0;
+}
+table.voicemail td { 
+  background-color: white;
+  border: 1px solid #6699CC;
+  color: #404040;
+  font-family: Verdana, sans-serif, Arial;
+  font-weight: normal;
+  font-size: 0.7em;
+  padding: 3px;
+  text-align: center;
+}
+table.voicemail td.checkbox { 
+  padding: 1px;
+}
+
+/* Help */
+
+.help {
+  margin: 0px;
+}
+table.help { 
+  border: 1px #6699CC solid;
+  border-collapse: collapse;
+  border-spacing: 0px;
+  margin: 0 0 16px 0;
+}
+table.help th { 
+  background-color: #BEC8D1;
+  border: 1px solid #6699CC;
+  border-bottom: 2px solid #6699CC;
+  font-family: Verdana;
+  font-weight: bold;
+  font-size: 0.7em;
+  color: #404040;
+}
+table.help th.feature_codes { 
+  text-align: center;
+  width: 9em;
+}
+table.help th a { 
+  color: #404040;
+}
+table.help img { 
+  border: 0;
+}
+table.help td { 
+  background-color: white;
+  border: 1px solid #6699CC;
+  color: #404040;
+  font-family: Verdana, sans-serif, Arial;
+  font-weight: normal;
+  font-size: 0.7em;
+  padding: 3px;
+}
+table.help td.feature_codes { 
+  text-align: center;
+}
+table.help td.checkbox { 
+  padding: 1px;
+}
+
+/* Settings */
+
+.settings { 
+  font-family: Verdana, sans-serif, Arial;
+  font-weight: normal;
+  font-size: 0.9em;
+  padding: 0;
+  margin: 0;
+}
+table.settings { 
+  font-family: Verdana;
+  color: #404040;
+  border-collapse: collapse;
+  border-spacing: 0px;
+  padding-bottom: 3px;
+}
+table.settings td { 
+  color: #404040;
+  background-color: white;
+  padding: 3px;
+}
+table.settings td.note { 
+  color: #105D90;
+}
+
+/* Footer */
+
+#ariFooter {
+  color: #999;
+  margin-left: 148px;
+  font-size: 10px;
+  overflow: auto;
+/*  width: 100%; */
+  clear: both;
+}
+
+#ariFooter a {
+  text-decoration: none;
+  color: #999;
+}
+
+#ariFooter a:hover {
+  text-decoration: underline;  
+  color: #105D90;
+}
+
+#ariFooter a:link {
+  text-decoration: none;
+  color: #999;
+}
+
+/* Misc */
+
+.ariClearBoth {
+  clear: both;
+  margin: 0;
+  padding: 0;
+}
+
+.ariBlockHide {
+  display: none;
+  height: 0;
+  width: 0;
+  overflow: hidden;
+  position: absolute;  /* IE5 Mac */
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/fs_selfservice/fri/theme/logo.gif b/fs_selfservice/fri/theme/logo.gif
new file mode 100644 (file)
index 0000000..b2d23d7
Binary files /dev/null and b/fs_selfservice/fri/theme/logo.gif differ
diff --git a/fs_selfservice/fri/theme/main.css b/fs_selfservice/fri/theme/main.css
new file mode 100644 (file)
index 0000000..6b9ba94
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Main
+ */
+
+@import url("global.css");
+@import url("text.css");
+@import url("layout.css");
+@import url("header.css");
+@import url("navigation.css");
+
+@import url("iefixes.css");
+
+
diff --git a/fs_selfservice/fri/theme/navigation.css b/fs_selfservice/fri/theme/navigation.css
new file mode 100644 (file)
index 0000000..907851b
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Navigation
+ */
+
+/* Menu */
+
+#menu {
+  width: 148px;
+  float: left;
+}
+
+/* Nav */
+
+.nav {
+  font-weight: bold;
+  color: #105D90;
+  margin-right: 20px;
+}
+
+.nav p {
+  margin:  0px;
+  padding-top: 2px;
+  padding-bottom: 3px;
+  background: #FFF; 
+}
+
+.nav a:visited  {
+  color: #105D90;
+}
+
+.sub    {
+  margin-left: 1em;
+}
+
+.navtext {
+  margin-left: 20px;
+}
+
+.nav_b1 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display: block; 
+  background: #EEE; 
+  margin:0 5px;
+}
+
+.nav_b2 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display: block; 
+  background: #FFF; 
+  border-right: 2px solid #EEE; 
+  border-left: 2px solid #EEE; 
+  margin:0 3px;
+}
+
+.nav_b3 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display:block; 
+  background: #FFF; 
+  border-right: 1px solid #EEE; 
+  border-left: 1px solid #EEE; 
+  margin: 0 2px;
+}
+
+.nav_b4 {
+  height: 2px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display:block; 
+  background: #FFF;
+  border-right: 1px solid #EEE; 
+  border-left:1px solid #EEE; 
+  margin:0 1px;
+}
+
+#nav_menu {
+  background: #FFF; 
+  border-right: 1px solid #EEE; 
+  border-left: 1px solid #EEE;
+  padding-left: 0.75em;
+}
+
+/* Subnav */
+
+.subnav {
+  font-weight: bold;
+  color: #105D90;
+  margin-right: 20px;
+}
+
+.subnav p {
+  margin:  0px;
+  padding-top: 2px;
+  padding-bottom: 3px;
+  background: #BEC8D1; 
+}
+
+.subnav a:visited  {
+  color: #105D90;
+}
+
+.subnav a.current, a:visited.current {
+  color: #404040;
+}
+
+.subnav_b1 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display: block; 
+  background: #aaa; 
+  margin:0 5px;
+}
+
+.subnav_b2 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display: block; 
+  background: #BEC8D1; 
+  border-right: 2px solid #aaa; 
+  border-left: 2px solid #aaa; 
+  margin:0 3px;
+}
+
+.subnav_b3 {
+  height: 1px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display:block; 
+  background: #BEC8D1; 
+  border-right: 1px solid #aaa; 
+  border-left: 1px solid #aaa; 
+  margin: 0 2px;
+}
+
+.subnav_b4 {
+  height: 2px; 
+  font-size: 1px; 
+  overflow: hidden; 
+  display:block; 
+  background: #BEC8D1;
+  border-right: 1px solid #aaa; 
+  border-left:1px solid #aaa; 
+  margin:0 1px;
+}
+
+.subnav_title {
+  font-weight: normal;
+  color: #105D90;
+  font-size: 12px;
+  padding-left: 1em;
+}
+
+#subnav_menu {
+  background: #BEC8D1; 
+  border-right: 1px solid #aaa; 
+  border-left: 1px solid #aaa;
+  padding-left: 1.25em;
+}
+
diff --git a/fs_selfservice/fri/theme/page.tpl.php b/fs_selfservice/fri/theme/page.tpl.php
new file mode 100644 (file)
index 0000000..12b5a3b
--- /dev/null
@@ -0,0 +1,77 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <TITLE>User Portal</TITLE>
+    <link rel="stylesheet" href="theme/main.css" type="text/css">
+    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
+  </head>
+  <body>
+  <div id="page">
+  <div class="minwidth">
+  <div class="container">
+    <div id="topnav">
+      <div class="spacer"></div>
+      <span class="left">
+      </span>
+      <div class="spacer"></div>
+    </div> 
+    <div id="headerspacer"><img src="theme/spacer.gif" alt=""></div> 
+    <div id="main">
+    <div class="minwidth">
+    <div class="container">
+      <div class="spacer"></div>
+      <span class="left">
+        <div id="menu">
+          <div><img height=4 src="theme/spacer.gif" alt=""></div> 
+          <div class="nav">
+            <?php if ($nav_menu != '') { ?>
+              <b class='nav_b1'></b><b class='nav_b2'></b><b class='nav_b3'></b><b class='nav_b4'></b>
+              <div id='nav_menu'>
+                  <?php print($nav_menu) ?>
+              </div>
+              <b class='nav_b4'></b><b class='nav_b3'></b><b class='nav_b2'></b><b class='nav_b1'></b>
+            <?php } ?>
+          </div>
+          <div><img height=14 src="theme/spacer.gif" alt=""></div> 
+          <?php if ($subnav_menu != '') { ?>
+            <div class="subnav">
+              <div class="subnav_title"><?php echo _("Folders")?>:</div>
+              <b class='subnav_b1'></b><b class='subnav_b2'></b><b class='subnav_b3'></b><b class='subnav_b4'></b>
+              <div id='subnav_menu'>
+                <?php print($subnav_menu) ?>
+              </div>
+              <b class='subnav_b4'></b><b class='subnav_b3'></b><b class='subnav_b2'></b><b class='subnav_b1'></b>
+            </div>
+          <?php } ?>
+        </div>
+      </span>
+      <span class="right">
+        <div id="center">
+          <?php if ($login != "") { ?>
+            <?php print($login) ?>
+          <?php } ?>
+          <div id="content">
+            <!-- begin main content -->
+              <?php print($content) ?>
+            <!-- end main content -->
+          </div>
+        </div>
+      </span>
+      <div class="spacer"></div>
+    </div>
+    </div>
+    </div>
+    <!--begin footer-->
+    <div id="ariFooter">
+      <small>
+        &nbsp;&nbsp;<?php print($ari_version) ?> <?php echo _("Version")?><br>
+        &middot;&nbsp;<a href="http<?php print(isset($_SERVER['HTTPS'])&&$_SERVER['HTTPS']!=''?'s':''); ?>://www.littlejohnconsulting.com">Based on ARI from Littlejohn Consulting</a>
+      </small>
+    </div>
+    <!-- end footer -->
+  </div>
+  </div>
+  </div>
+  </body>
+</html>
+
diff --git a/fs_selfservice/fri/theme/spacer.gif b/fs_selfservice/fri/theme/spacer.gif
new file mode 100644 (file)
index 0000000..8f09684
Binary files /dev/null and b/fs_selfservice/fri/theme/spacer.gif differ
diff --git a/fs_selfservice/fri/theme/text.css b/fs_selfservice/fri/theme/text.css
new file mode 100644 (file)
index 0000000..9625ca0
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * Text
+ */
+
+/* Error */
+
+.error  {      
+  color: #CC3333;
+}
+
diff --git a/fs_selfservice/fri/version.php b/fs_selfservice/fri/version.php
new file mode 100644 (file)
index 0000000..7f313a1
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+
+/**
+ * @file
+ * version
+ */
+
+$ARI_VERSION = 'FreePBX 2.3';
+
+?>