Ajax Poll Script
Ajax Poll Admin
Ajax Poll DX
Address Book Script
Form2DB
PayPal IPN + eProduct Delivery Script
Ajax Likes-Dislikes Counter
Text Ad Script
Lead Follow-Up Database Script
Ajax ContactUs Script
URL Shortening Script
AdFreely -Ad Board Script-
Protect HTML Script
Fade-In Slideshow Script

Address Book Script

Ver 1.18 ( Security patch applied )
AB201-118

Download
Address Book
Address Book
  • First Name
  • Last Name
  • Company
  • Tel
  • Fax
  • Cell
  • Email
  • Street1
  • Street2
  • City
  • State
  • Zip
  • Address Book Mini
    Address Book Mini
  • First Name
  • Last Name
  • Department
  • Contact Email
  • Telephone Number
  • Contact Book Mini
    Contact Book Mini
  • Full Name
  • Full Address
  • Mobile No
  • Email ID/ Facebook ID
  • Comments
  • Company Directory
    Company Directory
  • Business Name
  • First Name
  • Last Name
  • Tel
  • Cell
  • Email
  • Street1
  • Street2
  • City
  • State
  • Zip
  • Country
  • Note
  • Customer List
    Customer List
  • First Name
  • Last Name
  • Home Phone
  • Home Phone2
  • Mobile Phone
  • Other Phone
  • Primary Phone
  • Business Phone
  • Anniversary
  • Birthday
  • Categories
  • Email
  • Email Display Name
  • Home Street
  • Home Street2
  • Home City
  • Home State
  • Home Zip
  • Note
  • Year
  • ... 2 more fields
    : Scripts generated by Address Book Script Builder
    : Scripts generated by Form2DB Builder

    This is a free Address Book PHP script with a MySQL database. This script allows users to search, view, add, edit, and delete address entries from a web browser. Each user can have a different login username.

    It's very easy to add/remove fields to/from the script. In fact, I've seen others using this script to store something totally different from addresses.

    You can customize Address Book Script online and/or manually.

    To manually customize it, please see Customization Quick Guide.

    To customize online, use Address Book Builder, which guides you through the steps of building a custom version of Address Book Script. To start Address Book Builder, click this link.

    Ajax Fileup Addon
    for Address Book Script

    License

    GPL

    Demo

    Installation Guide

    Quick Feedback to Tom, the developer

    If you have any suggestions or find any problems, please leave them as a comment down below. we'd appreciate the feedback!

    Name:
    Comment:
    John Underwrir
    Yesterday
    Is there a way to incorporate somewhere in the code to make a PDF or similar report for a person? If I wanted to print someone's information. Any information on this would be great! If you know a program or a site that has directions on how to do this.
    Tom
    Yesterday
    Hi John,

    Here is a pdf library that allows you to create PDF files in php.
    http://www.fpdf.org/

    It's been used widely for more than 10 years. It may not have latest PDF features but it has an excellent track record.
    Nicola
    5 days ago
    Tnx Tom! In effect the reporting error was depending by the sushosin patch on the server
    Tom
    4 days ago
    All right!
    Timothy Kelpling
    6 days ago
    I know this is kind of a weird question but do you happen to know if it is possible to put examples inside of the search field? For example if one of the search criteria is Phone Number: would it be possible to put example 123-455-6789 inside of the box? As the user types it disappears? Just a thought to see if it was possible.
    Tom
    5 days ago
    Hi Timothy,
    I found a jquery plugin you are looking for:
    http://remysharp.com/wp-content/uploads/2007/01/input_hint.html
    Randy Smith
    6 days ago
    All of a sudden we just got an error after doing nothing to the database? It happened randomly with this error: Fatal error: Call to undefined function mb_regex_encoding() in /home/mccombpo/public_html/codelib/slib/CMBStr.inc.php on line 30
    Tom
    6 days ago
    Something horrible must have happened to your PHP. Maybe, somebody messed up php.ini? By the way, when a harddisk of your web server is full, PHP tends to behave crazy. You may want to check if your harddisk has enough space.
    Nicola
    2014-04-15
    Tnx Tom for your great work! We're trying it in these days but we always have this server error that it occurs when trying to add or edit a record:

    ALERT - configured request variable name lenght limit exceeded - dropped variable '_sc=_this/seach_pxy&_ssc=edit_init&key:def:adress_id=1001&_y'
    ....
    Sorry, but we're not very experienced with php :-)
    Any idea?
    Tom
    2014-04-16
    Hi Nicola,

    > configured request variable name lenght limit exceeded - dropped variable

    This is very strange. Probably it's saying the parameters(_sc=_this/seach_pxy&_ssc=edit_init&key:def:adress_id=1001&_y) is too long but it's no way long. I must say the web server is not running normally. You should ask your web administrator to check the web server.
    Manuel
    2014-04-14
    Thanx very much Tom!
    Tom
    2014-04-14
    You are welcome :)
    Randy Smith
    2014-04-13
    Just curious on the edit page- we are using that as a (view entry) button now. When we open this is there anyway to edit the layout to where you can have multiple things across the page? For example First Name and Last name be beside each other instead of each item being on a separate line?
    Tom
    2014-04-14
    Hi Randy,

    >For example First Name and Last name be beside each other instead of each item being on a separate line?

    Yes. Please edit the template, web/staff/tpl.(table-name).detail.inc.php
    Manuel
    2014-04-12
    Sorry to bother you again Tom, i did add a code in the main page with a livea ajax style search with an external file doing the mysql query and returning the result....when i search is returning the contact information...now im trying to have the contact ID as a link that when you click on it open a page like the Edit section of the contact...ill do a popup, etc...but is there any variable that i can pass to a function to return thet contact id information. As far as i can see in the Edit button is passing it as post and probably i need to do a Get function in the link. Something that i can pass like index.php?ID=1111

    Thanx again!
    Tom
    2014-04-13
    Yes, both the search page and input page display IDs, it should be very easy to obatin the ID of a particular record if you take a look at the templates. In both web/staff/tpl.(table-name).search.inc.php and web/staff/tpl.(table-name).detail.inc.php, you can display IDs with this php function:
    <?php echo $hm->Zb( 'rs:def:addresses_id' ); ?>
    Note: You should change 'addresses' to your table name.
    Manuel
    2014-04-04
    Thanx very much Tom!
    Tom
    2014-04-05
    You are welcome :)
    Manuel
    2014-04-03
    Hi Tom, thanx for the reply...but i was looking to somehow add the session in a php file i have created in the same staff folder which i do not wish someone access unless is logged in in the address book.
    Thanx!
    Tom
    2014-04-04
    OK, put this code at the top of your page.
    <?php
    error_reporting( 22527 );
    $sig = "AuthSessionKey:(" . dirname(__FILE__) .
    "/app/cls_auth_base.inc.php)";
    @session_start();
    if (!(
    ( isset($_SESSION[$sig] ) ) &&
    ( $_SESSION[$sig] == $sig )
    )) {
    echo "Unauthorized Access";
    exit;
    }
    ?>
    If you are not logged in, you will see "Unauthorized Access"
    JR
    2014-04-02
    HI Tom,
    Address Book Mini can upload photo or attach file?
    Thanks
    JR
    Tom
    2014-04-03
    Hi JR,
    >Address Book Mini can upload photo or attach file?
    If you mean Address Book Mini is compatible with fileup-addon, yes, it works on Mini, too.
    Randy Smith
    2014-04-02
    Hello Tom! I don't know if this is possible but is there anything to add to the code that will help with printing? A lot of times we have a person/database entry that we would like to print out but the text is very large, scattered, and prints on 2-3 pages per person. Is there anything to made the entry print one page in a clean professional looking format? Thanks!
    Tom
    2014-04-03
    You can edit the template, web/staff/tpl.(table-name).detail.inc.php. I templatized it so people can change the style to their liking.
    Mac
    2014-04-02
    Hi Tom,
    I would like to add 2 fields in the same search page ,
    first field for the contact creation date and time
    2nd for the staff id (who created the contact)
    Thanks alot.
    Tom
    2014-04-02
    Hi Mac, This article explains how to add serach criteria input box.

    http://www.phpkobo.com/address_book.php#add_a_search_criteria
    Manuel
    2014-04-01
    Hi, this scripts is great! Is there any way to add a code to a page so only show it if the admin/staff is logged in? Thanx!
    Tom
    2014-04-02
    Hi Manuel, in the templates ( any files that starts with "tpl." ), you can use IsAdmin function to hide things from non-Admin users like
    <?php if ( $sys->IsAdmin() ) { ?>

    ...anything here will not be shown to non-admin users...

    <?php } ?>
    Jonnel
    2014-04-01
    Hi Tom, thank you for the immediate response. I know now what to do. Another things is if I want to view both of them on the same page because now I need to access them separately. I appreciate if u give me an idea how to link those two, for example, like showing both of them within the top_menu section. I tried to read the source code to modify it but it gets me nowhere.
    Tom
    2014-04-02
    I really want to publish how to merge two Address Book script but there are few gotchas. That's why I'm holding off until I upgrade the script. For now, I leave it to people who are willing to dig into the code and figure it out themselves.
    Jonnel
    2014-03-31
    Hi Tom, I created two Address Books with different fields and database, my question is would it be possible to merge the two using the same logins? or rather make a link on the menu pointing to another address book.
    Tom
    2014-03-31
    Hi Jonnel

    >would it be possible to merge the two using the same logins?

    It's possible if you put both of them in the same database. To put them in the same database, first you need to rename the table names so that they don't conflict.
    Open web/codelib/cfg/config.table_name.inc.php You will find the table name definitions like this:
    define( 'TBL_STAFF', TBL_PREFIX . 'staff' );
    define( 'TBL_ADDRESSES', TBL_PREFIX . 'addresses' );
    Change it to
    define( 'TBL_STAFF', 'tbl_shared_staff' );
    define( 'TBL_ADDRESSES', tbl_1_addresses' );
    You also need to change the table names in the database using phpMyAdmin or some kind of database management program.
    On the other copy of address book script, change the table name definitions like this:
    define( 'TBL_STAFF', 'tbl_shared_staff' );
    define( 'TBL_ADDRESSES', tbl_2_addresses' );
    Notice that TBL_STAFF has the same table name tbl_shared_staff. Again don't forget to change the table names in the database accordingly. Now you are ready to merge two of them. Copy all the tables into one database and modify the database settings in config/config.db.inc.php accordingly.
    Mac
    2014-03-31
    Hi Tom,
    how can i add a new user type?
    Thanks,
    Tom
    2014-03-31
    Hi Mac,
    Sorry, theres isn't easy way to add a new user type. It's one of things I have to add in the next version!
    Ryan Smith
    2014-03-29
    Tom- That did not solve the problem. That actually made it worse. I shortened the width and it discombobulated them even more. I like the page length now. The text inside "Search Criteria" is very large and I'm trying to figure out how to make the boxes and text smaller.
    Tom
    2014-03-30
    >The text inside "Search Criteria" is very large

    Now I see what you mean. Then you can make the font size small. Enclose the search criteria table with <div id='search-criteria'>... </div>, then put this style in the <head> section of the page.
    <style>
    #search-criteria table tr td {
    font-size:12px;
    }
    </style>
    This will make the font size of text inside search criteria 12px.
    Ryan Smith
    2014-03-29
    Hello Tom. Is there a way to insert something into the code somewhere to reduce the size of the search page. Every computer I log into the search boxes are very large and discombobulated. I am getting complaints because it looks sloppy. Thanks in advance!
    Tom
    2014-03-29
    Hi Ryan,

    >the search boxes are very large and discombobulated.

    Is it because the page always stretches to the browser width? If so, maybe you can fix the width of the search page by specifing it in the template. To do so, open web/staff/tpl.(table-name).search.inc.php in a text editor and find the following line:
    <div id='container'>
    Add style='width:800px' to the div tag like
    <div id='container' style='width:800px'>
    This will set the page width to 800px.
    Evan Ramge
    2014-03-20
    Hey Tom! Thanks again for helping me with the return results part below. I am still struggling especially since I am new to PHP with having select results show a red value instead of the standard black text. Say I search the "social security number" of 012-33-4567 I want only that data entry for that person to be red. Any suggestions?
    Tom
    2014-03-21
    Hi, this is not something I can write the step-by-step instruction about without coding and testing. So, I'll write an outline of procedures. First, You need to obtain the text you entered in the "social security number" search box. Second, get the value of "social security number" in a record( each row in the search result table ), and then check if the search word is in the value. You can use the strpos function to test it. If you find the search word in the value, then add "red background" to the row<tr> like
    <tr style='background-color:red]'>
    Evan Ramge
    2014-03-18
    Hi Tom- I was wondering if you are able to have the search field blank instead of showing everyone in the database. I would rather it show 0 people until we search for a person in the database and it returns results. That would be ideal. I just don't know where to go or what to edit.
    Tom
    2014-03-18
    Hi, Evan,

    >would rather it show 0 people until we search for a person in the database and it returns results.

    OK, Here is a solution:

    (Step 1) Open web/staff/app/cls_ps_(table-name).inc.php in a text editor.

    (Step 2) Insert the following line below "case "search":"

    $prev_cmd = $sc->GetPrevPageID();

    The result should look like:

    case "search":
    $prev_cmd = $sc->GetPrevPageID();

    (Step 3) Insert the following lines above "break; case "search_pb":"

    if ( $prev_cmd == 'search_init' ) {
    $this->SetDisplay( "def:", false );
    }

    The result should look like:

    if ( $prev_cmd == 'search_init' ) {
    $this->SetDisplay( "def:", false );
    }

    break;

    case "search_pb": //-- [Search Button]

    Done!
    Eric
    2014-03-17
    Great job Tom!
    Consider add reporting in pdf format?
    Tom
    2014-03-17
    Hi Eric, I think pdf is a good idea. I'll go csv export first and then add pdf next. Thanks for your suggestion!
    Mac
    2014-03-17
    Hi Tom
    Thanks for This greet work
    I want to remove (add new ) and (Delete) buttons from the non admin staff.
    Tom
    2014-03-17
    Hi Mac
    If you just want to remove the buttons, you can do so in the template, web/staff/tpl.(table-name).search.inc.php. But removing buttons does not mean disabling it. Before editing the template, make sure you disable it first. Now, I'll explain how to disable it.

    To prevent non-administrators from adding/editing/deleting records, open web/staff/app/cls_ps_(--table-name--).inc.php and add
    if ( !$this->sys->IsAdmin() ) exit;
    after
    case 'edit_inp':
    The result should look like:
    case 'edit_inp': if ( !$this->sys->IsAdmin() ) exit;
    Do the same for the following lines, too.
    case 'edit_done':
    case 'reg_inp':
    case 'reg_done':
    case 'del_multi':
    nonull
    2014-03-14
    i'm just wondering if it's possible to change order of menus. is it...?
    Tom
    2014-03-14
    Hi, If you mean menu items in the top menu, then you can edit them in web/staff/include/df.top.menu.inc.php.
    Brandon Smith
    2014-03-11
    Thanks Tom for the information. I would like this pop-up menu to be on the main bar that can be scrolled on the main search page. I have looked over many of the J-Query Popup menu's and I really don't know how to get this implemented to work with your code. I know this is not your job/responsibility. I am working on this for the department for free and really don't have the resources to pay someone to do it for me. If you can maybe walk me through the steps that would be awesome. If you need money, I can try to work something out.
    Tom
    2014-03-12
    Hi, I think the subject is a bit too specific to discuss here. Would you PM me at "tom[ at ]phpkobo.com"?
    Brandon Smith
    2014-03-10
    Thanks Tom- That was really helpful! I appreciate you adding the information on what to do since I am relatively new to PHP. However, I do not know where I would add any of the Javascript to your script to make this work. Would I have to add it each time for each new entry? Is there a way to have it happen each time with just a simple Java code? Any help/steps would be great so I can make this work correctly. Thanks!
    Tom
    2014-03-11
    >Would I have to add it each time for each new entry?

    No. You need to add it only once. Since you want to have a popup in edit page, you put the javascript on web/staff/tpl.(table-name).detail.inc.php.
    Brandon Smith (Question 2)
    2014-03-09
    Our second question deals with warrants. If we have a warrant faxed to our office we try to input the information into the system so if an officer searches a name it will show they have outstanding warrants. Is there a way to turn certain search results by name the color red such as the whole box or the name? This way the officer knows he/she is dealing with a possibly dangerous person? Any information would be greatly appreciated!
    Tom
    2014-03-10
    In the template, web/staff/tpl.(table-name).search.inc.php, you can find many placeholders like <?php echo $hm->zb('rs:def:(--field-name--)'); ?>. The part, $hm->zb('rs:def:(--field-name--)') returns the corresponding field value. You can assign it to a string or pass it to a function for further processing. For example, you can search certain names in the value, and if any, you can enclose it with <span> tag to highlight it in red.
    Brandon Smith
    2014-03-09
    Okay Tom I will post the question here. It might be a tricky one and I'm not sure quite how to do this. Any help would be greatly appreciated. The police department loves your system as a in-house database and has made our jobs 100 times better. Our question is 2 parts to make this database run completely efficiently. Right now anyone we come in contact with on a normal day is imputed into the system and we fill out the required fields that we have selected during install. Our "notes" section is very long and takes up several lines so the other officers can see what was done with that particular incident. Is there anyway to make it where on the scroll bar instead of viewing the notes and taking up a large amount of room we can provide a "Click here for notes" link and a separate pop-up box would come up with all the notes? If you understand what I am trying to do.
    Tom
    2014-03-10
    >we can provide a "Click here for notes" link and a separate pop-up box would come up with all the notes?

    You can do it with javascript. There are many jQuery popup libraries out there, which allow you to open a text in a popup window. For more information about jquery popups, please google "jquery popup window"
    Greg
    2014-03-06
    Hey Tom,

    Great job! Adress book script work awesome on one of my hosts, but on second (after I login) if I click on any link (like add record for example) i'm getting redirected back to login page, can you advise?
    Tom
    2014-03-06
    Hi Greg,

    >i'm getting redirected back to login page

    Your PHP session is not working, so the script can't remember your login status. That's why you got kicked out of the admin panel. Please ask your web administrator to fix the PHP session.
    Brandon Smith
    2014-03-05
    Tom, do you have an email I could possibly talk to you with? I didn't know if the admin one in the script was to you. Thanks!
    Tom
    2014-03-06
    Hi, Please post your questions here, so people can share it. Thanks!
    Cindy
    2014-03-05
    Hi Tom, can you point me to the files to move the scroll bar on the search results to the top rather than the bottom of the results. Thank you
    Tom
    2014-03-05
    Hi, The script doesn't concern it. Browsers display the scroll bar on the bottom automatically whenever it's needed.
    Brandon Smith
    2014-03-04
    Thank you Tom! That did work however, whenever they click on "edit" for example it takes them to a white blank page. Is there a way for it to take them to the error message for example: "Unauthorized Access" or something similar to one of the error messages? Thanks for your help! It's greatly appreciated.
    Tom
    2014-03-05
    You can show the edit button to only administrators. To do so, open the template ( [b]web/staff/tpl.(--table-name--).search.inc.php ) and enclose the button with php commands like this:
    <?php if ( $sys->IsAdmin() ) { ?>

    ...anything here will not be shown to non-admin users...

    <?php } ?>

    That way you can prevent non-admin users from clicking the edit button.
    Brandon Smith
    2014-03-02
    Hi Tom! I was wondering if you could answer a question for me. I work for a police department who is using this on their website as a database for phone numbers and records of people. I am helping them set this system up and have loved every bit of it and praised this site/script to our administration. My question is, all of the officers have access under "Staff" and I have "Administrator" access to the customer list. I was wondering if there is a way so that I am the only one who can edit/add/delete records and the other officers can see my entries into the customer list? If this is possible I would love to know. Right now we all can edit/add/delete.
    Tom
    2014-03-04
    Hi Brandon,

    To prevent non-administrators from adding/editing/deleting records, open web/staff/app/cls_ps_(--table-name--).inc.php and add
    if ( !$this->sys->IsAdmin() ) exit;
    after
    case 'edit_inp':
    The result should look like:
    case 'edit_inp': if ( !$this->sys->IsAdmin() ) exit;
    Do the same for the following lines, too.
    case 'edit_done':
    case 'reg_inp':
    case 'reg_done':
    case 'del_multi':
    hans
    2014-02-28
    can not edit the data in the adresbook.
    Just the staff members
    Tom
    2014-03-01
    Hi Hans,

    >Just the staff members

    Yes, only staff members can edit the data. That's by design.
    Brett
    2014-02-23
    Hello, this script is very close to what I'm looking for, so thanks in advance! Would it be relatively easy to set up a search field that would search for a range, ie: the database would have a "min" and "max" field for each entry, and a search for "5" would turn up an entry (or entries) that has/have a "min" of "2" and a "max" of "7" (or "1" and 8", but not "6" and "12", etc)? Thanks!
    Tom
    2014-02-24
    Hi Brett,

    That's a very unique feature. I can't imagine what it is used for. Anyway, I think it's easy to add a feature like that.
    Erika
    2014-02-23
    is there a page that is a public listing? A non-staff member who can search and browse and search the address book without having to log in?
    Tom
    2014-02-24
    Hi Erika,

    >is there a page that is a public listing?

    No, It doesn't but I think that's a good feature to implement :) Thank you for your suggestion!
    Jason
    2014-02-21
    Ahhh thats the darn file! Many thanks Tom!
    Tom
    2014-02-22
    You are welcome : )
    David
    2014-02-20
    Tom, great job on the Address Book. Keep up the great work....!
    Tom
    2014-02-21
    Thank you!
    Jason
    2014-02-20
    I've tried the builder & tried following your manual steps to no avail, what we are looking at is having more 'titles' (step 2 on the builder)

    Also thanks for the prompt reply!
    Tom
    2014-02-21
    OK, so you just need to add more links on the top menu. Then you can edit the top menu in web/staff/include/df.top.menu.inc.php.
    Jason
    2014-02-19
    Just wanted to 1st off say thanks for this amazing script it has saved me the trouble of making one for our internal use.

    but I have a bit of a picky boss, and am wondering the following, how much of a pain in the _____ is it to have more then 1 menu item's?, for example we have 13 locations all over Canada, we'd LIKE to have each location as its own 'title' (don't know why they want that when you've made a great Search feature... but I do as I'm told) is such a think possible? I've been looking at how to do it but can't seem to get it made & working :(
    Tom
    2014-02-20
    Hi Jason,

    >to have more then 1 menu item's?

    You mean pulldown menus? If so, you can add as many pulldown menus to the table as you want. Try address book builder. It allows you to add any number of pulldown menus!
    Jack
    2014-02-17
    I want to manipulate the size of the columns bacause one column has a lot of info and fill the table cell, i want to make it to look like a row
    I was working to manipulate by css but couldnt so where you define the size of the coulmns of the table????
    Tom
    2014-02-17
    Hi Jack,

    >I want to manipulate the size of the columns

    You can specify the width of each column in the template (web/staff/tpl.(table-name).search.inc.php)
    Find <th> tag for the column and insert style='width:(--some number--)px'. For example,
    <th style='width:300px;'>....</th>
    Derek
    2014-02-17
    Hey Tom, thank you for the script. Will you be implementing a feature to store the password in the staff table encrypted instead of plain text?
    Im using the addressbook to store a list of sports clubs address, phone, website and a list of members, their details, associated club. Thinking of introducing a seperate table to cut down on entering too much duplicate data.
    Tom
    2014-02-17
    Yes, it's my to-do list!
    Jay
    2014-02-15
    Just wanted to say thanks for the script!!
    The company I work for does website's for non-profit groups and have been looking for a quick dirty way to keep track of companies who do donations and such, with your notes section this fit perfectly!!
    Tom
    2014-02-15
    You are welcome : )
    Cindy
    2014-02-15
    Me again. I wanted to add a field called 'Becker' so I followed your instructions in the customize section to copy a field. I receive the following error on my new field: Notice: Use of undefined constant RSTR_BECKER - assumed 'RSTR_BECKER' in /contacts/codelib/asc/df.fl.psi_contacts.inc.php on line 266
    I added the field in my table and added the array in the asc file.

    This is the code:
    /contacts/staff/tpl.psi_contacts.detail.inc.php
    <td class='column_caption'>
    <?php if ( $b_reg || $b_edit ) { ?><span class="required"></span><?php } ?>
    <?php echo RSTR_BECKER; ?> :
    </td>
    <td class='column_value'><?php echo $hm->Zb('rs:def:becker'); ?>

    I also defined a selection list

    Any idea? Thanks Tom
    Tom
    2014-02-15
    OK, open web/codelib/cfg/res.eng.app.inc.php in a text editor and add the following line:
    define( 'RSTR_BECKER', "Becker!" );
    Danniel
    2014-02-15
    I have like this!
    Tom
    2014-02-15
    Glad to hear that!
    Jack
    2014-02-13
    Hi Tom,
    I want to reduce the tables row height but i dont find it in css?
    Can you tell me where to modify it???
    Thank you!!
    Tom
    2014-02-14
    Hi Jack,

    >I want to reduce the tables row height

    I didn't specify the height of rows so it just adjusts to the font size. You can specify the font size in the <tr> tag like
    <tr style='font-size:10px'>
    Cindy
    2014-02-12
    Got my contact list all set up. Imported in 4500 or so records. No problem. However, I get this notice, any idea?

    Notice: Undefined index: A in /home/pathfi16/public_html/contacts/codelib/asc/cls_fl_aso.inc.php on line 134

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/pathfi16/public_html/contacts/codelib/sys/CMySQL.inc.php on line 247

    Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /home/pathfi16/public_html/contacts/codelib/sys/CMySQL.inc.php on line 274
    Tom
    2014-02-13
    >Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /home/pathfi16/public_html/contacts/codelib/sys/CMySQL.inc.php on line 274

    Uh-oh! Something is going wrong here. The error message indicates that the script didn't execute a proper SQL statement. Why didn't it execute a proper SQL statement? Well, there are many things that possibly cause a bad SQL. If you started seeing the error messages after you imported data into the database, I suspect some of database fields got invalid data. First backup the database. Then, delete records gradually until you get no error messages. You may find out which records are causing the mulfunction.
    Giannis
    2014-02-11
    Hi Tom,
    I dont want to add the contacts manually for the first time so i decide to import a csv file in mysql database but i saw that the 2 fields that i made <dropdown list box> were data like this S1001,S1020,S1017.. so where to find the convention of this data (S1001,S1020,S1017.. ) with the dropdownlist box in order to store the data (S1001,S1020,S1017.. ) and they appear correct in the view???
    For example in Department Field S1001 corresponds to Marketing, S1020 Finance

    Thank you in advance
    Tom
    2014-02-11
    Hi Giannis,

    >so where to find the convention of this data

    You can find it in web/config/config.selection.inc.php
    Cindy
    2014-02-09
    Pretty cool script. How should users clear their search fields quickly without having to manually erase entry in a field.
    Tom
    2014-02-10
    Hi Cindy,

    >quickly without having to manually erase entry in a field

    Just click a menu item in the top menu!
    Allyn
    2014-02-09
    OK, boy am I stupid. I see it Tom, disregard.
    Tom
    2014-02-10
    All right!

    Customization Quick Guide

    Important Note: The guide assumes that the table name in the script is "Address"

    Yes, it always used to be that way. ( for 4 years! )

    But the thing has changed. Address Book Builder v1.1 or later allows users to choose any name for the table, so the table name is no longer always "address."

    Before you start reading the guide, it's good idea to make sure what table name is used in your script. To do so, use phpMyAdmin to check the table names. There should be two tables. one is "staff", which stores the staffs data. And the other one holds your data.

    Monday, August 12, 2013

    Address Book Script: Converting a Text Field to a Date Field

    To convert a text field to a date field, open web/codelib/asc/df.fl.(table-name).inc.php, and find the text field that you want to modify.

    The following example is a typical text field definition:

    (example)

    'last_name'=>array(
    XA_CLASS=>'CVText',
    XA_CAPTION=>RSTR_LAST_NAME,
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>36,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    

    Edit the value of XA_CLASS and XA_SEARCH, and add XA_FORMAT line like shown below:

    'last_name'=>array(
    XA_CLASS=>'CVDateTime',
    XA_CAPTION=>RSTR_LAST_NAME,
    XA_FORMAT=>'Y-m-d H:i:s',
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>36,
    XA_SEARCH_OP=>'s%',
    XA_SEARCH_OP=>'s=',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    

    Lastly, change the data type of the field in the MySQL database from VARCHAR to DATETIME.

    Wednesday, April 24, 2013

    Address Book Script : Editing options in a dropdown listbox

    To edit the options of a dropdown list box generated by Address Book Builder, open web/config/config.selection.inc.php in a text editor. In the following example, three options are defined for the "State" dropdown list box.

    (example)

    define( 'SEL_STATE', "
    S1001=California
    S1002=New York
    S1003=Florida
    " );
    

    The format of options are a list of key-value pairs. The keys are stored in the database and the values are shown in the dropdown list box. You may freely add new key-value pairs to the list. Please make sure that all keys are unique and that the length of the key is equal to or less than the length of the field in the database.

    (example)

    Key=Value
    Key=Value
    Key=Value
    ...=.....
    ...=.....
    ...=.....
    ...=.....
    

    You are free to edit values any time you want. The changes are immediately reflected in the dropdown list box.

    On the other hand, editing a key may require extra works. If you have already created some records in the database, you must also change the corresponding keys in the records.

    Tuesday, March 26, 2013

    Address Book Script : Setting the id attribute of an input box

    Sometimes, you may need to specify the id attribuets of input boxes. You can set an id attribute by passing it in "$hm->Zb()."

    (example)

    <?php echo $hm->Zb('rs:def:first_name', ZB_ATTR, array( "id" => "enter-your-id-here" ) ); ?>
    

    Monday, March 25, 2013

    Address Book Script : Installing multiple copies in the same database

    If you try to install multiple copies of Address Book Script, table name collisions occur. In order to avoid it, you can change the table names before running the installation script. Change the table names in web/install/sql/sql.txt, which will be used to create tables in the database by the installation script. Also, you need to change the table names in web/codelib/cfg/config.table_name.inc.php.

    Sunday, March 24, 2013

    Address Book Script : changing the default sorting order

    To change the default sorting order, open web/staff/app/df.fieldlist.inc.php in a text editor and edit XA_INIT_ORDER_BY

    (example)

    'addresses' => array(
    XA_CLASS=>'cls_fl_addresses',
    XA_SPEC_FILE=>'df.fl.addresses.inc.php',
    XA_TABLE_NAME=>TBL_ADDRESSES,
    XA_ID_NAME=>'addresses_id',
    XA_INIT_ORDER_BY=>'addresses_id DESC',
    XA_INIT_PAGE_SIZE=>20
    ),
    

    Saturday, March 23, 2013

    Address Book Script : Template Path
    Search Page:
    Path: web/staff/tpl.(table-name).search.inc.php
    Detail ( Add New / Edit ) Page:
    Path: web/staff/tpl.(table-name).detail.inc.php

    Top
    Editing a Field Label

    You can often reuse existing fields by changing labels. For example, you can use the Cell field as the Office Tel# field by changing the caption of Cell to Office Tel#. To do so, follow the step below

     Step 1 
    Find the following code in web/codelib/cfg/res.eng.app.inc.php.
    define( 'RSTR_CELL', 'Cell' );
    Make the following modification (the BLUE text) like shown below. (1 location)
    define( 'RSTR_CELL', 'Office Tel#' );
     Done! 
    Note: The procedure above does not change the name of the field in the database.

    Top
    Making a Field Required or Optional

    You can easily make fields required or optional. For example, to make the email field required, follow the step below

     Step 1 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    Make the following modification (the BLUE text) like shown below. (1 location)
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>true,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
     Done! 
    To change it back to "optional", set it to "false" like XA_REQUIRED=>false,

    Top
    Changing Size of Input Box

    You can easily change the size of input box in the New/Edit page. For example, to change the size of the input box of the email field from 24 to 48, follow the step below

     Step 1 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    Make the following modification (the BLUE text) like shown below. (1 location)
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>48,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
     Done! 

    Top
    Resizing Column Size (Field Size)

    Do you need to make the size of a field larger/smaller? The following guide will show you an example for changing the size of a field. In this guide, you change the size of the email field from 100 chars to 200 chars.

     Step 1 
    Use phpMyAdmin to change the size of "email" field of the table, tbl_address to 200 chars.

    If you prefer to use a sql statement, use the following command:
    ALTER TABLE `tbl_address` CHANGE `email` `email` VARCHAR( 200 ) DEFAULT NULL;
     Step 2 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    Make the following modification (the BLUE text) like shown below. (1 location)
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>200,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
     Done! 

    Top
    Copying a Field

    Do you need another field similar to an exsiting field in the script? If so, the following step-by-step guide will help you. In this guide, you will add a copy of the email field to the script. Let's call it "email2."

     Step 1 
    Use phpMyAdmin to create a new field named "email2" in the table, tbl_address. The attributes of the email2 field should be exactly the same as the email field except the name.

    If you prefer to use a sql statement to create the email2 field, use the following statement:
    ALTER TABLE `tbl_address` ADD `email2` VARCHAR( 100 ) NULL AFTER `email`;
    		
     Step 2 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'email'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>RSTR_EMAIL,
    XA_SIZE=>24,
    XA_REQUIRED=>true,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
    Copy the code above, paste it after the original, and make the following modifications (the BLUE text) shown below. (2 locations)
    'email2'=>array(
    XA_CLASS=>'CVEmail',
    XA_CAPTION=>'My New Email2',
    XA_SIZE=>24,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(sr)(fd)'
    ),
     Step 3 
    Find the following code in web/staff/tpl.address.detail.inc.php.
    <tr>
    <td class='column_caption'>
    <?php if ( $b_reg || $b_edit ) { ?><span class="required"></span><?php } ?>
    <?php echo RSTR_EMAIL; ?> :
    </td>
    <td class='column_value'><?php echo $hm->Zb('rs:def:email'); ?>
    </td>
    </tr>
    Copy the code above, paste it after the original, and make the following modifications (the BLUE text) shown below. (2 locations)
    <tr>
    <td class='column_caption'>
    <?php if ( $b_reg || $b_edit ) { ?><span class="required"></span><?php } ?>
    My New Email2 :
    </td>
    <td class='column_value'><?php echo $hm->Zb('rs:def:email2'); ?>
    </td>
    </tr>
     Done! 
    Log in the staff area and check the detail page of one of address records. You will see the email2 field and it's ready to use!

    Optionally, you can add the email2 field to the Search page.
    To add it as a search criteria, see Adding a Search Criteria.
    To display it in the Search Results table, see Adding a Field to Search Results table.

    Top
    Adding a Search Criteria

    The following steps guide you add a search criteria to the Search page. Let's use the street1 field as an example.

     Step 1 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'street1'=>array(
    XA_CLASS=>'CVText',
    XA_CAPTION=>RSTR_STREET1,
    XA_SIZE=>40,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(fd)'
    ),
    Insert the BLUE text like shown below. (1 location)
    'street1'=>array(
    XA_CLASS=>'CVText',
    XA_CAPTION=>RSTR_STREET1,
    XA_SIZE=>40,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sp)(fd)'
    ),
     Step 2 
    Find the following code in web/staff/tpl.address.search.inc.php.
    <!-- [BEGIN] Main Form -->
    <div id="main_div">

    <?php include(INC_FORM_BEGIN); ?>

    <?php include(INC_BODY_INFO); ?>

    <!-- [BEGIN] Search Criteria -->
    <?php echo $hm->SectBegin( RSTR_SEARCH_CRITERIA ); ?>

    <div style='overflow:auto;'>
    <table width='99%'>


    Insert the BLUE text like shown below. (1 location)
    <!-- [BEGIN] Main Form -->
    <div id="main_div">

    <?php include(INC_FORM_BEGIN); ?>

    <?php include(INC_BODY_INFO); ?>

    <!-- [BEGIN] Search Criteria -->
    <?php echo $hm->SectBegin( RSTR_SEARCH_CRITERIA ); ?>

    <div style='overflow:auto;'>
    <table width='99%'>

    <tr>
    <td align="right"><?php echo RSTR_STREET1; ?> : </td>
    <td align="left"><?php echo $hm->Zb( 'sp:def:street1' ); ?></td>
    <td align="right">&nbsp;</td>
    <td align="left">&nbsp;</td>
    <td align="right">&nbsp;</td>
    <td align="left">&nbsp;</td>
    </tr>



     Done! 

    Top
    Adding a Field to Search Results table

    The following instruction explains how to display a field in the Search Results table. We use the street1 field as an example.

     Step 1 
    Find the following code in web/codelib/asc/df.fl.address.inc.php.
    'street1'=>array(
    XA_CLASS=>'CVText',
    XA_CAPTION=>RSTR_STREET1,
    XA_SIZE=>40,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(fd)'
    ),
    Insert the BLUE text like shown below. (1 location)
    'street1'=>array(
    XA_CLASS=>'CVText',
    XA_CAPTION=>RSTR_STREET1,
    XA_SIZE=>40,
    XA_REQUIRED=>false,
    XA_MIN_CHAR=>0,
    XA_MAX_CHAR=>100,
    XA_SEARCH_OP=>'s%',
    XA_LIST=>'(sr)(fd)'
    ),
     Step 2 
    Find the following code in web/staff/tpl.address.search.inc.php.
    <tr class='data_table_caption'>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:address_id'); ?> <?php echo RSTR_ADDRESS_ID; ?></th>
    <th><?php include(INC_SR_SELREC_HEADER); ?></th>
    <th><?php include(INC_SR_EDIT_BTN_HEADER); ?></th>
    <th><?php echo RSTR_ACTIVE; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:first_name'); ?> <?php echo RSTR_FIRST_NAME; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:last_name'); ?> <?php echo RSTR_LAST_NAME; ?></th>
    <th><?php echo RSTR_CITY; ?></th>
    <th><?php echo RSTR_STATE; ?></th>
    <th><?php echo RSTR_EMAIL; ?></th>
    </tr>


    Insert the BLUE text like shown below. (1 location)
    <tr class='data_table_caption'>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:address_id'); ?> <?php echo RSTR_ADDRESS_ID; ?></th>
    <th><?php include(INC_SR_SELREC_HEADER); ?></th>
    <th><?php include(INC_SR_EDIT_BTN_HEADER); ?></th>
    <th><?php echo RSTR_ACTIVE; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:first_name'); ?> <?php echo RSTR_FIRST_NAME; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:last_name'); ?> <?php echo RSTR_LAST_NAME; ?></th>
    <th><?php echo RSTR_CITY; ?></th>
    <th><?php echo RSTR_STATE; ?></th>
    <th><?php echo RSTR_EMAIL; ?></th>
    <th>Street1</th>
    </tr>

     Step 3 
    Find the following code in web/staff/tpl.address.search.inc.php.
    <?php while( $hm->zb('@rs:def:begin_table') ) { ?>
    <tr>
    <td style='text-align:right;'><?php echo $hm->Zb('rs:def:address_id'); ?></td>
    <?php include(INC_SR_ID_PARAM); ?>
    <?php include(INC_SR_SELREC); ?>
    <?php include(INC_SR_EDIT_BTN); ?>
    <td style='text-align:center;'><?php echo $hm->Zb('rs:def:active'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:first_name'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:last_name'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:city'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:state'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:email'); ?></td>
    </tr>

    Insert the BLUE text like shown below. (1 location)
    <?php while( $hm->zb('@rs:def:begin_table') ) { ?>
    <tr>
    <td style='text-align:right;'><?php echo $hm->Zb('rs:def:address_id'); ?></td>
    <?php include(INC_SR_ID_PARAM); ?>
    <?php include(INC_SR_SELREC); ?>
    <?php include(INC_SR_EDIT_BTN); ?>
    <td style='text-align:center;'><?php echo $hm->Zb('rs:def:active'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:first_name'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:last_name'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:city'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:state'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:email'); ?></td>
    <td style='text-align:left;'><?php echo $hm->Zb('rs:def:street1'); ?></td>
    </tr>

     Done! 

    Top
    Adding Sort Buttons

    This section will explain how to add sort buttons on the header of Search Result Table.

    You already have sort buttons on First Name and Last Name, so let's try the City field.

     Step 1 
    Find the following code in web/staff/tpl.address.search.inc.php.
    <tr class='data_table_caption'>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:address_id'); ?> <?php echo RSTR_ADDRESS_ID; ?></th>
    <th><?php include(INC_SR_SELREC_HEADER); ?></th>
    <th><?php include(INC_SR_EDIT_BTN_HEADER); ?></th>
    <th><?php echo RSTR_ACTIVE; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:first_name'); ?> <?php echo RSTR_FIRST_NAME; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:last_name'); ?> <?php echo RSTR_LAST_NAME; ?></th>
    <th><?php echo RSTR_CITY; ?></th>
    <th><?php echo RSTR_STATE; ?></th>
    <th><?php echo RSTR_EMAIL; ?></th>
    </tr>


    Insert the BLUE text like shown below. (1 location)
    <tr class='data_table_caption'>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:address_id'); ?> <?php echo RSTR_ADDRESS_ID; ?></th>
    <th><?php include(INC_SR_SELREC_HEADER); ?></th>
    <th><?php include(INC_SR_EDIT_BTN_HEADER); ?></th>
    <th><?php echo RSTR_ACTIVE; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:first_name'); ?> <?php echo RSTR_FIRST_NAME; ?></th>
    <th nowrap='true'><?php echo $hm->Zb('ob:rs:def:last_name'); ?> <?php echo RSTR_LAST_NAME; ?></th>
    <th><?php echo $hm->Zb('ob:rs:def:city'); ?> <?php echo RSTR_CITY; ?></th>
    <th><?php echo RSTR_STATE; ?></th>
    <th><?php echo RSTR_EMAIL; ?></th>
    </tr>

     Done! 

    Monday, March 4, 2013

    Bug Fix : Address Book Builder 1.2

    Description: This is a bug introduced in Address Book Builder v1.2. In some builds, some of data columns of the search result table get cut off. ( Thank you for reporting, Mikitty! )
    Status: Fixed

    Thursday, February 28, 2013

    Pickup Center Update : Popup Info Card

    Added popup info cards to Pickup Center. When you hover the mouse cursor over a script box, a small window pops up and displays the list of fields used in a script.

    Friday, February 22, 2013

    Address Book Builder v1.1 Update

    Address Book Builder was updated to v1.1. The new version of Address Book Builder allows you to choose a field type from an input box, textarea, checkbox and dropdown listbox.

    Also, you can name the table as you like. ( In the previous version, the name of the table is always "address" )

    Monday, January 21, 2013

    Address Book Builder v1.0 Now Available Online

    Address Book Builder allows you to generate a web-based Address Book Script ( PHP + MySQL ), which you can install on your web site.

    Just enter a title and a list of fields you would like to have. Address Book Builder will generate the PHP code for you.

    Since you can specify fields freely, the application is not limited to address books. You can use Address Book Builder to create scripts that store a member list, customer list, employee list or any lists you can imagine.

    Friday, December 14, 2012

    A new section, 'Adding Sort Buttons' was added to Customization Quick Guide

    Sunday, December 9, 2012

    The new section, 'Editing a Field Label' was added to Customization Quick Guide

    Tuesday, December 4, 2012

    An easy alternative way to upgrade Address Book Script v1.16 to v1.17

    To upgrade Address Book Script v1.16 to v1.17, you don't need to reinstall the entire script again.

    Download this zip file and replace "web/codelib/asc/df.fl.address.inc.php" in your copy of Address Book Script (v1.16) with "web/codelib/asc/df.fl.address.inc.php" in the zip package.

    Monday, December 3, 2012

    Address Book v1.17

    Bugfix: Fix duplicate string resources.