diff options
author | ivan <ivan> | 2008-03-16 19:58:33 +0000 |
---|---|---|
committer | ivan <ivan> | 2008-03-16 19:58:33 +0000 |
commit | 3a17b276638200475d54201fa62566b7440e819a (patch) | |
tree | e287d32efc93c5924bc63dec88a79d36e4383961 | |
parent | 46c6025ca0759b96e5bd16e7ce4b16d4df8a0988 (diff) |
59 files changed, 15608 insertions, 0 deletions
diff --git a/fs_selfservice/fri/CHANGE.log b/fs_selfservice/fri/CHANGE.log new file mode 100644 index 000000000..f25712b80 --- /dev/null +++ b/fs_selfservice/fri/CHANGE.log @@ -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 index 000000000..c09b19cdd --- /dev/null +++ b/fs_selfservice/fri/LICENSE.txt @@ -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 index 000000000..2e3b9088f --- /dev/null +++ b/fs_selfservice/fri/README.txt @@ -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 index 000000000..fc7961b08 --- /dev/null +++ b/fs_selfservice/fri/includes/ajax.php @@ -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 index 000000000..62f221e2f --- /dev/null +++ b/fs_selfservice/fri/includes/asi.php @@ -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 index 000000000..a01a2f5c8 --- /dev/null +++ b/fs_selfservice/fri/includes/bootstrap.php @@ -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 index 000000000..caa76c1d6 --- /dev/null +++ b/fs_selfservice/fri/includes/common.php @@ -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 index 000000000..301d8a840 --- /dev/null +++ b/fs_selfservice/fri/includes/crypt.php @@ -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 index 000000000..ff3d199c0 --- /dev/null +++ b/fs_selfservice/fri/includes/database.php @@ -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 index 000000000..41d8dc5f0 --- /dev/null +++ b/fs_selfservice/fri/includes/display.php @@ -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> </small> + <a href=" . $url . "&start=" . ($start-$span) . "><small><</a> </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) . " </small>"; + } else { + $middle_page_text .= "<a href='" . $url . "&start=" . ($next_page*$span) . "'><small>" . ($next_page+1) . "</a> </small>"; + } + } + if ( ($start_page != $total_pages-1) && ($total != 0) ) { + $end_page_text = "<a href='" . $url . "&start=" . ($start+$span) . "'><small>></a> </small> + <a href='" . $url . "&start=" . ($total_pages-1)*$span . "'><small>" . _("Last") . "</a> </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 index 000000000..b27b8e337 --- /dev/null +++ b/fs_selfservice/fri/includes/lang.php @@ -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ñ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 index 000000000..826692c29 --- /dev/null +++ b/fs_selfservice/fri/includes/login.php @@ -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") . ": </small></small> + </td> + <td> + <input type='text' name='username' value='" . $login . "' maxlength=20 tabindex=1> + </td> + </tr> + <tr> + <td class='right'> + <small><small>" . _("Password") . ": </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> </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 index 000000000..31592cac6 --- /dev/null +++ b/fs_selfservice/fri/includes/main.conf.php @@ -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 index 000000000..0fe614992 --- /dev/null +++ b/fs_selfservice/fri/index.php @@ -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 index 000000000..aff5a75d1 --- /dev/null +++ b/fs_selfservice/fri/locale/ari.po @@ -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 index 000000000..aff5a75d1 --- /dev/null +++ b/fs_selfservice/fri/locale/ari.utf-8.po @@ -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 Binary files differnew file mode 100644 index 000000000..b94eba261 --- /dev/null +++ b/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.mo 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 index 000000000..b89b612ee --- /dev/null +++ b/fs_selfservice/fri/locale/de_DE/LC_MESSAGES/ari.po @@ -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 "" +"Überprü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ür Passwort-Ä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ä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ä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ö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ä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 ü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ändert" + +#: ../modules/settings.module:225 ../modules/settings.module:230 +#, fuzzy +msgid "Voicemail email settings not changed" +msgstr "Voicemail-Passwort nicht geä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ä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ät" + +#: ../modules/settings.module:543 +msgid "Smallest Download" +msgstr "Fü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ü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ä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ä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ä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ü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 Binary files differnew file mode 100644 index 000000000..6b00b14d7 --- /dev/null +++ b/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.mo 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 index 000000000..25664941c --- /dev/null +++ b/fs_selfservice/fri/locale/el_GR/LC_MESSAGES/ari.po @@ -0,0 +1,648 @@ +# Copyright (C) 2005 THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# Elias Sofronas <esofronas@gmail.com>, 2005.
+#
+#
+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 Binary files differnew file mode 100644 index 000000000..e0fbdd961 --- /dev/null +++ b/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.mo 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 index 000000000..0518573d0 --- /dev/null +++ b/fs_selfservice/fri/locale/es_ES/LC_MESSAGES/ari.po @@ -0,0 +1,616 @@ +# 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.
+# Grupo Ikusnet, Antonio F. Cano <antonio@igestec.com>, 2006. +# Grupo Ikusnet, Agustin Vericat <agustin@igestec.com>, 2006. +#
+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ó 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ó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ña Incorrecta" + +#: ../includes/login.php:279 +msgid "Incorrect Username or Password" +msgstr "Contraseñ Incorrecta" + +#: ../includes/login.php:402 ../includes/login.php:411 +msgid "Login" +msgstr "Usuario" + +#: ../includes/login.php:419 +msgid "Password" +msgstr "Contraseña" + +#: ../includes/login.php:428 +msgid "Submit" +msgstr "Enviar" + +#: ../includes/login.php:436 +msgid "Remember Password" +msgstr "Recordar Contraseña" + +#: ../includes/login.php:451 +msgid "Use your <b>Voicemail Mailbox and Password</b>" +msgstr "Use su Buzón de Voz (Usuario) y contraseña" + +#: ../includes/login.php:452 +msgid "This is the same password used for the phone" +msgstr "Esta es es la misma contraseñ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ñ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ío de llamada" + +#: ../includes/main.conf.php:238 +msgid "Disable Call Forwarding" +msgstr "Desactivar el Desví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ío de llamada cuando esté Ocupado" + +#: ../includes/main.conf.php:243 +msgid "Disable Call Forward on Busy" +msgstr "Desactivar el Desvío de llamada cuando esté Ocupado" + +#: ../includes/main.conf.php:244 +#, fuzzy +msgid "Message Center (does not ask for extension)" +msgstr "Centro de Mensajes (no pregunta la extensí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ó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ónico" + +#: ../includes/main.conf.php:290 +msgid "Say caller id in recording emailed" +msgstr "" +"Indica el CallerID en la grabación enviada por correo electró" +"nico" + +#: ../includes/main.conf.php:291 +msgid "Say envelop (date/time) in recording emailed" +msgstr "" +"Indica la etiqueta (tiempo/hora) en la grabación enviada por correo " +"electrónico" + +#: ../includes/main.conf.php:292 +msgid "Delete voicemail when emailed" +msgstr "" +"Eliminar el mensaje de voz una vez enviado por correo electró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ó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ó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ó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ón" + +#: ../modules/help.module:80 +msgid "Action" +msgstr "Acció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úmero del desví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úmero %s debe contener n&uacte;meros marcables (caracteres como " +"'(', '-', y ')' son vá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ña del Buzón de Voz no ha cambiado" + +#: ../modules/settings.module:152 +msgid "Password and password confirm must not be blank" +msgstr "" +"Contraseñ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ñ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ña ha de ser numerica y de longitud %d digitos" + +#: ../modules/settings.module:167 +msgid "Password and password confirm do not match" +msgstr "Contraseñ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ña del Buzón de Voz no ha cambiado" + +#: ../modules/settings.module:233 ../modules/settings.module:238 +msgid "Voicemail email settings not changed" +msgstr "La Contraseña del Buzó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ñ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ña ha de ser numerica y de longitud %s digitos" + +#: ../modules/settings.module:439 +msgid "Voicemail Password:" +msgstr "Contraseña del Buzó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ón de Voz para" + +#: ../modules/settings.module:498 +msgid "Pager Voicemail To:" +msgstr "Buzó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ó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ó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ó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ó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ó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ón de Voz" + +#: ../modules/voicemail.module:412 +msgid "No Voicemail Recordings for Admin" +msgstr "No hay grabaciones en el Buzón de Voz de Admin" + +#: ../modules/voicemail.module:428 +#, php-format +msgid "Voicemail for %s (%s)" +msgstr "Buzó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ó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 Binary files differnew file mode 100644 index 000000000..78d4733ad --- /dev/null +++ b/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.mo 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 index 000000000..7f15c7ac8 --- /dev/null +++ b/fs_selfservice/fri/locale/fr_FR/LC_MESSAGES/ari.po @@ -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 Binary files differnew file mode 100644 index 000000000..3b00bd1f3 --- /dev/null +++ b/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.mo 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 index 000000000..7c9ae9768 --- /dev/null +++ b/fs_selfservice/fri/locale/he_IL/LC_MESSAGES/ari.po @@ -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 Binary files differnew file mode 100644 index 000000000..ff5a92220 --- /dev/null +++ b/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.mo 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 index 000000000..c9d9e44c0 --- /dev/null +++ b/fs_selfservice/fri/locale/hu_HU/LC_MESSAGES/ari.po @@ -0,0 +1,645 @@ +# 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: 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õ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õ" + +#: ../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ö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 Binary files differnew file mode 100644 index 000000000..d5a7da899 --- /dev/null +++ b/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.mo 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 index 000000000..db245f995 --- /dev/null +++ b/fs_selfservice/fri/locale/it_IT/LC_MESSAGES/ari.po @@ -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™ Locator" +msgstr "VmX™ 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™ 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 index 000000000..6b93e2eb0 --- /dev/null +++ b/fs_selfservice/fri/locale/locale.txt @@ -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 Binary files differnew file mode 100644 index 000000000..baa1a113f --- /dev/null +++ b/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.mo 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 index 000000000..0ab45fa35 --- /dev/null +++ b/fs_selfservice/fri/locale/pt_BR/LC_MESSAGES/ari.po @@ -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 index 000000000..24918654b --- /dev/null +++ b/fs_selfservice/fri/locale/readme.txt @@ -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 Binary files differnew file mode 100644 index 000000000..c8ea15216 --- /dev/null +++ b/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.mo 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 index 000000000..f8f0ad324 --- /dev/null +++ b/fs_selfservice/fri/locale/sv_SE/LC_MESSAGES/ari.po @@ -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änd autentisering mot Asterisk:" + +#: ../includes/asi.php:96 ../includes/asi.php:111 +#, fuzzy +msgid "Asterisk command not understood" +msgstr "Asterisk förstod ej omladdningskommandot" + +#: ../includes/bootstrap.php:123 +#, php-format +msgid "To many directories in %s Not all files processed" +msgstr "För må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äver version 4.0 eller hö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åste installeras. Gå 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ällningarna fö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ör localhost " +"eller ip nummret fö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ök" + +#: ../includes/display.php:135 +msgid "Searched for" +msgstr "Sö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örst" + +#: ../includes/display.php:208 +msgid "Last" +msgstr "Sist" + +#: ../includes/login.php:267 +msgid "Incorrect Password" +msgstr "Felaktigt lösenord" + +#: ../includes/login.php:279 +msgid "Incorrect Username or Password" +msgstr "Felaktigt lösenord" + +#: ../includes/login.php:402 ../includes/login.php:411 +msgid "Login" +msgstr "Användarnamn" + +#: ../includes/login.php:419 +msgid "Password" +msgstr "Lösenord" + +#: ../includes/login.php:428 +msgid "Submit" +msgstr "Logga in" + +#: ../includes/login.php:436 +msgid "Remember Password" +msgstr "Kom ihåg lösenord" + +#: ../includes/login.php:451 +#, fuzzy +msgid "Use your <b>Voicemail Mailbox and Password</b>" +msgstr "" +"Använd din <b>Röstbrevlådas nummer och lösenord</b>" + +#: ../includes/login.php:452 +msgid "This is the same password used for the phone" +msgstr "Det är samma lö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ösenord eller behöver hjälp ska du " +"kontakta din vä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ä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äder" + +#: ../includes/main.conf.php:233 +msgid "Schedule wakeup call" +msgstr "Schemalägg väckningssamtal" + +#: ../includes/main.conf.php:234 +msgid "festival test (your extension is XXX)" +msgstr "Festival test (din anknytning är XXX)" + +#: ../includes/main.conf.php:235 +msgid "Activate Call Waiting (deactivated by default)" +msgstr "Aktivera Samtal Väntar" + +#: ../includes/main.conf.php:236 +msgid "Deactivate Call Waiting" +msgstr "Avaktivera Samtal Vä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östmeny inspelning" + +#: ../includes/main.conf.php:240 +msgid "Enable Do-Not-Disturb" +msgstr "Aktivera Stör Ej" + +#: ../includes/main.conf.php:241 +msgid "Disable Do-Not-Disturb" +msgstr "Avaktivera Stö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östbrevlåda (fråga ej efter anknytning)" + +#: ../includes/main.conf.php:245 +msgid "Enter Message Center" +msgstr "Gå till röstbrevlådan" + +#: ../includes/main.conf.php:246 +msgid "Playback IVR Recording" +msgstr "Spela upp rö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äser upp nummret i meddelandet" + +#: ../includes/main.conf.php:291 +#, fuzzy +msgid "Say envelop (date/time) in recording emailed" +msgstr "Läser upp informationen i meddelandet" + +#: ../includes/main.conf.php:292 +msgid "Delete voicemail when emailed" +msgstr "Radera meddelandet när det e-postats" + +#: ../includes/main.conf.php:293 +msgid "Play next message after deleting current message" +msgstr "Spelar upp nä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ä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ä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älla" + +#: ../modules/callmonitor.module:167 +msgid "Destination" +msgstr "Mål" + +#: ../modules/callmonitor.module:169 +msgid "Context" +msgstr "Sammanhang" + +#: ../modules/callmonitor.module:171 ../modules/voicemail.module:332 +msgid "Duration" +msgstr "Lä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ö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östbrevlåda för %s (%s)" + +#: ../modules/help.module:39 ../modules/help.module:68 +msgid "Help" +msgstr "Hjälp" + +#: ../modules/help.module:70 +#, php-format +msgid "Help for %s (%s)" +msgstr "Hjälp för %s (%s)" + +#: ../modules/help.module:77 +msgid "Handset Feature Code" +msgstr "Kortkoder" + +#: ../modules/help.module:80 +msgid "Action" +msgstr "Utför" + +#: ../modules/settings.module:61 ../modules/settings.module:667 +msgid "Settings" +msgstr "Inställningar" + +#: ../modules/settings.module:125 +msgid "Call forward number not changed" +msgstr "Vidarekopplingsnummret ej ändrat" + +#: ../modules/settings.module:126 +#, php-format +msgid "" +"Number %s must contain dial numbers (characters like '(', '-', and ')' are " +"ok)" +msgstr "" +"Nummer %s ska innehålla nummer (tecknen; '(', '-' och ')' är " +"tillå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ösenord för röstbrevlådan har inte ändrats" + +#: ../modules/settings.module:152 +msgid "Password and password confirm must not be blank" +msgstr "" +"Lösenord och bekräfta lösenord får inte vara tomma" + +#: ../modules/settings.module:157 +#, fuzzy, php-format +msgid "Passwords must be all numbers and greater than %d digits" +msgstr "Lösenordet måste vara %d siffror" + +#: ../modules/settings.module:162 +#, fuzzy, php-format +msgid "Passwords must be all numbers and only %d digits" +msgstr "Lösenordet måste vara %d siffror" + +#: ../modules/settings.module:167 +msgid "Password and password confirm do not match" +msgstr "Lösenord och bekräftat lösenord stä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 är ej läsbar" + +#: ../modules/settings.module:223 +#, fuzzy +msgid "Voicemail email and pager address not changed" +msgstr "Lösenord för röstbrevlådan har inte ändrats" + +#: ../modules/settings.module:233 ../modules/settings.module:238 +#, fuzzy +msgid "Voicemail email settings not changed" +msgstr "Lösenord för röstbrevlådan har inte ändrats" + +#: ../modules/settings.module:385 +msgid "Language:" +msgstr "Språk:" + +#: ../modules/settings.module:408 +#, fuzzy +msgid "Call Routing" +msgstr "Inställningar fö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ösenordet måste vara %s siffror" + +#: ../modules/settings.module:434 +#, fuzzy, php-format +msgid "Passwords must be all numbers and at least %s digits" +msgstr "Lösenordet måste vara %s siffror" + +#: ../modules/settings.module:439 +#, fuzzy +msgid "Voicemail Password:" +msgstr "Lösenord för röstbrevlåda" + +#: ../modules/settings.module:445 +msgid "Enter again to confirm:" +msgstr "Bekräfta:" + +#: ../modules/settings.module:492 +#, fuzzy +msgid "Email Voicemail To:" +msgstr "Röstbrevlåda" + +#: ../modules/settings.module:498 +#, fuzzy +msgid "Pager Voicemail To:" +msgstr "Röstbrevlåda" + +#: ../modules/settings.module:558 +msgid "Audio Format:" +msgstr "Ljud format:" + +#: ../modules/settings.module:561 +msgid "Best Quality" +msgstr "Bästa kvaliten" + +#: ../modules/settings.module:562 +msgid "Smallest Download" +msgstr "Minsta storlek" + +#: ../modules/settings.module:570 +msgid "Voicemail Settings" +msgstr "Inställningar för Röstbrevlåda" + +#: ../modules/settings.module:611 +msgid "Call Monitor Settings" +msgstr "Inställningar fö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ående samtal:" + +#: ../modules/settings.module:669 +#, fuzzy, php-format +msgid "Settings for %s (%s)" +msgstr "Inställningar för %s (%s)" + +#: ../modules/settings.module:705 +msgid "Update" +msgstr "Uppdatera" + +#: ../modules/voicemail.module:45 +msgid "Voicemail" +msgstr "Röstbrevlåda" + +#: ../modules/voicemail.module:164 +msgid "A folder must be selected before the message can be moved." +msgstr "En mapp måsta vä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åste vä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östbrevlåda" + +#: ../modules/voicemail.module:362 +msgid "Message" +msgstr "Meddelande" + +#: ../modules/voicemail.module:377 +msgid "Voicemail recording(s) was not found." +msgstr "Rö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å inställningssidan, ändra röstbrevlådans " +"ljudformat. Det är nu %s" + +#: ../modules/voicemail.module:405 +#, fuzzy +msgid "Voicemail Login not found." +msgstr "Hittar inte röstbrevlåda." + +#: ../modules/voicemail.module:406 +msgid "No access to voicemail" +msgstr "Inget tillträde till röstbrevlådan" + +#: ../modules/voicemail.module:412 +msgid "No Voicemail Recordings for Admin" +msgstr "Inga röstmeddelande för Admin" + +#: ../modules/voicemail.module:428 +#, fuzzy, php-format +msgid "Voicemail for %s (%s)" +msgstr "Röstbrevlåda fö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ör röstbrevlåda" + +#: ../modules/voicemail.module:718 +#, php-format +msgid "Permission denied on folder %s or %s" +msgstr "Saknar rättigheter fö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ösenordet må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änd Login" + +#~ msgid "help" +#~ msgstr "hjälp" + +#~ msgid "not a directory or not readable" +#~ msgstr "inte en mapp eller ej läsbar" + +#~ msgid "Use your" +#~ msgstr "Använd din" + +#~ msgid "for" +#~ msgstr "för" + +#~ msgid "Password must be all numbers and 4 digits" +#~ msgstr "Lösenordet måste vara 4 siffror" + +#~ msgid "Check voicemail audio format on settings page to change from" +#~ msgstr "" +#~ "Ändra inställningar för röstbrevlådans ljud " +#~ "format för att ändra från" + +#~ msgid "on the server" +#~ msgstr "på 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 index 000000000..2dc355cb3 --- /dev/null +++ b/fs_selfservice/fri/misc/audio.php @@ -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 index 000000000..7a5352805 --- /dev/null +++ b/fs_selfservice/fri/misc/popup.css @@ -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 index 000000000..1546adcc0 --- /dev/null +++ b/fs_selfservice/fri/misc/recording_popup.php @@ -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 index 000000000..61ef653a2 --- /dev/null +++ b/fs_selfservice/fri/modules/VmX.module @@ -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™ 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™ 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 index 000000000..25924d52d --- /dev/null +++ b/fs_selfservice/fri/modules/callmonitor.module @@ -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> + "; + } + + $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 index 000000000..75d1d5c4e --- /dev/null +++ b/fs_selfservice/fri/modules/featurecodes.module @@ -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 index 000000000..85a1f3776 --- /dev/null +++ b/fs_selfservice/fri/modules/followme.module @@ -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> </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> </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> </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> </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> </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 index 000000000..89dc903bf --- /dev/null +++ b/fs_selfservice/fri/modules/phonefeatures.module @@ -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 index 000000000..314ce40c5 --- /dev/null +++ b/fs_selfservice/fri/modules/settings.module @@ -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 index 000000000..aad14564f --- /dev/null +++ b/fs_selfservice/fri/modules/voicemail.module @@ -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 . "'> " . $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 index 000000000..cd97aa285 --- /dev/null +++ b/fs_selfservice/fri/theme/global.css @@ -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 index 000000000..1c28e7a5a --- /dev/null +++ b/fs_selfservice/fri/theme/header.css @@ -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 index 000000000..a7939a454 --- /dev/null +++ b/fs_selfservice/fri/theme/iefixes.css @@ -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 Binary files differnew file mode 100644 index 000000000..46a5848be --- /dev/null +++ b/fs_selfservice/fri/theme/images/arrow-asc.gif diff --git a/fs_selfservice/fri/theme/images/arrow-desc.gif b/fs_selfservice/fri/theme/images/arrow-desc.gif Binary files differnew file mode 100644 index 000000000..6f4e5e6e7 --- /dev/null +++ b/fs_selfservice/fri/theme/images/arrow-desc.gif diff --git a/fs_selfservice/fri/theme/layout.css b/fs_selfservice/fri/theme/layout.css new file mode 100644 index 000000000..a398714ee --- /dev/null +++ b/fs_selfservice/fri/theme/layout.css @@ -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 Binary files differnew file mode 100644 index 000000000..b2d23d7a6 --- /dev/null +++ b/fs_selfservice/fri/theme/logo.gif diff --git a/fs_selfservice/fri/theme/main.css b/fs_selfservice/fri/theme/main.css new file mode 100644 index 000000000..6b9ba9405 --- /dev/null +++ b/fs_selfservice/fri/theme/main.css @@ -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 index 000000000..907851b21 --- /dev/null +++ b/fs_selfservice/fri/theme/navigation.css @@ -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 index 000000000..12b5a3be7 --- /dev/null +++ b/fs_selfservice/fri/theme/page.tpl.php @@ -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> + <?php print($ari_version) ?> <?php echo _("Version")?><br> + · <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 Binary files differnew file mode 100644 index 000000000..8f096840c --- /dev/null +++ b/fs_selfservice/fri/theme/spacer.gif diff --git a/fs_selfservice/fri/theme/text.css b/fs_selfservice/fri/theme/text.css new file mode 100644 index 000000000..9625ca0bb --- /dev/null +++ b/fs_selfservice/fri/theme/text.css @@ -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 index 000000000..7f313a138 --- /dev/null +++ b/fs_selfservice/fri/version.php @@ -0,0 +1,10 @@ +<?php + +/** + * @file + * version + */ + +$ARI_VERSION = 'FreePBX 2.3'; + +?> |