├── VERSION ├── .gitignore ├── pix ├── cog.png ├── key.png ├── map.png ├── accept.png ├── cancel.png ├── email.png ├── help.png ├── image.png ├── key_go.png ├── note.png ├── phone.png ├── public.png ├── qrcode.png ├── show.png ├── vcard.png ├── page_add.png ├── page_in.png ├── page_red.png ├── private.png ├── tag_blue.png ├── arrow_right.png ├── book_open.png ├── ldaperror.png ├── page_copy.png ├── page_delete.png ├── page_edit.png ├── phone_add.png ├── tag_blue_edit.png ├── imagebox │ ├── close.jpg │ ├── loading.gif │ ├── spacer.gif │ ├── next_image.jpg │ └── prev_image.jpg └── page_white_excel.png ├── doc ├── .htaccess ├── TODO ├── docs ├── slapd.example └── ldapab.schema ├── inc ├── .htaccess ├── smarty │ ├── internals │ │ ├── core.get_microtime.php │ │ ├── core.process_compiled_include.php │ │ ├── core.get_include_path.php │ │ ├── core.write_compiled_resource.php │ │ ├── core.assign_smarty_interface.php │ │ ├── core.is_trusted.php │ │ ├── core.rmdir.php │ │ ├── core.write_file.php │ │ ├── core.smarty_include_php.php │ │ ├── core.display_debug_console.php │ │ ├── core.is_secure.php │ │ ├── core.assemble_plugin_filepath.php │ │ ├── core.load_resource_plugin.php │ │ ├── core.rm_auto.php │ │ ├── core.process_cached_inserts.php │ │ ├── core.get_php_resource.php │ │ ├── core.create_dir_structure.php │ │ ├── core.run_insert_handler.php │ │ ├── core.write_compiled_include.php │ │ ├── core.write_cache_file.php │ │ └── core.read_cache_file.php │ └── plugins │ │ ├── modifier.csv.php │ │ ├── modifier.h.php │ │ ├── modifier.lower.php │ │ ├── modifier.upper.php │ │ ├── modifier.indent.php │ │ ├── modifier.string_format.php │ │ ├── modifier.replace.php │ │ ├── modifier.wordwrap.php │ │ ├── modifier.cat.php │ │ ├── modifier.count_paragraphs.php │ │ ├── modifier.default.php │ │ ├── modifier.http.php │ │ ├── modifier.spacify.php │ │ ├── modifier.count_sentences.php │ │ ├── modifier.strip_tags.php │ │ ├── modifier.nl2br.php │ │ ├── modifier.strip.php │ │ ├── modifier.count_characters.php │ │ ├── modifier.count_words.php │ │ ├── shared.escape_special_chars.php │ │ ├── function.debug.php │ │ ├── function.assign.php │ │ ├── function.popup_init.php │ │ ├── function.eval.php │ │ ├── modifier.capitalize.php │ │ ├── compiler.assign.php │ │ ├── function.assign_debug_info.php │ │ ├── shared.make_timestamp.php │ │ ├── modifier.regex_replace.php │ │ ├── modifier.truncate.php │ │ ├── modifier.noteparser.php │ │ ├── modifier.date_format.php │ │ ├── function.counter.php │ │ ├── outputfilter.trimwhitespace.php │ │ ├── modifier.escape.php │ │ ├── modifier.debug_print_var.php │ │ ├── block.textformat.php │ │ ├── function.cycle.php │ │ ├── function.math.php │ │ └── function.popup.php ├── init.php ├── config.php.dist ├── lang │ ├── cn.php │ ├── fr.php │ ├── ko.php │ ├── it.php │ ├── nl.php │ ├── tr.php │ ├── ca.php │ ├── en.php │ └── de.php └── fields.php ├── cache └── .htaccess ├── contrib ├── .htaccess └── README.txt ├── templates ├── error.tpl ├── tags.tpl ├── list_map.tpl ├── list_csv.tpl ├── list_csv_entry.tpl ├── footer.tpl ├── list_map_entry.tpl ├── list.tpl ├── orgs.tpl ├── search.tpl ├── import.tpl ├── entry_vcf.tpl ├── login.tpl ├── entry_map.tpl ├── list_entry.tpl ├── help.tpl ├── layout.css ├── header.tpl ├── import_entry.tpl └── toolbar.tpl ├── help.php ├── orgs.php ├── _htaccess ├── img.php ├── styles └── scripted.css ├── login.php ├── scripts ├── maps.js └── interface │ ├── ifxpulsate.js │ ├── ifxhighlight.js │ ├── ittabs.js │ ├── ifxbounce.js │ ├── ifxshake.js │ ├── iexpander.js │ ├── ifxscrollto.js │ └── ifxtransfer.js └── tags.php /VERSION: -------------------------------------------------------------------------------- 1 | 0.8.1 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | inc/config.php 2 | /cache/ 3 | -------------------------------------------------------------------------------- /pix/cog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/cog.png -------------------------------------------------------------------------------- /pix/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/key.png -------------------------------------------------------------------------------- /pix/map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/map.png -------------------------------------------------------------------------------- /pix/accept.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/accept.png -------------------------------------------------------------------------------- /pix/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/cancel.png -------------------------------------------------------------------------------- /pix/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/email.png -------------------------------------------------------------------------------- /pix/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/help.png -------------------------------------------------------------------------------- /pix/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/image.png -------------------------------------------------------------------------------- /pix/key_go.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/key_go.png -------------------------------------------------------------------------------- /pix/note.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/note.png -------------------------------------------------------------------------------- /pix/phone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/phone.png -------------------------------------------------------------------------------- /pix/public.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/public.png -------------------------------------------------------------------------------- /pix/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/qrcode.png -------------------------------------------------------------------------------- /pix/show.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/show.png -------------------------------------------------------------------------------- /pix/vcard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/vcard.png -------------------------------------------------------------------------------- /doc/.htaccess: -------------------------------------------------------------------------------- 1 | ## no access to this directory 2 | order allow,deny 3 | deny from all 4 | -------------------------------------------------------------------------------- /inc/.htaccess: -------------------------------------------------------------------------------- 1 | ## no access to this directory 2 | order allow,deny 3 | deny from all 4 | -------------------------------------------------------------------------------- /pix/page_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_add.png -------------------------------------------------------------------------------- /pix/page_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_in.png -------------------------------------------------------------------------------- /pix/page_red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_red.png -------------------------------------------------------------------------------- /pix/private.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/private.png -------------------------------------------------------------------------------- /pix/tag_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/tag_blue.png -------------------------------------------------------------------------------- /cache/.htaccess: -------------------------------------------------------------------------------- 1 | ## no access to this directory 2 | order allow,deny 3 | deny from all 4 | -------------------------------------------------------------------------------- /contrib/.htaccess: -------------------------------------------------------------------------------- 1 | ## no access to this directory 2 | order allow,deny 3 | deny from all 4 | -------------------------------------------------------------------------------- /pix/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/arrow_right.png -------------------------------------------------------------------------------- /pix/book_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/book_open.png -------------------------------------------------------------------------------- /pix/ldaperror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/ldaperror.png -------------------------------------------------------------------------------- /pix/page_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_copy.png -------------------------------------------------------------------------------- /pix/page_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_delete.png -------------------------------------------------------------------------------- /pix/page_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_edit.png -------------------------------------------------------------------------------- /pix/phone_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/phone_add.png -------------------------------------------------------------------------------- /pix/tag_blue_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/tag_blue_edit.png -------------------------------------------------------------------------------- /pix/imagebox/close.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/imagebox/close.jpg -------------------------------------------------------------------------------- /pix/imagebox/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/imagebox/loading.gif -------------------------------------------------------------------------------- /pix/imagebox/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/imagebox/spacer.gif -------------------------------------------------------------------------------- /pix/page_white_excel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/page_white_excel.png -------------------------------------------------------------------------------- /pix/imagebox/next_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/imagebox/next_image.jpg -------------------------------------------------------------------------------- /pix/imagebox/prev_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cweiske/contagged/master/pix/imagebox/prev_image.jpg -------------------------------------------------------------------------------- /templates/error.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 |

An error occured

4 | 5 |
{$error}
6 | 7 | {include file="footer.tpl"} 8 | -------------------------------------------------------------------------------- /contrib/README.txt: -------------------------------------------------------------------------------- 1 | Files in this directory where written by users of ConTagged - they are 2 | not maintained or supported by CosmoCode. Use them at your own risk. 3 | 4 | -------------------------------------------------------------------------------- /templates/tags.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 |
4 | {$tagcloud} 5 | 6 |
7 |

{$lang.tagcloud}

8 | 9 | {include file="footer.tpl"} 10 | -------------------------------------------------------------------------------- /doc/TODO: -------------------------------------------------------------------------------- 1 | Any help is welcome :-) 2 | 3 | - clean up the code 4 | - clean up the HTML (make it validate) 5 | - clean up the CSS (it's a mess) 6 | - spice up interface (some more web2.0 colors and fonts would be a start) 7 | -------------------------------------------------------------------------------- /help.php: -------------------------------------------------------------------------------- 1 | display('help.tpl'); 10 | 11 | ?> 12 | -------------------------------------------------------------------------------- /templates/list_map.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 | 9 | 10 | 11 |
12 | 13 |
14 |
15 | 16 | {include file="footer.tpl"} 17 | -------------------------------------------------------------------------------- /orgs.php: -------------------------------------------------------------------------------- 1 | display('orgs.tpl'); 16 | ?> 17 | -------------------------------------------------------------------------------- /templates/list_csv.tpl: -------------------------------------------------------------------------------- 1 | {$lang.name|csv};{$lang.givenname|csv};{$lang.title|csv};{$lang.organization|csv};{$lang.office|csv};{$lang.street|csv};{$lang.zip|csv};{$lang.location|csv};{$lang.country|csv};{$lang.phone|csv};{$lang.fax|csv};{$lang.pager|csv};{$lang.homestreet|csv};{$lang.homephone|csv};{$lang.mobile|csv};{$lang.url|csv};{$lang.note|csv};{$lang.mail|csv};{$lang.mail|csv};{$lang.mail|csv};{$lang.marker|csv} 2 | {$list} 3 | -------------------------------------------------------------------------------- /templates/list_csv_entry.tpl: -------------------------------------------------------------------------------- 1 | {$entry.name|csv};{$entry.givenname|csv};{$entry.title|csv};{$entry.organization|csv};{$entry.office|csv};{$entry.street|csv};{$entry.zip|csv};{$entry.location|csv};{$entry.country|csv};{$entry.phone|csv};{$entry.fax|csv};{$entry.pager|csv};{$entry.homestreet|csv};{$entry.homephone|csv};{$entry.mobile|csv};{$lang.url|csv};{$entry.note|csv};{$entry.mail[0]|csv};{$entry.mail[1]|csv};{$entry.mail[2]|csv};{$entry.markers|csv} 2 | 3 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.get_microtime.php: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.csv.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: csv
14 | * Purpose: format string for CSV output 15 | * @author Andreas Gohr 16 | * @param string 17 | * @return string 18 | */ 19 | function smarty_modifier_csv($string) 20 | { 21 | return '"'.strtr(trim($string),'"','""').'"'; 22 | } 23 | 24 | ?> 25 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.h.php: -------------------------------------------------------------------------------- 1 | 14 | * Name: h
15 | */ 16 | function smarty_modifier_h($string, $esc_type = 'html', $char_set = 'ISO-8859-1') 17 | { 18 | return smarty_modifier_escape($string,'html','UTF-8'); 19 | } 20 | 21 | /* vim: set expandtab: */ 22 | 23 | ?> 24 | -------------------------------------------------------------------------------- /templates/footer.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 11 | 12 | {if $user == ''} 13 | {$lang.notloggedin} 14 | {else} 15 | {$lang.loggedinas} {$user} 16 | {/if} 17 |
18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /templates/list_map_entry.tpl: -------------------------------------------------------------------------------- 1 | 2 | {ldelim} 3 | adr: '{$entry.street|escape:javascript}, {$entry.zip|escape:javascript} {$entry.location|escape:javascript}, {$entry.country|escape:javascript}', 4 | info: '\x3ch4\x3e\x3ca href="entry.php?dn={$entry.dn|escape:url}"\x3e'+ 5 | '{$entry.givenname|escape:javascript} {$entry.name|escape:javascript}\x3c/a\x3e\x3c/h4\x3e'+ 6 | '{$entry.organization|escape:javascript}\x3cbr /\x3e'+ 7 | '{$entry.street|escape:javascript}\x3cbr /\x3e'+ 8 | '{$entry.zip|escape:javascript} {$entry.location|escape:javascript}' 9 | {rdelim}, 10 | 11 | 12 | -------------------------------------------------------------------------------- /templates/list.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 | 4 | {if $conf.userlogreq == 1 && $user == ''} 5 | 6 | 9 | 10 | {else} 11 | {if $list == ''} 12 | 13 | 16 | 17 | {else} 18 | {* $list is a concatenation of multiple list_entry.tpl *} 19 | {$list} 20 | {/if} 21 | {/if} 22 |
7 | {$lang.msg_login} 8 |
14 | {$lang.err_noentries} 15 |
23 | 24 | {include file="footer.tpl"} 25 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.lower.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: lower
14 | * Purpose: convert string to lowercase 15 | * @link http://smarty.php.net/manual/en/language.modifier.lower.php 16 | * lower (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return string 20 | */ 21 | function smarty_modifier_lower($string) 22 | { 23 | return strtolower($string); 24 | } 25 | 26 | ?> 27 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.upper.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: upper
14 | * Purpose: convert string to uppercase 15 | * @link http://smarty.php.net/manual/en/language.modifier.upper.php 16 | * upper (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return string 20 | */ 21 | function smarty_modifier_upper($string) 22 | { 23 | return strtoupper($string); 24 | } 25 | 26 | ?> 27 | -------------------------------------------------------------------------------- /_htaccess: -------------------------------------------------------------------------------- 1 | # 2 | # Example .htaccess to use with mod_authldap 3 | # 4 | 5 | AuthName "LDAPab" 6 | AuthType basic 7 | 8 | AuthLDAPURL "ldap://ldap/ou=people,o=cosmocode,c=de?uid?one" 9 | 10 | ### LDAP Bind information 11 | #AuthLDAPBindDN cn=NonAnon,o=cosmocode,c=de 12 | #AuthLDAPBindPassword secret 13 | 14 | ### For LDAP group authentication 15 | #AuthLDAPGroupAttribute memberUid 16 | #AuthLDAPGroupAttributeIsDN off 17 | #require group cn=Users,ou=Groups,o=cosmocode,c=de 18 | 19 | ### Authorize users individually 20 | #require user myusername 21 | 22 | ### Authorize any authenticated user 23 | require valid-user 24 | 25 | ### Require SSL for access 26 | #SSLRequireSSL 27 | 28 | -------------------------------------------------------------------------------- /img.php: -------------------------------------------------------------------------------- 1 | Access Denied'; 8 | exit(); 9 | } 10 | 11 | $dn = $_REQUEST['dn']; 12 | 13 | $sr = ldap_search($LDAP_CON,$dn,'(objectClass=inetOrgPerson)',array($FIELDS['photo'])); 14 | if(!ldap_count_entries($LDAP_CON,$sr)){ 15 | header("HTTP/1.0 404 Not Found"); 16 | echo '

Not Found

'; 17 | exit; 18 | } 19 | $result = ldap_get_binentries($LDAP_CON, $sr); 20 | $entry = $result[0]; 21 | 22 | header("Content-type: image/jpeg"); 23 | print $entry[$FIELDS['photo']][0]; 24 | ?> 25 | -------------------------------------------------------------------------------- /templates/orgs.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 | 4 | {foreach from=$orgs item=org} 5 | 6 | 9 | 12 | 13 | {foreachelse} 14 | 15 | 18 | 19 | {/foreach} 20 |
7 | 8 | 10 | {$org|h}
11 |
16 |

{$lang.err_noentries}

17 |
21 | 22 | {include file="footer.tpl"} 23 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.indent.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: indent
14 | * Purpose: indent lines of text 15 | * @link http://smarty.php.net/manual/en/language.modifier.indent.php 16 | * indent (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param integer 20 | * @param string 21 | * @return string 22 | */ 23 | function smarty_modifier_indent($string,$chars=4,$char=" ") 24 | { 25 | return preg_replace('!^!m',str_repeat($char,$chars),$string); 26 | } 27 | 28 | ?> 29 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.string_format.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: string_format
14 | * Purpose: format strings via sprintf 15 | * @link http://smarty.php.net/manual/en/language.modifier.string.format.php 16 | * string_format (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param string 20 | * @return string 21 | */ 22 | function smarty_modifier_string_format($string, $format) 23 | { 24 | return sprintf($format, $string); 25 | } 26 | 27 | /* vim: set expandtab: */ 28 | 29 | ?> 30 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.replace.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: replace
14 | * Purpose: simple search/replace 15 | * @link http://smarty.php.net/manual/en/language.modifier.replace.php 16 | * replace (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param string 20 | * @param string 21 | * @return string 22 | */ 23 | function smarty_modifier_replace($string, $search, $replace) 24 | { 25 | return str_replace($search, $replace, $string); 26 | } 27 | 28 | /* vim: set expandtab: */ 29 | 30 | ?> 31 | -------------------------------------------------------------------------------- /templates/search.tpl: -------------------------------------------------------------------------------- 1 | 6 | 7 | {if $fields._marker} 8 |
9 | {$lang.marker}: 10 | 11 | 13 | 14 |
15 | {/if} 16 | 17 | -------------------------------------------------------------------------------- /templates/import.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | {$lang.upload} 5 | 6 | 7 | 8 |
9 |
10 | 11 | 12 | {if $list == ''} 13 | 14 | 17 | 18 | {else} 19 | {* $list is a concatenation of multiple importVCF_entry.tpl *} 20 | {$list} 21 | {/if} 22 |
15 | {$error} 16 |
23 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.wordwrap.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: wordwrap
14 | * Purpose: wrap a string of text at a given length 15 | * @link http://smarty.php.net/manual/en/language.modifier.wordwrap.php 16 | * wordwrap (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param integer 20 | * @param string 21 | * @param boolean 22 | * @return string 23 | */ 24 | function smarty_modifier_wordwrap($string,$length=80,$break="\n",$cut=false) 25 | { 26 | return wordwrap($string,$length,$break,$cut); 27 | } 28 | 29 | ?> 30 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.cat.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: cat
14 | * Date: Feb 24, 2003 15 | * Purpose: catenate a value to a variable 16 | * Input: string to catenate 17 | * Example: {$var|cat:"foo"} 18 | * @link http://smarty.php.net/manual/en/language.modifier.cat.php cat 19 | * (Smarty online manual) 20 | * @author Monte Ohrt 21 | * @version 1.0 22 | * @param string 23 | * @param string 24 | * @return string 25 | */ 26 | function smarty_modifier_cat($string, $cat) 27 | { 28 | return $string . $cat; 29 | } 30 | 31 | /* vim: set expandtab: */ 32 | 33 | ?> 34 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.count_paragraphs.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: count_paragraphs
14 | * Purpose: count the number of paragraphs in a text 15 | * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php 16 | * count_paragraphs (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return integer 20 | */ 21 | function smarty_modifier_count_paragraphs($string) 22 | { 23 | // count \r or \n characters 24 | return count(preg_split('/[\r\n]+/', $string)); 25 | } 26 | 27 | /* vim: set expandtab: */ 28 | 29 | ?> 30 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.default.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: default
14 | * Purpose: designate default value for empty variables 15 | * @link http://smarty.php.net/manual/en/language.modifier.default.php 16 | * default (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param string 20 | * @return string 21 | */ 22 | function smarty_modifier_default($string, $default = '') 23 | { 24 | if (!isset($string) || $string === '') 25 | return $default; 26 | else 27 | return $string; 28 | } 29 | 30 | /* vim: set expandtab: */ 31 | 32 | ?> 33 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.http.php: -------------------------------------------------------------------------------- 1 | 16 | * @param string 17 | * @return string 18 | */ 19 | function smarty_modifier_http($string){ 20 | if(!$string) return ''; 21 | 22 | list($url,$name) = explode(' ',$string,2); 23 | 24 | 25 | if(!parse_url($url, PHP_URL_SCHEME)) { 26 | $url = 'http://' . $url; 27 | } 28 | 29 | if(!$name) $name = $url; 30 | 31 | return ''.htmlspecialchars($name).''; 32 | } 33 | 34 | /* vim: set expandtab: */ 35 | 36 | ?> 37 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.spacify.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: spacify
14 | * Purpose: add spaces between characters in a string 15 | * @link http://smarty.php.net/manual/en/language.modifier.spacify.php 16 | * spacify (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param string 20 | * @return string 21 | */ 22 | function smarty_modifier_spacify($string, $spacify_char = ' ') 23 | { 24 | return implode($spacify_char, 25 | preg_split('//', $string, -1, PREG_SPLIT_NO_EMPTY)); 26 | } 27 | 28 | /* vim: set expandtab: */ 29 | 30 | ?> 31 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.count_sentences.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: count_sentences 14 | * Purpose: count the number of sentences in a text 15 | * @link http://smarty.php.net/manual/en/language.modifier.count.paragraphs.php 16 | * count_sentences (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return integer 20 | */ 21 | function smarty_modifier_count_sentences($string) 22 | { 23 | // find periods with a word before but not after. 24 | return preg_match_all('/[^\s]\.(?!\w)/', $string, $match); 25 | } 26 | 27 | /* vim: set expandtab: */ 28 | 29 | ?> 30 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.strip_tags.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: strip_tags
14 | * Purpose: strip html tags from text 15 | * @link http://smarty.php.net/manual/en/language.modifier.strip.tags.php 16 | * strip_tags (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param boolean 20 | * @return string 21 | */ 22 | function smarty_modifier_strip_tags($string, $replace_with_space = true) 23 | { 24 | if ($replace_with_space) 25 | return preg_replace('!<[^>]*?>!', ' ', $string); 26 | else 27 | return strip_tags($string); 28 | } 29 | 30 | /* vim: set expandtab: */ 31 | 32 | ?> 33 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.nl2br.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: nl2br
14 | * Date: Feb 26, 2003 15 | * Purpose: convert \r\n, \r or \n to <
> 16 | * Input:
17 | * - contents = contents to replace 18 | * - preceed_test = if true, includes preceeding break tags 19 | * in replacement 20 | * Example: {$text|nl2br} 21 | * @link http://smarty.php.net/manual/en/language.modifier.nl2br.php 22 | * nl2br (Smarty online manual) 23 | * @version 1.0 24 | * @author Monte Ohrt 25 | * @param string 26 | * @return string 27 | */ 28 | function smarty_modifier_nl2br($string) 29 | { 30 | return nl2br($string); 31 | } 32 | 33 | /* vim: set expandtab: */ 34 | 35 | ?> 36 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.strip.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: strip
14 | * Purpose: Replace all repeated spaces, newlines, tabs 15 | * with a single space or supplied replacement string.
16 | * Example: {$var|strip} {$var|strip:" "} 17 | * Date: September 25th, 2002 18 | * @link http://smarty.php.net/manual/en/language.modifier.strip.php 19 | * strip (Smarty online manual) 20 | * @author Monte Ohrt 21 | * @version 1.0 22 | * @param string 23 | * @param string 24 | * @return string 25 | */ 26 | function smarty_modifier_strip($text, $replace = ' ') 27 | { 28 | return preg_replace('!\s+!', $replace, $text); 29 | } 30 | 31 | /* vim: set expandtab: */ 32 | 33 | ?> 34 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.count_characters.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: count_characteres
14 | * Purpose: count the number of characters in a text 15 | * @link http://smarty.php.net/manual/en/language.modifier.count.characters.php 16 | * count_characters (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param boolean include whitespace in the character count 20 | * @return integer 21 | */ 22 | function smarty_modifier_count_characters($string, $include_spaces = false) 23 | { 24 | if ($include_spaces) 25 | return(strlen($string)); 26 | 27 | return preg_match_all("/[^\s]/",$string, $match); 28 | } 29 | 30 | /* vim: set expandtab: */ 31 | 32 | ?> 33 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.count_words.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: count_words
14 | * Purpose: count the number of words in a text 15 | * @link http://smarty.php.net/manual/en/language.modifier.count.words.php 16 | * count_words (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return integer 20 | */ 21 | function smarty_modifier_count_words($string) 22 | { 23 | // split text by ' ',\r,\n,\f,\t 24 | $split_array = preg_split('/\s+/',$string); 25 | // count matches that contain alphanumerics 26 | $word_count = preg_grep('/[a-zA-Z0-9\\x80-\\xff]/', $split_array); 27 | 28 | return count($word_count); 29 | } 30 | 31 | /* vim: set expandtab: */ 32 | 33 | ?> 34 | -------------------------------------------------------------------------------- /inc/smarty/plugins/shared.escape_special_chars.php: -------------------------------------------------------------------------------- 1 | 13 | * Purpose: used by other smarty functions to escape 14 | * special chars except for already escaped ones 15 | * @author Monte Ohrt 16 | * @param string 17 | * @return string 18 | */ 19 | function smarty_function_escape_special_chars($string) 20 | { 21 | if(!is_array($string)) { 22 | $string = preg_replace('!&(#?\w+);!', '%%%SMARTY_START%%%\\1%%%SMARTY_END%%%', $string); 23 | $string = htmlspecialchars($string); 24 | $string = str_replace(array('%%%SMARTY_START%%%','%%%SMARTY_END%%%'), array('&',';'), $string); 25 | } 26 | return $string; 27 | } 28 | 29 | /* vim: set expandtab: */ 30 | 31 | ?> 32 | -------------------------------------------------------------------------------- /templates/entry_vcf.tpl: -------------------------------------------------------------------------------- 1 | BEGIN:VCARD 2 | VERSION:2.1 3 | N:{$entry.name};{$entry.givenname};;{$entry.title} 4 | FN:{$entry.givenname} {$entry.name} 5 | ORG;ENCODING=QUOTED-PRINTABLE:{$entry.organisation|escape:qp};{$entry.office|escape:qp} 6 | NOTE;ENCODING=QUOTED-PRINTABLE:{$entry.note|escape:qp} 7 | TEL;WORK;VOICE;ENCODING=QUOTED-PRINTABLE:{$entry.phone|escape:qp} 8 | TEL;HOME;VOICE;ENCODING=QUOTED-PRINTABLE:{$entry.homephone|escape:qp} 9 | TEL;CELL;VOICE;ENCODING=QUOTED-PRINTABLE:{$entry.mobile|escape:qp} 10 | TEL;WORK;FAX;ENCODING=QUOTED-PRINTABLE:{$entry.fax|escape:qp} 11 | TEL;WORK;PAGER;ENCODING=QUOTED-PRINTABLE:{$entry.pager|escape:qp} 12 | {foreach from=$entry.mail item=mail} 13 | EMAIL;INTERNET:{$mail} 14 | {/foreach} 15 | ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;{$entry.street|escape:qp};{$entry.location|escape:qp};;{$entry.plz|escape:qp};{$entry.country|escape:qp} 16 | ADR;HOME;ENCODING=QUOTED-PRINTABLE:;;{$entry.homestreet|escape:qp} 17 | URL;WORK:{$entry.url} 18 | BDAY:{$entry.birthday} 19 | END:VCARD 20 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.debug.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: debug
14 | * Date: July 1, 2002
15 | * Purpose: popup debug window 16 | * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} 17 | * (Smarty online manual) 18 | * @author Monte Ohrt 19 | * @version 1.0 20 | * @param array 21 | * @param Smarty 22 | * @return string output from {@link Smarty::_generate_debug_output()} 23 | */ 24 | function smarty_function_debug($params, &$smarty) 25 | { 26 | if (isset($params['output'])) { 27 | $smarty->assign('_smarty_debug_output', $params['output']); 28 | } 29 | require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); 30 | return smarty_core_display_debug_console(null, $smarty); 31 | } 32 | 33 | /* vim: set expandtab: */ 34 | 35 | ?> 36 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.assign.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: assign
13 | * Purpose: assign a value to a template variable 14 | * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} 15 | * (Smarty online manual) 16 | * @param array Format: array('var' => variable name, 'value' => value to assign) 17 | * @param Smarty 18 | */ 19 | function smarty_function_assign($params, &$smarty) 20 | { 21 | extract($params); 22 | 23 | if (empty($var)) { 24 | $smarty->trigger_error("assign: missing 'var' parameter"); 25 | return; 26 | } 27 | 28 | if (!in_array('value', array_keys($params))) { 29 | $smarty->trigger_error("assign: missing 'value' parameter"); 30 | return; 31 | } 32 | 33 | $smarty->assign($var, $value); 34 | } 35 | 36 | /* vim: set expandtab: */ 37 | 38 | ?> 39 | -------------------------------------------------------------------------------- /templates/login.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 | 4 |
5 |
6 | {$lang.login} 7 | 8 |
{$msg|h}
9 | 10 |
11 | 12 | 13 |
14 | 15 |
16 | 17 | 18 |
19 | 20 |
21 | 22 | 23 |
24 | 25 | 26 | 27 |
28 |
29 | 30 | {include file="footer.tpl"} 31 | -------------------------------------------------------------------------------- /templates/entry_map.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 | 4 | 17 | 18 | 19 |
20 | 21 |

22 | 24 | {$entry.givenname|h} {$entry.name|h} 25 |

26 | 27 |
28 | 29 |
30 | {include file="footer.tpl"} -------------------------------------------------------------------------------- /inc/init.php: -------------------------------------------------------------------------------- 1 | compile_dir = dirname(__FILE__).'/../cache'; 26 | $smarty->use_sub_dirs = 0; 27 | $smarty->template_dir = dirname(__FILE__).'/../templates'; 28 | $smarty->force_compile = $conf['smartycompile']; 29 | 30 | // select the correct google api key 31 | $conf['gmapkey'] = $conf['gmaps'][$_SERVER['HTTP_HOST']]; 32 | 33 | ?> 34 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.popup_init.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: popup_init
14 | * Purpose: initialize overlib 15 | * @link http://smarty.php.net/manual/en/language.function.popup.init.php {popup_init} 16 | * (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param array 19 | * @param Smarty 20 | * @return string 21 | */ 22 | function smarty_function_popup_init($params, &$smarty) 23 | { 24 | $zindex = 1000; 25 | 26 | if (!empty($params['zindex'])) { 27 | $zindex = $params['zindex']; 28 | } 29 | 30 | if (!empty($params['src'])) { 31 | return '' . "\n" 32 | . '' . "\n"; 33 | } else { 34 | $smarty->trigger_error("popup_init: missing src parameter"); 35 | } 36 | } 37 | 38 | /* vim: set expandtab: */ 39 | 40 | ?> 41 | -------------------------------------------------------------------------------- /templates/list_entry.tpl: -------------------------------------------------------------------------------- 1 | {if $entry.type} 2 | 3 | 4 | {$entry.type|h} 6 | 7 | 8 | {$entry.name|h}, {$entry.givenname|h} 9 | 10 | 11 | {$entry.organization|h}  12 | 13 | 14 | {$entry.phone|h}  15 | 16 | 17 | {$entry.mail[0]|h}  18 | 19 | 20 | {if $entry.photo} 21 | {$lang.photo|h} 24 | {else} 25 |   26 | {/if} 27 | 28 | 29 | {/if} 30 | -------------------------------------------------------------------------------- /templates/help.tpl: -------------------------------------------------------------------------------- 1 | {include file="header.tpl"} 2 | 3 |
4 |

Adding LDAP-Access to your Mailclient

5 | 6 |

Public Addressbook

7 | 8 |

Use these settings to connect to the public addressbook:

9 |
10 |
LDAP-Server
11 |
{$conf.ldapserver}
12 | 13 |
Bind-DN
14 |
leave empty (anonymous bind)
15 | 16 |
Bind-Password
17 |
leave empty (anonymous bind)
18 | 19 |
Base/Search-DN
20 |
{$conf.publicbook}
21 |
22 | 23 |

Private Addressbook

24 | 25 | {if $binddn && $conf.privatebook} 26 |

To access your personal address data use these settings:

27 |
28 |
LDAP-Server
29 |
{$conf.ldapserver}
30 | 31 |
Bind-DN
32 |
{$binddn}
33 | 34 |
Bind-Password
35 |
your password (The one you used to login here)
36 | 37 |
Base/Search-DN
38 |
{$conf.privatebook},{$binddn}
39 |
40 | {else} 41 |

Login to see this data

42 | {/if} 43 | 44 |
45 | 46 | {include file="footer.tpl"} 47 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.process_compiled_include.php: -------------------------------------------------------------------------------- 1 | _cache_including; 20 | $smarty->_cache_including = true; 21 | 22 | $_return = $params['results']; 23 | 24 | foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { 25 | $smarty->_include($_include_file_path, true); 26 | } 27 | 28 | foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { 29 | $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', 30 | array(&$smarty, '_process_compiled_include_callback'), 31 | $_return); 32 | } 33 | $smarty->_cache_including = $_cache_including; 34 | return $_return; 35 | } 36 | 37 | ?> 38 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.get_include_path.php: -------------------------------------------------------------------------------- 1 | 45 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.eval.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: eval
14 | * Purpose: evaluate a template variable as a template
15 | * @link http://smarty.php.net/manual/en/language.function.eval.php {eval} 16 | * (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param array 19 | * @param Smarty 20 | */ 21 | function smarty_function_eval($params, &$smarty) 22 | { 23 | 24 | if (!isset($params['var'])) { 25 | $smarty->trigger_error("eval: missing 'var' parameter"); 26 | return; 27 | } 28 | 29 | if($params['var'] == '') { 30 | return; 31 | } 32 | 33 | $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled); 34 | 35 | ob_start(); 36 | $smarty->_eval('?>' . $_var_compiled); 37 | $_contents = ob_get_contents(); 38 | ob_end_clean(); 39 | 40 | if (!empty($params['assign'])) { 41 | $smarty->assign($params['assign'], $_contents); 42 | } else { 43 | return $_contents; 44 | } 45 | } 46 | 47 | /* vim: set expandtab: */ 48 | 49 | ?> 50 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.capitalize.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: capitalize
14 | * Purpose: capitalize words in the string 15 | * @link http://smarty.php.net/manual/en/language.modifiers.php#LANGUAGE.MODIFIER.CAPITALIZE 16 | * capitalize (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @return string 20 | */ 21 | function smarty_modifier_capitalize($string, $uc_digits = false) 22 | { 23 | smarty_modifier_capitalize_ucfirst(null, $uc_digits); 24 | return preg_replace_callback('!\'?\b\w(\w|\')*\b!', 'smarty_modifier_capitalize_ucfirst', $string); 25 | } 26 | 27 | function smarty_modifier_capitalize_ucfirst($string, $uc_digits = null) 28 | { 29 | static $_uc_digits = false; 30 | 31 | if(isset($uc_digits)) { 32 | $_uc_digits = $uc_digits; 33 | return; 34 | } 35 | 36 | if(substr($string[0],0,1) != "'" && !preg_match("!\d!",$string[0]) || $_uc_digits) 37 | return ucfirst($string[0]); 38 | else 39 | return $string[0]; 40 | } 41 | 42 | 43 | ?> 44 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.write_compiled_resource.php: -------------------------------------------------------------------------------- 1 | compile_dir)) { 18 | // compile_dir not writable, see if it exists 19 | if(!@is_dir($smarty->compile_dir)) { 20 | $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); 21 | return false; 22 | } 23 | $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); 24 | return false; 25 | } 26 | 27 | $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true); 28 | require_once(SMARTY_CORE_DIR . 'core.write_file.php'); 29 | smarty_core_write_file($_params, $smarty); 30 | return true; 31 | } 32 | 33 | /* vim: set expandtab: */ 34 | 35 | ?> 36 | -------------------------------------------------------------------------------- /inc/smarty/plugins/compiler.assign.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: assign
13 | * Purpose: assign a value to a template variable 14 | * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} 15 | * (Smarty online manual) 16 | * @author Monte Ohrt (initial author) 17 | * @author messju mohr (conversion to compiler function) 18 | * @param string containing var-attribute and value-attribute 19 | * @param Smarty_Compiler 20 | */ 21 | function smarty_compiler_assign($tag_attrs, &$compiler) 22 | { 23 | $_params = $compiler->_parse_attrs($tag_attrs); 24 | 25 | if (!isset($_params['var'])) { 26 | $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); 27 | return; 28 | } 29 | 30 | if (!isset($_params['value'])) { 31 | $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); 32 | return; 33 | } 34 | 35 | return "\$this->assign({$_params['var']}, {$_params['value']});"; 36 | } 37 | 38 | /* vim: set expandtab: */ 39 | 40 | ?> 41 | -------------------------------------------------------------------------------- /templates/layout.css: -------------------------------------------------------------------------------- 1 | 2 | /* left side toolbar */ 3 | 4 | div#toolbar { 5 | float: left; 6 | width: 2em; 7 | text-align: center; 8 | } 9 | 10 | div#toolbar ul { 11 | list-style: none; 12 | margin: 0; 13 | padding: 0; 14 | } 15 | 16 | div#toolbar li.sep { 17 | margin: 0.5em 2px; 18 | border-bottom: 1px solid #ccc; 19 | } 20 | 21 | div#toolbar img { 22 | padding: 2px; 23 | margin: 1px 0; 24 | border: 1px solid #fff; 25 | } 26 | 27 | div#toolbar img:hover { 28 | border: 1px solid #ccc; 29 | } 30 | 31 | /* top row */ 32 | 33 | div#filterrow { 34 | padding: 0 0 0 3em; 35 | border-bottom: 1px solid #ccc; 36 | } 37 | 38 | div#filterrow form { 39 | display: inline; 40 | } 41 | 42 | div#filterrow div.x, div#filterrow ul.x, div#filterrow ul.x li { 43 | display: inline; 44 | } 45 | 46 | div#filterrow ul.x { 47 | list-style: none; 48 | margin: 0; 49 | padding: 0; 50 | } 51 | 52 | div#filterrow div { 53 | margin-left: 1em; 54 | } 55 | 56 | /* bottom row */ 57 | 58 | div#footrow { 59 | clear: left; 60 | text-align: right; 61 | padding: 0 1em 0 0; 62 | border-top: 1px solid #ccc; 63 | } 64 | 65 | /* content */ 66 | 67 | div#content { 68 | margin-left: 2em; 69 | padding: 0.5em 1em 2em 1em; 70 | border-left: 1px solid #ccc; 71 | min-height: 10em; 72 | height: auto !important; 73 | height: 10em; 74 | } 75 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.assign_debug_info.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: assign_debug_info
13 | * Purpose: assign debug info to the template
14 | * @author Monte Ohrt 15 | * @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, 16 | * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} 17 | * @param Smarty 18 | */ 19 | function smarty_function_assign_debug_info($params, &$smarty) 20 | { 21 | $assigned_vars = $smarty->_tpl_vars; 22 | ksort($assigned_vars); 23 | if (@is_array($smarty->_config[0])) { 24 | $config_vars = $smarty->_config[0]; 25 | ksort($config_vars); 26 | $smarty->assign("_debug_config_keys", array_keys($config_vars)); 27 | $smarty->assign("_debug_config_vals", array_values($config_vars)); 28 | } 29 | 30 | $included_templates = $smarty->_smarty_debug_info; 31 | 32 | $smarty->assign("_debug_keys", array_keys($assigned_vars)); 33 | $smarty->assign("_debug_vals", array_values($assigned_vars)); 34 | 35 | $smarty->assign("_debug_tpls", $included_templates); 36 | } 37 | 38 | /* vim: set expandtab: */ 39 | 40 | ?> 41 | -------------------------------------------------------------------------------- /inc/smarty/plugins/shared.make_timestamp.php: -------------------------------------------------------------------------------- 1 | 11 | * Purpose: used by other smarty functions to make a timestamp 12 | * from a string. 13 | * @author Monte Ohrt 14 | * @param string 15 | * @return string 16 | */ 17 | function smarty_make_timestamp($string) 18 | { 19 | if(empty($string)) { 20 | // use "now": 21 | $time = time(); 22 | 23 | } elseif (preg_match('/^\d{14}$/', $string)) { 24 | // it is mysql timestamp format of YYYYMMDDHHMMSS? 25 | $time = mktime(substr($string, 8, 2),substr($string, 10, 2),substr($string, 12, 2), 26 | substr($string, 4, 2),substr($string, 6, 2),substr($string, 0, 4)); 27 | 28 | } elseif (is_numeric($string)) { 29 | // it is a numeric string, we handle it as timestamp 30 | $time = (int)$string; 31 | 32 | } else { 33 | // strtotime should handle it 34 | $time = strtotime($string); 35 | if ($time == -1 || $time === false) { 36 | // strtotime() was not able to parse $string, use "now": 37 | $time = time(); 38 | } 39 | } 40 | return $time; 41 | 42 | } 43 | 44 | /* vim: set expandtab: */ 45 | 46 | ?> 47 | -------------------------------------------------------------------------------- /styles/scripted.css: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Autocompletion 4 | */ 5 | .autocompleter { 6 | background-color: #fff; 7 | border: 1px solid #999; 8 | font-size: 80%; 9 | } 10 | 11 | .autocompleterSelect { 12 | background-color: #06c; 13 | color: #fff; 14 | } 15 | 16 | /** 17 | * ImageBox effects 18 | */ 19 | 20 | #ImageBoxOverlay { 21 | background-color: #000; 22 | } 23 | #ImageBoxCaption { 24 | background-color: #F4F4EC; 25 | } 26 | #ImageBoxContainer { 27 | width: 250px; 28 | height: 250px; 29 | background-color: #F4F4EC; 30 | } 31 | #ImageBoxCaptionText { 32 | font-weight: bold; 33 | padding-bottom: 5px; 34 | font-size: 13px; 35 | } 36 | #ImageBoxCaptionImages { 37 | margin: 0; 38 | } 39 | #ImageBoxNextImage { 40 | background-image: url(pix/imagebox/spacer.gif); 41 | background-color: transparent; 42 | } 43 | #ImageBoxPrevImage { 44 | background-image: url(pix/imagebox/spacer.gif); 45 | background-color: transparent; 46 | } 47 | #ImageBoxNextImage:hover { 48 | background-image: url(pix/imagebox/next_image.jpg); 49 | background-repeat: no-repeat; 50 | background-position: right top; 51 | } 52 | #ImageBoxPrevImage:hover { 53 | background-image: url(pix/imagebox/prev_image.jpg); 54 | background-repeat: no-repeat; 55 | background-position: left bottom; 56 | } 57 | 58 | textarea.ipe { 59 | width: 95%; 60 | height: 5em; 61 | } 62 | -------------------------------------------------------------------------------- /login.php: -------------------------------------------------------------------------------- 1 | array ('organizationalUnit','top'), 19 | 'ou' => $match[1])); 20 | } 21 | } 22 | 23 | //forward to next page 24 | if(!empty($_SESSION['ldapab']['lastlocation'])){ 25 | header('Location: '.$_SESSION['ldapab']['lastlocation']); 26 | }else{ 27 | header('Location: index.php'); 28 | } 29 | exit; 30 | }else{ 31 | $msg = $lang['msg_loginfail'];; 32 | } 33 | }else{ 34 | //logout 35 | unset($_SESSION['ldapab']); 36 | } 37 | 38 | //prepare templates 39 | tpl_std(); 40 | $smarty->assign('msg',$msg); 41 | //display templates 42 | header('Content-Type: text/html; charset=utf-8'); 43 | $smarty->display('login.tpl'); 44 | 45 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.assign_smarty_interface.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: assign_smarty_interface
13 | * Purpose: assign the $smarty interface variable 14 | * @param array Format: null 15 | * @param Smarty 16 | */ 17 | function smarty_core_assign_smarty_interface($params, &$smarty) 18 | { 19 | if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { 20 | return; 21 | } 22 | 23 | $_globals_map = array('g' => 'HTTP_GET_VARS', 24 | 'p' => 'HTTP_POST_VARS', 25 | 'c' => 'HTTP_COOKIE_VARS', 26 | 's' => 'HTTP_SERVER_VARS', 27 | 'e' => 'HTTP_ENV_VARS'); 28 | 29 | $_smarty_vars_request = array(); 30 | 31 | foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { 32 | if (isset($_globals_map[$_c])) { 33 | $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); 34 | } 35 | } 36 | $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); 37 | 38 | $smarty->_smarty_vars['request'] = $_smarty_vars_request; 39 | } 40 | 41 | /* vim: set expandtab: */ 42 | 43 | ?> 44 | -------------------------------------------------------------------------------- /scripts/maps.js: -------------------------------------------------------------------------------- 1 | 2 | var gmap_data = Array(); 3 | var gmap_centered = false; 4 | 5 | function gmap_loader(){ 6 | if (!GBrowserIsCompatible()) { 7 | //return; 8 | }; 9 | 10 | var map = new GMap2(document.getElementById("google_map")); 11 | var geocoder = new GClientGeocoder(); 12 | map.addControl(new GLargeMapControl()); 13 | map.addControl(new GMapTypeControl()); 14 | map.setCenter(new GLatLng(52.514863,13.381863),10); 15 | for (var i=0; i10) t = 1000; 18 | if(i>20) t = 2000; 19 | gmap_add(map,geocoder,gmap_data[i].adr,gmap_data[i].info,t); 20 | 21 | } 22 | } 23 | 24 | function gmap_add(map,gc,adr,info,t){ 25 | setTimeout(function(){ 26 | gc.getLatLng( 27 | adr, 28 | function(point) { 29 | if (!point) { 30 | //alert(address + " not found"); 31 | } else { 32 | if(!gmap_centered){ 33 | map.setCenter(point, 5); 34 | gmap_centered = true; 35 | } 36 | var marker = new GMarker(point); 37 | map.addOverlay(marker); 38 | GEvent.addListener(marker, "click", function(){ 39 | this.openInfoWindowHtml( info ); 40 | }); 41 | } 42 | } 43 | ); 44 | },t); 45 | } 46 | 47 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.regex_replace.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: regex_replace
14 | * Purpose: regular expression search/replace 15 | * @link http://smarty.php.net/manual/en/language.modifier.regex.replace.php 16 | * regex_replace (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param string|array 20 | * @param string|array 21 | * @return string 22 | */ 23 | function smarty_modifier_regex_replace($string, $search, $replace) 24 | { 25 | if(is_array($search)) { 26 | foreach($search as $idx => $s) 27 | $search[$idx] = _smarty_regex_replace_check($s); 28 | } else { 29 | $search = _smarty_regex_replace_check($search); 30 | } 31 | 32 | return preg_replace($search, $replace, $string); 33 | } 34 | 35 | function _smarty_regex_replace_check($search) 36 | { 37 | if (($pos = strpos($search,"\0")) !== false) 38 | $search = substr($search,0,$pos); 39 | if (preg_match('!([a-zA-Z\s]+)$!s', $search, $match) && (strpos($match[1], 'e') !== false)) { 40 | /* remove eval-modifier from $search */ 41 | $search = substr($search, 0, -strlen($match[1])) . preg_replace('![e\s]+!', '', $match[1]); 42 | } 43 | return $search; 44 | } 45 | 46 | /* vim: set expandtab: */ 47 | 48 | ?> 49 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.is_trusted.php: -------------------------------------------------------------------------------- 1 | trusted_dir)) { 23 | $_rp = realpath($params['resource_name']); 24 | foreach ((array)$smarty->trusted_dir as $curr_dir) { 25 | if (!empty($curr_dir) && is_readable ($curr_dir)) { 26 | $_cd = realpath($curr_dir); 27 | if (strncmp($_rp, $_cd, strlen($_cd)) == 0 28 | && substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { 29 | $_smarty_trusted = true; 30 | break; 31 | } 32 | } 33 | } 34 | } 35 | 36 | } else { 37 | // resource is not on local file system 38 | $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], 39 | array($params['resource_name'], $smarty)); 40 | } 41 | 42 | return $_smarty_trusted; 43 | } 44 | 45 | /* vim: set expandtab: */ 46 | 47 | ?> 48 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.truncate.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: truncate
14 | * Purpose: Truncate a string to a certain length if necessary, 15 | * optionally splitting in the middle of a word, and 16 | * appending the $etc string or inserting $etc into the middle. 17 | * @link http://smarty.php.net/manual/en/language.modifier.truncate.php 18 | * truncate (Smarty online manual) 19 | * @author Monte Ohrt 20 | * @param string 21 | * @param integer 22 | * @param string 23 | * @param boolean 24 | * @param boolean 25 | * @return string 26 | */ 27 | function smarty_modifier_truncate($string, $length = 80, $etc = '...', 28 | $break_words = false, $middle = false) 29 | { 30 | if ($length == 0) 31 | return ''; 32 | 33 | if (strlen($string) > $length) { 34 | $length -= min($length, strlen($etc)); 35 | if (!$break_words && !$middle) { 36 | $string = preg_replace('/\s+?(\S+)?$/', '', substr($string, 0, $length+1)); 37 | } 38 | if(!$middle) { 39 | return substr($string, 0, $length) . $etc; 40 | } else { 41 | return substr($string, 0, $length/2) . $etc . substr($string, -$length/2); 42 | } 43 | } else { 44 | return $string; 45 | } 46 | } 47 | 48 | /* vim: set expandtab: */ 49 | 50 | ?> 51 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.noteparser.php: -------------------------------------------------------------------------------- 1 | 18 | * @param string 19 | * @return string 20 | */ 21 | function smarty_modifier_noteparser($string){ 22 | $string = htmlspecialchars($string); 23 | 24 | $string = preg_replace('!\*\*Call\*\*!i','Call',$string); 25 | $string = preg_replace('!\*\*ToDo\*\*!i','ToDo',$string); 26 | $string = preg_replace('!\*\*Mail\*\*!i','Mail',$string); 27 | $string = preg_replace('!\*\*Note\*\*!i','note',$string); 28 | 29 | $string = preg_replace('!\*\*(.*?)\*\*!','\\1',$string); 30 | $string = preg_replace('!__(.*?)__!','\\1',$string); 31 | $string = preg_replace('!//(.*?)//!','\\1',$string); 32 | 33 | $string = preg_replace('!(https?://[\w;/?:@&=+$\-_.\!~*\\\']+)!i', 34 | '\\1',$string); 35 | 36 | $string = preg_replace('!\n\n+!','

',$string); 37 | $string = nl2br($string); 38 | 39 | return '

'.$string.' 

'; 40 | } 41 | 42 | /* vim: set expandtab: */ 43 | 44 | ?> 45 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.rmdir.php: -------------------------------------------------------------------------------- 1 | keep root) 10 | * WARNING: no tests, it will try to remove what you tell it! 11 | * 12 | * @param string $dirname 13 | * @param integer $level 14 | * @param integer $exp_time 15 | * @return boolean 16 | */ 17 | 18 | // $dirname, $level = 1, $exp_time = null 19 | 20 | function smarty_core_rmdir($params, &$smarty) 21 | { 22 | if(!isset($params['level'])) { $params['level'] = 1; } 23 | if(!isset($params['exp_time'])) { $params['exp_time'] = null; } 24 | 25 | if($_handle = @opendir($params['dirname'])) { 26 | 27 | while (false !== ($_entry = readdir($_handle))) { 28 | if ($_entry != '.' && $_entry != '..') { 29 | if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { 30 | $_params = array( 31 | 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, 32 | 'level' => $params['level'] + 1, 33 | 'exp_time' => $params['exp_time'] 34 | ); 35 | smarty_core_rmdir($_params, $smarty); 36 | } 37 | else { 38 | $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); 39 | } 40 | } 41 | } 42 | closedir($_handle); 43 | } 44 | 45 | if ($params['level']) { 46 | return @rmdir($params['dirname']); 47 | } 48 | return (bool)$_handle; 49 | 50 | } 51 | 52 | /* vim: set expandtab: */ 53 | 54 | ?> 55 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.write_file.php: -------------------------------------------------------------------------------- 1 | $_dirname); 22 | require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); 23 | smarty_core_create_dir_structure($_params, $smarty); 24 | } 25 | 26 | // write to tmp file, then rename it to avoid file locking race condition 27 | $_tmp_file = tempnam($_dirname, 'wrt'); 28 | 29 | if (!($fd = @fopen($_tmp_file, 'wb'))) { 30 | $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); 31 | if (!($fd = @fopen($_tmp_file, 'wb'))) { 32 | $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); 33 | return false; 34 | } 35 | } 36 | 37 | fwrite($fd, $params['contents']); 38 | fclose($fd); 39 | 40 | if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { 41 | // On platforms and filesystems that cannot overwrite with rename() 42 | // delete the file before renaming it -- because windows always suffers 43 | // this, it is short-circuited to avoid the initial rename() attempt 44 | @unlink($params['filename']); 45 | @rename($_tmp_file, $params['filename']); 46 | } 47 | @chmod($params['filename'], $smarty->_file_perms); 48 | 49 | return true; 50 | } 51 | 52 | /* vim: set expandtab: */ 53 | 54 | ?> -------------------------------------------------------------------------------- /inc/smarty/internals/core.smarty_include_php.php: -------------------------------------------------------------------------------- 1 | $params['smarty_file']); 24 | require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); 25 | smarty_core_get_php_resource($_params, $smarty); 26 | $_smarty_resource_type = $_params['resource_type']; 27 | $_smarty_php_resource = $_params['php_resource']; 28 | 29 | if (!empty($params['smarty_assign'])) { 30 | ob_start(); 31 | if ($_smarty_resource_type == 'file') { 32 | $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); 33 | } else { 34 | $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); 35 | } 36 | $smarty->assign($params['smarty_assign'], ob_get_contents()); 37 | ob_end_clean(); 38 | } else { 39 | if ($_smarty_resource_type == 'file') { 40 | $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); 41 | } else { 42 | $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); 43 | } 44 | } 45 | } 46 | 47 | 48 | /* vim: set expandtab: */ 49 | 50 | ?> 51 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.display_debug_console.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: display_debug_console
13 | * Purpose: display the javascript debug console window 14 | * @param array Format: null 15 | * @param Smarty 16 | */ 17 | function smarty_core_display_debug_console($params, &$smarty) 18 | { 19 | // we must force compile the debug template in case the environment 20 | // changed between separate applications. 21 | 22 | if(empty($smarty->debug_tpl)) { 23 | // set path to debug template from SMARTY_DIR 24 | $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; 25 | if($smarty->security && is_file($smarty->debug_tpl)) { 26 | $smarty->secure_dir[] = realpath($smarty->debug_tpl); 27 | } 28 | $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; 29 | } 30 | 31 | $_ldelim_orig = $smarty->left_delimiter; 32 | $_rdelim_orig = $smarty->right_delimiter; 33 | 34 | $smarty->left_delimiter = '{'; 35 | $smarty->right_delimiter = '}'; 36 | 37 | $_compile_id_orig = $smarty->_compile_id; 38 | $smarty->_compile_id = null; 39 | 40 | $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); 41 | if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) 42 | { 43 | ob_start(); 44 | $smarty->_include($_compile_path); 45 | $_results = ob_get_contents(); 46 | ob_end_clean(); 47 | } else { 48 | $_results = ''; 49 | } 50 | 51 | $smarty->_compile_id = $_compile_id_orig; 52 | 53 | $smarty->left_delimiter = $_ldelim_orig; 54 | $smarty->right_delimiter = $_rdelim_orig; 55 | 56 | return $_results; 57 | } 58 | 59 | /* vim: set expandtab: */ 60 | 61 | ?> 62 | -------------------------------------------------------------------------------- /doc/docs: -------------------------------------------------------------------------------- 1 | # LDAP 2 Schema 2 | # 3 | # This is a schema extension for the LDAPab Addressbook by 4 | # CosmoCode GmbH www.cosmocode.de 5 | # 6 | # CosmoCode owns the following MIB Block: 7 | # iso.org.dod.internet.private.enterprise.16331.* 8 | # 9 | # CosmoCode currently uses the following OID hierachy to organize the IDs: 10 | # 11 | # defined in cosmo4ML.schema 12 | # 1.3.6.1.4.1.16331.1 formel CMS (cosmo4ML prefix) 13 | # 1.3.6.1.4.1.16331.1.1 SNMP (not used) 14 | # 1.3.6.1.4.1.16331.1.2 LDAP 15 | # 1.3.6.1.4.1.16331.1.2.1 AttributeTypes 16 | # 1.3.6.1.4.1.16331.1.2.2 ObjectClasses 17 | # 18 | # defined in ldapab.schema: 19 | # 1.3.6.1.4.1.16331.2 LDAPab 20 | # 1.3.6.1.4.1.16331.2.1 SNMP (not used) 21 | # 1.3.6.1.4.1.16331.2.2 LDAP 22 | # 1.3.6.1.4.1.16331.2.2.1 AttributeTypes 23 | # 1.3.6.1.4.1.16331.2.2.2 ObjectClasses 24 | 25 | 26 | # OID macros for ease of use: 27 | objectIdentifier cosmocodeOID 1.3.6.1.4.1.16331 28 | objectIdentifier LDAPab cosmocodeOID:2.2 29 | 30 | 31 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.1 NAME 'anniversary' 32 | DESC 'Holds Birthdays etc.' 33 | EQUALITY caseIgnoreMatch 34 | ORDERING caseIgnoreOrderingMatch 35 | SUBSTR caseIgnoreSubstringsMatch 36 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 37 | SINGLE-VALUE ) 38 | 39 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.2 NAME 'marker' 40 | DESC 'marking flag' 41 | EQUALITY caseIgnoreMatch 42 | ORDERING caseIgnoreOrderingMatch 43 | SUBSTR caseIgnoreSubstringsMatch 44 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 45 | ) 46 | 47 | objectclass ( 1.3.6.1.4.1.16331.2.2.2.1 NAME 'contactPerson' 48 | DESC 'Contact - Addressbook entry' 49 | AUXILIARY 50 | MAY ( anniversary $ marker ) 51 | ) 52 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.is_secure.php: -------------------------------------------------------------------------------- 1 | security || $smarty->security_settings['INCLUDE_ANY']) { 21 | return true; 22 | } 23 | 24 | if ($params['resource_type'] == 'file') { 25 | $_rp = realpath($params['resource_name']); 26 | if (isset($params['resource_base_path'])) { 27 | foreach ((array)$params['resource_base_path'] as $curr_dir) { 28 | if ( ($_cd = realpath($curr_dir)) !== false && 29 | strncmp($_rp, $_cd, strlen($_cd)) == 0 && 30 | substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { 31 | return true; 32 | } 33 | } 34 | } 35 | if (!empty($smarty->secure_dir)) { 36 | foreach ((array)$smarty->secure_dir as $curr_dir) { 37 | if ( ($_cd = realpath($curr_dir)) !== false) { 38 | if($_cd == $_rp) { 39 | return true; 40 | } elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 && 41 | substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) { 42 | return true; 43 | } 44 | } 45 | } 46 | } 47 | } else { 48 | // resource is not on local file system 49 | return call_user_func_array( 50 | $smarty->_plugins['resource'][$params['resource_type']][0][2], 51 | array($params['resource_name'], &$smarty)); 52 | } 53 | 54 | return false; 55 | } 56 | 57 | /* vim: set expandtab: */ 58 | 59 | ?> 60 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.date_format.php: -------------------------------------------------------------------------------- 1 | _get_plugin_filepath('shared', 'make_timestamp'); 12 | /** 13 | * Smarty date_format modifier plugin 14 | * 15 | * Type: modifier
16 | * Name: date_format
17 | * Purpose: format datestamps via strftime
18 | * Input:
19 | * - string: input date string 20 | * - format: strftime format for output 21 | * - default_date: default date if $string is empty 22 | * @link http://smarty.php.net/manual/en/language.modifier.date.format.php 23 | * date_format (Smarty online manual) 24 | * @author Monte Ohrt 25 | * @param string 26 | * @param string 27 | * @param string 28 | * @return string|void 29 | * @uses smarty_make_timestamp() 30 | */ 31 | function smarty_modifier_date_format($string, $format = '%b %e, %Y', $default_date = '') 32 | { 33 | if ($string != '') { 34 | $timestamp = smarty_make_timestamp($string); 35 | } elseif ($default_date != '') { 36 | $timestamp = smarty_make_timestamp($default_date); 37 | } else { 38 | return; 39 | } 40 | if (DIRECTORY_SEPARATOR == '\\') { 41 | $_win_from = array('%D', '%h', '%n', '%r', '%R', '%t', '%T'); 42 | $_win_to = array('%m/%d/%y', '%b', "\n", '%I:%M:%S %p', '%H:%M', "\t", '%H:%M:%S'); 43 | if (strpos($format, '%e') !== false) { 44 | $_win_from[] = '%e'; 45 | $_win_to[] = sprintf('%\' 2d', date('j', $timestamp)); 46 | } 47 | if (strpos($format, '%l') !== false) { 48 | $_win_from[] = '%l'; 49 | $_win_to[] = sprintf('%\' 2d', date('h', $timestamp)); 50 | } 51 | $format = str_replace($_win_from, $_win_to, $format); 52 | } 53 | return strftime($format, $timestamp); 54 | } 55 | 56 | /* vim: set expandtab: */ 57 | 58 | ?> 59 | -------------------------------------------------------------------------------- /scripts/interface/ifxpulsate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - pulsate 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | /** 15 | * @name Bounce 16 | * @description makes the element to pulsate 17 | * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast'] 18 | * @param Integer times how many times to pulsate 19 | * @param Function callback (optional) A function to be executed whenever the animation completes. 20 | * @type jQuery 21 | * @cat Plugins/Interface 22 | * @author Stefan Petre 23 | */ 24 | jQuery.fn.Pulsate = function(speed, times, callback) { 25 | return this.queue('interfaceFX',function(){ 26 | if (!jQuery.fxCheckTag(this)) { 27 | jQuery.dequeue(this, 'interfaceFX'); 28 | return false; 29 | } 30 | var fx = new jQuery.fx.Pulsate(this, speed, times, callback); 31 | fx.pulse(); 32 | }); 33 | }; 34 | 35 | jQuery.fx.Pulsate = function (el, speed, times, callback) 36 | { 37 | var z = this; 38 | z.times = times; 39 | z.cnt = 1; 40 | z.el = el; 41 | z.speed = speed; 42 | z.callback = callback; 43 | jQuery(z.el).show(); 44 | z.pulse = function() 45 | { 46 | z.cnt ++; 47 | z.e = new jQuery.fx( 48 | z.el, 49 | jQuery.speed( 50 | z.speed, 51 | function(){ 52 | z.ef = new jQuery.fx( 53 | z.el, 54 | jQuery.speed( 55 | z.speed, 56 | function() 57 | { 58 | if (z.cnt <= z.times) 59 | z.pulse(); 60 | else { 61 | jQuery.dequeue(z.el, 'interfaceFX'); 62 | if (z.callback && z.callback.constructor == Function) { 63 | z.callback.apply(z.el); 64 | } 65 | } 66 | } 67 | ), 68 | 'opacity' 69 | ); 70 | z.ef.custom(0,1); 71 | } 72 | ), 73 | 'opacity' 74 | ); 75 | z.e.custom(1,0); 76 | }; 77 | }; 78 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.counter.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: counter
14 | * Purpose: print out a counter value 15 | * @author Monte Ohrt 16 | * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} 17 | * (Smarty online manual) 18 | * @param array parameters 19 | * @param Smarty 20 | * @return string|null 21 | */ 22 | function smarty_function_counter($params, &$smarty) 23 | { 24 | static $counters = array(); 25 | 26 | $name = (isset($params['name'])) ? $params['name'] : 'default'; 27 | if (!isset($counters[$name])) { 28 | $counters[$name] = array( 29 | 'start'=>1, 30 | 'skip'=>1, 31 | 'direction'=>'up', 32 | 'count'=>1 33 | ); 34 | } 35 | $counter =& $counters[$name]; 36 | 37 | if (isset($params['start'])) { 38 | $counter['start'] = $counter['count'] = (int)$params['start']; 39 | } 40 | 41 | if (!empty($params['assign'])) { 42 | $counter['assign'] = $params['assign']; 43 | } 44 | 45 | if (isset($counter['assign'])) { 46 | $smarty->assign($counter['assign'], $counter['count']); 47 | } 48 | 49 | if (isset($params['print'])) { 50 | $print = (bool)$params['print']; 51 | } else { 52 | $print = empty($counter['assign']); 53 | } 54 | 55 | if ($print) { 56 | $retval = $counter['count']; 57 | } else { 58 | $retval = null; 59 | } 60 | 61 | if (isset($params['skip'])) { 62 | $counter['skip'] = $params['skip']; 63 | } 64 | 65 | if (isset($params['direction'])) { 66 | $counter['direction'] = $params['direction']; 67 | } 68 | 69 | if ($counter['direction'] == "down") 70 | $counter['count'] -= $counter['skip']; 71 | else 72 | $counter['count'] += $counter['skip']; 73 | 74 | return $retval; 75 | 76 | } 77 | 78 | /* vim: set expandtab: */ 79 | 80 | ?> 81 | -------------------------------------------------------------------------------- /tags.php: -------------------------------------------------------------------------------- 1 | assign('tagcloud',tag_cloud()); 12 | //display templates 13 | header('Content-Type: text/html; charset=utf-8'); 14 | $smarty->display('tags.tpl'); 15 | 16 | function tag_cloud(){ 17 | global $conf; 18 | global $LDAP_CON; 19 | global $FIELDS; 20 | if(!$FIELDS['_marker']) return; 21 | 22 | $result = ldap_queryabooks('(objectClass=inetOrgPerson)',$FIELDS['_marker']); 23 | $max = 0; 24 | $min = 999999999; 25 | $tags = array(); 26 | foreach ($result as $entry){ 27 | if(!empty($entry[$FIELDS['_marker']]) && count($entry[$FIELDS['_marker']])){ 28 | foreach($entry[$FIELDS['_marker']] as $marker){ 29 | $marker = strtolower($marker); 30 | if (empty($tags[$marker])) { $tags[$marker]=0; } 31 | $tags[$marker] += 1; 32 | if($tags[$marker] > $max) $max = $tags[$marker]; 33 | if($tags[$marker] < $min) $min = $tags[$marker]; 34 | } 35 | } 36 | } 37 | ksort($tags); 38 | tag_cloud_weight($tags,$min,$max,6); 39 | 40 | $out = ''; 41 | foreach($tags as $tag => $cnt){ 42 | $out .= ''; 43 | $out .= htmlspecialchars($tag).' '; 44 | } 45 | 46 | return $out; 47 | } 48 | 49 | /** 50 | * Calculate weights for a nicer tagcloud distribution 51 | */ 52 | function tag_cloud_weight(&$tags,$min,$max,$levels){ 53 | // calculate tresholds 54 | $tresholds = array(); 55 | for($i=0; $i<=$levels; $i++){ 56 | $tresholds[$i] = pow($max - $min + 1, $i/$levels); 57 | } 58 | 59 | // assign weights 60 | foreach($tags as $tag => $cnt){ 61 | foreach($tresholds as $tresh => $val){ 62 | if($cnt <= $val){ 63 | $tags[$tag] = $tresh; 64 | break; 65 | } 66 | $tags[$tag] = $levels; 67 | } 68 | } 69 | } 70 | 71 | 72 | -------------------------------------------------------------------------------- /scripts/interface/ifxhighlight.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - Highlight 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | 15 | /** 16 | * @name Highlight 17 | * @description Animates the backgroudn color to create a highlight animation 18 | * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast'] 19 | * @param String color color to highlight from 20 | * @param Function callback (optional) A function to be executed whenever the animation completes. 21 | * @param String easing (optional) The name of the easing effect that you want to use. 22 | * @type jQuery 23 | * @cat Plugins/Interface 24 | * @author Stefan Petre 25 | */ 26 | jQuery.fn.Highlight = function(speed, color, callback, easing) { 27 | return this.queue( 28 | 'interfaceColorFX', 29 | function() 30 | { 31 | this.oldStyleAttr = jQuery(this).attr("style") || ''; 32 | easing = typeof callback == 'string' ? callback : easing||null; 33 | callback = typeof callback == 'function' ? callback : null; 34 | var oldColor = jQuery(this).css('backgroundColor'); 35 | var parentEl = this.parentNode; 36 | while(oldColor == 'transparent' && parentEl) { 37 | oldColor = jQuery(parentEl).css('backgroundColor'); 38 | parentEl = parentEl.parentNode; 39 | } 40 | jQuery(this).css('backgroundColor', color); 41 | 42 | 43 | /* In IE, style is a object.. */ 44 | if(typeof this.oldStyleAttr == 'object') this.oldStyleAttr = this.oldStyleAttr["cssText"]; 45 | 46 | jQuery(this).animate( 47 | {'backgroundColor':oldColor}, 48 | speed, 49 | easing, 50 | function() { 51 | jQuery.dequeue(this, 'interfaceColorFX'); 52 | if(typeof jQuery(this).attr("style") == 'object') { 53 | jQuery(this).attr("style")["cssText"] = ""; 54 | jQuery(this).attr("style")["cssText"] = this.oldStyleAttr; 55 | } else { 56 | jQuery(this).attr("style", this.oldStyleAttr); 57 | } 58 | if (callback) 59 | callback.apply(this); 60 | } 61 | ); 62 | } 63 | ); 64 | }; -------------------------------------------------------------------------------- /inc/smarty/internals/core.assemble_plugin_filepath.php: -------------------------------------------------------------------------------- 1 | _filepaths_cache[$_plugin_filename])) { 19 | return $smarty->_filepaths_cache[$_plugin_filename]; 20 | } 21 | $_return = false; 22 | 23 | foreach ((array)$smarty->plugins_dir as $_plugin_dir) { 24 | 25 | $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; 26 | 27 | // see if path is relative 28 | if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { 29 | $_relative_paths[] = $_plugin_dir; 30 | // relative path, see if it is in the SMARTY_DIR 31 | if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { 32 | $_return = SMARTY_DIR . $_plugin_filepath; 33 | break; 34 | } 35 | } 36 | // try relative to cwd (or absolute) 37 | if (@is_readable($_plugin_filepath)) { 38 | $_return = $_plugin_filepath; 39 | break; 40 | } 41 | } 42 | 43 | if($_return === false) { 44 | // still not found, try PHP include_path 45 | if(isset($_relative_paths)) { 46 | foreach ((array)$_relative_paths as $_plugin_dir) { 47 | 48 | $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; 49 | 50 | $_params = array('file_path' => $_plugin_filepath); 51 | require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); 52 | if(smarty_core_get_include_path($_params, $smarty)) { 53 | $_return = $_params['new_file_path']; 54 | break; 55 | } 56 | } 57 | } 58 | } 59 | $smarty->_filepaths_cache[$_plugin_filename] = $_return; 60 | return $_return; 61 | } 62 | 63 | /* vim: set expandtab: */ 64 | 65 | ?> 66 | -------------------------------------------------------------------------------- /scripts/interface/ittabs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * TTabs 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | * 13 | */ 14 | 15 | jQuery.iTTabs = 16 | { 17 | doTab : function(e) 18 | { 19 | pressedKey = e.charCode || e.keyCode || -1; 20 | if (pressedKey == 9) { 21 | if (window.event) { 22 | window.event.cancelBubble = true; 23 | window.event.returnValue = false; 24 | } else { 25 | e.preventDefault(); 26 | e.stopPropagation(); 27 | } 28 | if (this.createTextRange) { 29 | document.selection.createRange().text="\t"; 30 | this.onblur = function() { this.focus(); this.onblur = null; }; 31 | } else if (this.setSelectionRange) { 32 | start = this.selectionStart; 33 | end = this.selectionEnd; 34 | this.value = this.value.substring(0, start) + "\t" + this.value.substr(end); 35 | this.setSelectionRange(start + 1, start + 1); 36 | this.focus(); 37 | } 38 | return false; 39 | } 40 | }, 41 | destroy : function() 42 | { 43 | return this.each( 44 | function() 45 | { 46 | if (this.hasTabsEnabled && this.hasTabsEnabled == true) { 47 | jQuery(this).unbind('keydown', jQuery.iTTabs.doTab); 48 | this.hasTabsEnabled = false; 49 | } 50 | } 51 | ); 52 | }, 53 | build : function() 54 | { 55 | return this.each( 56 | function() 57 | { 58 | if (this.tagName == 'TEXTAREA' && (!this.hasTabsEnabled || this.hasTabsEnabled == false)) { 59 | jQuery(this).bind('keydown', jQuery.iTTabs.doTab); 60 | this.hasTabsEnabled = true; 61 | } 62 | } 63 | ); 64 | } 65 | }; 66 | 67 | jQuery.fn.extend ( 68 | { 69 | /** 70 | * Enable tabs in textareas 71 | * 72 | * @name EnableTabs 73 | * @description Enable tabs in textareas 74 | * 75 | * @type jQuery 76 | * @cat Plugins/Interface 77 | * @author Stefan Petre 78 | */ 79 | EnableTabs : jQuery.iTTabs.build, 80 | /** 81 | * Disable tabs in textareas 82 | * 83 | * @name DisableTabs 84 | * @description Disable tabs in textareas 85 | * 86 | * @type jQuery 87 | * @cat Plugins/Interface 88 | * @author Stefan Petre 89 | */ 90 | DisableTabs : jQuery.iTTabs.destroy 91 | } 92 | ); -------------------------------------------------------------------------------- /inc/smarty/internals/core.load_resource_plugin.php: -------------------------------------------------------------------------------- 1 | _plugins['resource'][$params['type']]; 26 | if (isset($_plugin)) { 27 | if (!$_plugin[1] && count($_plugin[0])) { 28 | $_plugin[1] = true; 29 | foreach ($_plugin[0] as $_plugin_func) { 30 | if (!is_callable($_plugin_func)) { 31 | $_plugin[1] = false; 32 | break; 33 | } 34 | } 35 | } 36 | 37 | if (!$_plugin[1]) { 38 | $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); 39 | } 40 | 41 | return; 42 | } 43 | 44 | $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); 45 | $_found = ($_plugin_file != false); 46 | 47 | if ($_found) { /* 48 | * If the plugin file is found, it -must- provide the properly named 49 | * plugin functions. 50 | */ 51 | include_once($_plugin_file); 52 | 53 | /* 54 | * Locate functions that we require the plugin to provide. 55 | */ 56 | $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); 57 | $_resource_funcs = array(); 58 | foreach ($_resource_ops as $_op) { 59 | $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; 60 | if (!function_exists($_plugin_func)) { 61 | $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); 62 | return; 63 | } else { 64 | $_resource_funcs[] = $_plugin_func; 65 | } 66 | } 67 | 68 | $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); 69 | } 70 | } 71 | 72 | /* vim: set expandtab: */ 73 | 74 | ?> 75 | -------------------------------------------------------------------------------- /scripts/interface/ifxbounce.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - bounce 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | /** 15 | * @name Bounce 16 | * @description makes the element to bounce 17 | * @param Integer hight the hight in pxels for element to jumps to 18 | * @param Function callback (optional) A function to be executed whenever the animation completes. 19 | * @type jQuery 20 | * @cat Plugins/Interface 21 | * @author Stefan Petre 22 | */ 23 | jQuery.fn.Bounce = function (hight, callback) { 24 | return this.queue('interfaceFX', function(){ 25 | if (!jQuery.fxCheckTag(this)) { 26 | jQuery.dequeue(this, 'interfaceFX'); 27 | return false; 28 | } 29 | var e = new jQuery.fx.iBounce(this, hight, callback); 30 | e.bounce(); 31 | }); 32 | }; 33 | jQuery.fx.iBounce = function (e, hight, callback) 34 | { 35 | var z = this; 36 | z.el = jQuery(e); 37 | z.el.show(); 38 | z.callback = callback; 39 | z.hight = parseInt(hight)||40; 40 | z.oldStyle = {}; 41 | z.oldStyle.position = z.el.css('position'); 42 | z.oldStyle.top = parseInt(z.el.css('top'))||0; 43 | z.oldStyle.left = parseInt(z.el.css('left'))||0; 44 | 45 | if (z.oldStyle.position != 'relative' && z.oldStyle.position != 'absolute') { 46 | z.el.css('position', 'relative'); 47 | } 48 | 49 | z.times = 5; 50 | z.cnt = 1; 51 | 52 | z.bounce = function () 53 | { 54 | z.cnt ++; 55 | z.e = new jQuery.fx( 56 | z.el.get(0), 57 | { 58 | duration: 120, 59 | complete : function () 60 | { 61 | z.e = new jQuery.fx( 62 | z.el.get(0), 63 | { 64 | duration: 80, 65 | complete : function () 66 | { 67 | z.hight = parseInt(z.hight/2); 68 | if (z.cnt <= z.times) 69 | z.bounce(); 70 | else { 71 | z.el.css('position', z.oldStyle.position).css('top', z.oldStyle.top + 'px').css('left', z.oldStyle.left + 'px'); 72 | jQuery.dequeue(z.el.get(0), 'interfaceFX'); 73 | if (z.callback && z.callback.constructor == Function) { 74 | z.callback.apply(z.el.get(0)); 75 | } 76 | } 77 | } 78 | }, 79 | 'top' 80 | ); 81 | z.e.custom (z.oldStyle.top-z.hight, z.oldStyle.top); 82 | } 83 | }, 84 | 'top' 85 | ); 86 | z.e.custom (z.oldStyle.top, z.oldStyle.top-z.hight); 87 | }; 88 | 89 | }; -------------------------------------------------------------------------------- /inc/smarty/internals/core.rm_auto.php: -------------------------------------------------------------------------------- 1 | $params['auto_base'], 28 | 'level' => 0, 29 | 'exp_time' => $params['exp_time'] 30 | ); 31 | require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); 32 | $_res = smarty_core_rmdir($_params, $smarty); 33 | } else { 34 | $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); 35 | 36 | if(isset($params['auto_source'])) { 37 | if (isset($params['extensions'])) { 38 | $_res = false; 39 | foreach ((array)$params['extensions'] as $_extension) 40 | $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); 41 | } else { 42 | $_res = $smarty->_unlink($_tname, $params['exp_time']); 43 | } 44 | } elseif ($smarty->use_sub_dirs) { 45 | $_params = array( 46 | 'dirname' => $_tname, 47 | 'level' => 1, 48 | 'exp_time' => $params['exp_time'] 49 | ); 50 | require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); 51 | $_res = smarty_core_rmdir($_params, $smarty); 52 | } else { 53 | // remove matching file names 54 | $_handle = opendir($params['auto_base']); 55 | $_res = true; 56 | while (false !== ($_filename = readdir($_handle))) { 57 | if($_filename == '.' || $_filename == '..') { 58 | continue; 59 | } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { 60 | $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); 61 | } 62 | } 63 | } 64 | } 65 | 66 | return $_res; 67 | } 68 | 69 | /* vim: set expandtab: */ 70 | 71 | ?> 72 | -------------------------------------------------------------------------------- /templates/header.tpl: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | ConTagged - {$lang.ldapab} 6 | 7 | 8 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {if $conf.gmapkey} 24 | 25 | 26 | {/if} 27 | 28 | 29 | 30 | 38 | 39 | 40 | 41 |
42 | {if $LDAPERRORS != ''} 43 |
44 |

{$lang.err_ldap}

45 |

{$LDAPERRORS}

46 |
47 | {/if} 48 | 49 | 50 |
51 | 55 | 56 | 59 |
60 | 61 |
62 | {include file="toolbar.tpl"} 63 |
64 | 65 | 66 |
67 |
    68 | {foreach from=$lettertabs item=letter} 69 |
  • {$letter}
  • 70 | {/foreach} 71 |
  • #
  • 72 |
  • *
  • 73 |
74 |
75 | 76 |
77 | 78 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.process_cached_inserts.php: -------------------------------------------------------------------------------- 1 | _smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', 17 | $params['results'], $match); 18 | list($cached_inserts, $insert_args) = $match; 19 | 20 | for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { 21 | if ($smarty->debugging) { 22 | $_params = array(); 23 | require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); 24 | $debug_start_time = smarty_core_get_microtime($_params, $smarty); 25 | } 26 | 27 | $args = unserialize($insert_args[$i]); 28 | $name = $args['name']; 29 | 30 | if (isset($args['script'])) { 31 | $_params = array('resource_name' => $smarty->_dequote($args['script'])); 32 | require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); 33 | if(!smarty_core_get_php_resource($_params, $smarty)) { 34 | return false; 35 | } 36 | $resource_type = $_params['resource_type']; 37 | $php_resource = $_params['php_resource']; 38 | 39 | 40 | if ($resource_type == 'file') { 41 | $smarty->_include($php_resource, true); 42 | } else { 43 | $smarty->_eval($php_resource); 44 | } 45 | } 46 | 47 | $function_name = $smarty->_plugins['insert'][$name][0]; 48 | if (empty($args['assign'])) { 49 | $replace = $function_name($args, $smarty); 50 | } else { 51 | $smarty->assign($args['assign'], $function_name($args, $smarty)); 52 | $replace = ''; 53 | } 54 | 55 | $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i])); 56 | if ($smarty->debugging) { 57 | $_params = array(); 58 | require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); 59 | $smarty->_smarty_debug_info[] = array('type' => 'insert', 60 | 'filename' => 'insert_'.$name, 61 | 'depth' => $smarty->_inclusion_depth, 62 | 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); 63 | } 64 | } 65 | 66 | return $params['results']; 67 | } 68 | 69 | /* vim: set expandtab: */ 70 | 71 | ?> 72 | -------------------------------------------------------------------------------- /scripts/interface/ifxshake.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - shake 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | /** 15 | * @name Shake 16 | * @description makes the element to shake 17 | * @param Integer times how many tomes to shake the element 18 | * @param Function callback (optional) A function to be executed whenever the animation completes. 19 | * @type jQuery 20 | * @cat Plugins/Interface 21 | * @author Stefan Petre 22 | */ 23 | jQuery.fn.Shake = function (times, callback) { 24 | return this.queue('interfaceFX',function(){ 25 | if (!jQuery.fxCheckTag(this)) { 26 | jQuery.dequeue(this, 'interfaceFX'); 27 | return false; 28 | } 29 | var e = new jQuery.fx.Shake(this, times, callback); 30 | e.shake(); 31 | }); 32 | }; 33 | jQuery.fx.Shake = function (e, times, callback) 34 | { 35 | var z = this; 36 | z.el = jQuery(e); 37 | z.el.show(); 38 | z.times = parseInt(times)||3; 39 | z.callback = callback; 40 | z.cnt = 1; 41 | z.oldStyle = {}; 42 | z.oldStyle.position = z.el.css('position'); 43 | z.oldStyle.top = parseInt(z.el.css('top'))||0; 44 | z.oldStyle.left = parseInt(z.el.css('left'))||0; 45 | 46 | if (z.oldStyle.position != 'relative' && z.oldStyle.position != 'absolute') { 47 | z.el.css('position', 'relative'); 48 | } 49 | 50 | z.shake = function () 51 | { 52 | z.cnt ++; 53 | 54 | z.e = new jQuery.fx( 55 | z.el.get(0), 56 | { 57 | duration: 60, 58 | complete : function () 59 | { 60 | z.e = new jQuery.fx( 61 | z.el.get(0), 62 | { 63 | duration: 60, 64 | complete : function () 65 | { 66 | z.e = new jQuery.fx( 67 | e, 68 | { 69 | duration: 60, 70 | complete: function(){ 71 | if (z.cnt <= z.times) 72 | z.shake(); 73 | else { 74 | z.el.css('position', z.oldStyle.position).css('top', z.oldStyle.top + 'px').css('left', z.oldStyle.left + 'px'); 75 | jQuery.dequeue(z.el.get(0), 'interfaceFX'); 76 | if (z.callback && z.callback.constructor == Function) { 77 | z.callback.apply(z.el.get(0)); 78 | } 79 | } 80 | } 81 | }, 82 | 'left' 83 | ); 84 | z.e.custom (z.oldStyle.left-20, z.oldStyle.left); 85 | } 86 | }, 87 | 'left' 88 | ); 89 | z.e.custom (z.oldStyle.left+20, z.oldStyle.left-20); 90 | } 91 | }, 92 | 'left' 93 | ); 94 | z.e.custom (z.oldStyle.left, z.oldStyle.left+20); 95 | }; 96 | 97 | }; -------------------------------------------------------------------------------- /inc/smarty/internals/core.get_php_resource.php: -------------------------------------------------------------------------------- 1 | trusted_dir; 22 | $smarty->_parse_resource_name($params, $smarty); 23 | 24 | /* 25 | * Find out if the resource exists. 26 | */ 27 | 28 | if ($params['resource_type'] == 'file') { 29 | $_readable = false; 30 | if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { 31 | $_readable = true; 32 | } else { 33 | // test for file in include_path 34 | $_params = array('file_path' => $params['resource_name']); 35 | require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); 36 | if(smarty_core_get_include_path($_params, $smarty)) { 37 | $_include_path = $_params['new_file_path']; 38 | $_readable = true; 39 | } 40 | } 41 | } else if ($params['resource_type'] != 'file') { 42 | $_template_source = null; 43 | $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) 44 | && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], 45 | array($params['resource_name'], &$_template_source, &$smarty)); 46 | } 47 | 48 | /* 49 | * Set the error function, depending on which class calls us. 50 | */ 51 | if (method_exists($smarty, '_syntax_error')) { 52 | $_error_funcc = '_syntax_error'; 53 | } else { 54 | $_error_funcc = 'trigger_error'; 55 | } 56 | 57 | if ($_readable) { 58 | if ($smarty->security) { 59 | require_once(SMARTY_CORE_DIR . 'core.is_trusted.php'); 60 | if (!smarty_core_is_trusted($params, $smarty)) { 61 | $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); 62 | return false; 63 | } 64 | } 65 | } else { 66 | $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); 67 | return false; 68 | } 69 | 70 | if ($params['resource_type'] == 'file') { 71 | $params['php_resource'] = $params['resource_name']; 72 | } else { 73 | $params['php_resource'] = $_template_source; 74 | } 75 | return true; 76 | } 77 | 78 | /* vim: set expandtab: */ 79 | 80 | ?> 81 | -------------------------------------------------------------------------------- /templates/import_entry.tpl: -------------------------------------------------------------------------------- 1 | 2 | 3 | {$entry.name|h}, {$entry.givenname|h}
4 | {$entry.organization|h} {$entry.street|h} {$entry.zip|h} {$entry.location|h} 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | {foreach from=$entry.mail item=mail} 28 | 29 | {/foreach} 30 | 31 | 32 | {if $conf.privatebook} 33 | 36 | 39 | {else} 40 | 41 | {/if} 42 | 43 |
44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.create_dir_structure.php: -------------------------------------------------------------------------------- 1 | _dir_perms) && !is_dir($_new_dir)) { 69 | $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); 70 | return false; 71 | } 72 | $_new_dir .= '/'; 73 | } 74 | } 75 | } 76 | 77 | /* vim: set expandtab: */ 78 | 79 | ?> 80 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.run_insert_handler.php: -------------------------------------------------------------------------------- 1 | debugging) { 19 | $_params = array(); 20 | $_debug_start_time = smarty_core_get_microtime($_params, $smarty); 21 | } 22 | 23 | if ($smarty->caching) { 24 | $_arg_string = serialize($params['args']); 25 | $_name = $params['args']['name']; 26 | if (!isset($smarty->_cache_info['insert_tags'][$_name])) { 27 | $smarty->_cache_info['insert_tags'][$_name] = array('insert', 28 | $_name, 29 | $smarty->_plugins['insert'][$_name][1], 30 | $smarty->_plugins['insert'][$_name][2], 31 | !empty($params['args']['script']) ? true : false); 32 | } 33 | return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; 34 | } else { 35 | if (isset($params['args']['script'])) { 36 | $_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); 37 | require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); 38 | if(!smarty_core_get_php_resource($_params, $smarty)) { 39 | return false; 40 | } 41 | 42 | if ($_params['resource_type'] == 'file') { 43 | $smarty->_include($_params['php_resource'], true); 44 | } else { 45 | $smarty->_eval($_params['php_resource']); 46 | } 47 | unset($params['args']['script']); 48 | } 49 | 50 | $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; 51 | $_content = $_funcname($params['args'], $smarty); 52 | if ($smarty->debugging) { 53 | $_params = array(); 54 | require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); 55 | $smarty->_smarty_debug_info[] = array('type' => 'insert', 56 | 'filename' => 'insert_'.$params['args']['name'], 57 | 'depth' => $smarty->_inclusion_depth, 58 | 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); 59 | } 60 | 61 | if (!empty($params['args']["assign"])) { 62 | $smarty->assign($params['args']["assign"], $_content); 63 | } else { 64 | return $_content; 65 | } 66 | } 67 | } 68 | 69 | /* vim: set expandtab: */ 70 | 71 | ?> 72 | -------------------------------------------------------------------------------- /inc/smarty/plugins/outputfilter.trimwhitespace.php: -------------------------------------------------------------------------------- 1 | 12 | * Type: outputfilter
13 | * Name: trimwhitespace
14 | * Date: Jan 25, 2003
15 | * Purpose: trim leading white space and blank lines from 16 | * template source after it gets interpreted, cleaning 17 | * up code and saving bandwidth. Does not affect 18 | * <
>
and blocks.
19 | * Install: Drop into the plugin directory, call 20 | * $smarty->load_filter('output','trimwhitespace'); 21 | * from application. 22 | * @author Monte Ohrt 23 | * @author Contributions from Lars Noschinski 24 | * @version 1.3 25 | * @param string 26 | * @param Smarty 27 | */ 28 | function smarty_outputfilter_trimwhitespace($source, &$smarty) 29 | { 30 | // Pull out the script blocks 31 | preg_match_all("!]*?>.*?!is", $source, $match); 32 | $_script_blocks = $match[0]; 33 | $source = preg_replace("!]*?>.*?!is", 34 | '@@@SMARTY:TRIM:SCRIPT@@@', $source); 35 | 36 | // Pull out the pre blocks 37 | preg_match_all("!]*?>.*?!is", $source, $match); 38 | $_pre_blocks = $match[0]; 39 | $source = preg_replace("!]*?>.*?!is", 40 | '@@@SMARTY:TRIM:PRE@@@', $source); 41 | 42 | // Pull out the textarea blocks 43 | preg_match_all("!]*?>.*?!is", $source, $match); 44 | $_textarea_blocks = $match[0]; 45 | $source = preg_replace("!]*?>.*?!is", 46 | '@@@SMARTY:TRIM:TEXTAREA@@@', $source); 47 | 48 | // remove all leading spaces, tabs and carriage returns NOT 49 | // preceeded by a php close tag. 50 | $source = trim(preg_replace('/((?)\n)[\s]+/m', '\1', $source)); 51 | 52 | // replace textarea blocks 53 | smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:TEXTAREA@@@",$_textarea_blocks, $source); 54 | 55 | // replace pre blocks 56 | smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:PRE@@@",$_pre_blocks, $source); 57 | 58 | // replace script blocks 59 | smarty_outputfilter_trimwhitespace_replace("@@@SMARTY:TRIM:SCRIPT@@@",$_script_blocks, $source); 60 | 61 | return $source; 62 | } 63 | 64 | function smarty_outputfilter_trimwhitespace_replace($search_str, $replace, &$subject) { 65 | $_len = strlen($search_str); 66 | $_pos = 0; 67 | for ($_i=0, $_count=count($replace); $_i<$_count; $_i++) 68 | if (($_pos=strpos($subject, $search_str, $_pos))!==false) 69 | $subject = substr_replace($subject, $replace[$_i], $_pos, $_len); 70 | else 71 | break; 72 | 73 | } 74 | 75 | ?> 76 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.escape.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: escape
14 | * Purpose: Escape the string according to escapement type 15 | * @link http://smarty.php.net/manual/en/language.modifier.escape.php 16 | * escape (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param string 19 | * @param html|htmlall|url|quotes|hex|hexentity|javascript 20 | * @return string 21 | */ 22 | function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1') 23 | { 24 | switch ($esc_type) { 25 | case 'html': 26 | return htmlspecialchars($string, ENT_QUOTES, $char_set); 27 | 28 | case 'htmlall': 29 | return htmlentities($string, ENT_QUOTES, $char_set); 30 | 31 | case 'url': 32 | return rawurlencode($string); 33 | 34 | case 'urlpathinfo': 35 | return str_replace('%2F','/',rawurlencode($string)); 36 | 37 | case 'quotes': 38 | // escape unescaped single quotes 39 | return preg_replace("%(?'\\\\',"'"=>"\\'",'"'=>'\\"',"\r"=>'\\r',"\n"=>'\\n',''<\/')); 66 | 67 | case 'mail': 68 | // safe way to display e-mail address on a web page 69 | return str_replace(array('@', '.'),array(' [AT] ', ' [DOT] '), $string); 70 | 71 | case 'nonstd': 72 | // escape non-standard chars, such as ms document quotes 73 | $_res = ''; 74 | for($_i = 0, $_len = strlen($string); $_i < $_len; $_i++) { 75 | $_ord = ord(substr($string, $_i, 1)); 76 | // non-standard char, escape it 77 | if($_ord >= 126){ 78 | $_res .= '&#' . $_ord . ';'; 79 | } 80 | else { 81 | $_res .= substr($string, $_i, 1); 82 | } 83 | } 84 | return $_res; 85 | 86 | default: 87 | return $string; 88 | } 89 | } 90 | 91 | /* vim: set expandtab: */ 92 | 93 | ?> 94 | -------------------------------------------------------------------------------- /inc/config.php.dist: -------------------------------------------------------------------------------- 1 | 'ABQIAAAAwcgTzX14Lq48uGhuAgaC-RT2yXp_ZAY8_ufC3CFXhHIE1NvwkxSoniRWQPYZHIWuWPbij8hFqvrEuw', 63 | 'intranet.cosmo' => 'ABQIAAAAwcgTzX14Lq48uGhuAgaC-RTxyuybgLnXtMVD7dljhze3zUboVhTqk9yc-rQVvv2YwFFJN20RCNbIVA', 64 | 'intranet' => 'ABQIAAAAwcgTzX14Lq48uGhuAgaC-RTjlGRJ-JcA4ENdYSxSTUELqnaldxSOyZdbUNylw_BZHH1bBLrQNGtjZg', 65 | 'fileserver.cosmo' => 'ABQIAAAAwcgTzX14Lq48uGhuAgaC-RQ2oMD1p7-NjsUZiDyjvzpK3IuhixTXdHGQRp8jtjwAl-P4oPPEB_hGgw', 66 | ); 67 | 68 | // Force recompilation of smarty templates? 69 | $conf['smartycompile'] = 0; 70 | 71 | // LDAP classes to store with contacts. 72 | $conf['oclasses'] = array( 73 | 'inetOrgPerson', 74 | 'contactPerson', 75 | //'OXUserObject', 76 | //'evolutionPerson', 77 | //'officePerson', 78 | ); 79 | 80 | //custom LDAP field mappings, see inc/fields.php 81 | $conf['customFields'] = array(); 82 | -------------------------------------------------------------------------------- /inc/smarty/plugins/modifier.debug_print_var.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: debug_print_var
14 | * Purpose: formats variable contents for display in the console 15 | * @link http://smarty.php.net/manual/en/language.modifier.debug.print.var.php 16 | * debug_print_var (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param array|object 19 | * @param integer 20 | * @param integer 21 | * @return string 22 | */ 23 | function smarty_modifier_debug_print_var($var, $depth = 0, $length = 40) 24 | { 25 | $_replace = array( 26 | "\n" => '\n', 27 | "\r" => '\r', 28 | "\t" => '\t' 29 | ); 30 | 31 | switch (gettype($var)) { 32 | case 'array' : 33 | $results = 'Array (' . count($var) . ')'; 34 | foreach ($var as $curr_key => $curr_val) { 35 | $results .= '
' . str_repeat(' ', $depth * 2) 36 | . '' . strtr($curr_key, $_replace) . ' => ' 37 | . smarty_modifier_debug_print_var($curr_val, ++$depth, $length); 38 | $depth--; 39 | } 40 | break; 41 | case 'object' : 42 | $object_vars = get_object_vars($var); 43 | $results = '' . get_class($var) . ' Object (' . count($object_vars) . ')'; 44 | foreach ($object_vars as $curr_key => $curr_val) { 45 | $results .= '
' . str_repeat(' ', $depth * 2) 46 | . ' ->' . strtr($curr_key, $_replace) . ' = ' 47 | . smarty_modifier_debug_print_var($curr_val, ++$depth, $length); 48 | $depth--; 49 | } 50 | break; 51 | case 'boolean' : 52 | case 'NULL' : 53 | case 'resource' : 54 | if (true === $var) { 55 | $results = 'true'; 56 | } elseif (false === $var) { 57 | $results = 'false'; 58 | } elseif (null === $var) { 59 | $results = 'null'; 60 | } else { 61 | $results = htmlspecialchars((string) $var); 62 | } 63 | $results = '' . $results . ''; 64 | break; 65 | case 'integer' : 66 | case 'float' : 67 | $results = htmlspecialchars((string) $var); 68 | break; 69 | case 'string' : 70 | $results = strtr($var, $_replace); 71 | if (strlen($var) > $length ) { 72 | $results = substr($var, 0, $length - 3) . '...'; 73 | } 74 | $results = htmlspecialchars('"' . $results . '"'); 75 | break; 76 | case 'unknown type' : 77 | default : 78 | $results = strtr((string) $var, $_replace); 79 | if (strlen($results) > $length ) { 80 | $results = substr($results, 0, $length - 3) . '...'; 81 | } 82 | $results = htmlspecialchars($results); 83 | } 84 | 85 | return $results; 86 | } 87 | 88 | /* vim: set expandtab: */ 89 | 90 | ?> 91 | -------------------------------------------------------------------------------- /inc/lang/cn.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'LDAP名册'; 9 | 10 | $lang['name'] = '姓'; 11 | $lang['givenname'] = '名'; 12 | $lang['title'] = '头衔'; 13 | $lang['organization'] = '公司'; 14 | $lang['office'] = '办公地点'; 15 | $lang['street'] = '街名号码'; 16 | $lang['zip'] = '邮编'; 17 | $lang['location'] = '城市'; 18 | $lang['state'] = '省'; 19 | $lang['phone'] = '电话'; 20 | $lang['switchboard'] = 'Switchboard'; 21 | $lang['fax'] = '传真'; 22 | $lang['mobile'] = '手机'; 23 | $lang['pager'] = 'BP机'; 24 | $lang['homephone'] = '家庭电话'; 25 | $lang['homestreet'] = '家庭地址'; 26 | $lang['photo'] = '照片'; 27 | $lang['url'] = '网站'; 28 | $lang['note'] = '注释'; 29 | $lang['mail'] = '电邮'; 30 | $lang['manager'] = '账户'; 31 | 32 | $lang['anniversary'] = '生日'; 33 | $lang['marker'] = '标识'; 34 | $lang['tagcloud'] = '所有使用过的标识,都将按照字母顺序列.常用图标将会用大字符显示.'; 35 | 36 | $lang['business'] = '公共'; 37 | $lang['private'] = '私人'; 38 | $lang['extended'] = '其它'; 39 | $lang['communication'] = '交流方式'; 40 | 41 | $lang['delphoto'] = '删除已有照片'; 42 | 43 | $lang['notloggedin'] = '未登录'; 44 | $lang['loggedinas'] = '登录为'; 45 | $lang['login'] = '登入'; 46 | $lang['logout'] = '登出'; 47 | $lang['edit'] = '编辑'; 48 | $lang['show'] = '显示'; 49 | $lang['new'] = '新'; 50 | $lang['delete'] = '删除'; 51 | $lang['copy'] = '拷贝'; 52 | $lang['map'] = '地图'; 53 | $lang['csvexport'] = '保存到本地CSV'; 54 | $lang['vcfexport'] = '保存为VCard'; 55 | $lang['vcfimport'] = '导出'; 56 | $lang['search'] = '搜索'; 57 | $lang['submit'] = '保存'; 58 | $lang['help'] = '帮助'; 59 | $lang['select'] = '选择'; 60 | $lang['orgs'] = '组织列表'; 61 | $lang['upload'] = '上传'; 62 | 63 | $lang['publicbook'] = '公共地址簿'; 64 | $lang['privatebook'] = '私有地址簿'; 65 | 66 | $lang['username'] = '用户名'; 67 | $lang['password'] = '密码'; 68 | $lang['remember'] = '保存密码'; 69 | 70 | $lang['msg_login'] = '请登录!'; 71 | $lang['msg_loginfail'] = '登录失败!'; 72 | $lang['msg_reallydel'] = '真想删除这个记录吗?'; 73 | $lang['msg_addto'] = '请在地址本上选择记录应该加在哪里:'; 74 | $lang['msg_jpegonly'] = '只能用JPEG图像'; 75 | $lang['msg_dateformat'] = '日期格式YYYY-MM-DD'; 76 | $lang['msg_uploadvcf'] = '上传VCard文件'; 77 | $lang['msg_tagsep'] = '用逗号分隔'; 78 | 79 | $lang['err_noentries'] = '没有记录'; 80 | $lang['err_ldap'] = 'LDAP服务器返回下列错误'; 81 | 82 | $lang['openxchange'] = 'Xchange信息'; 83 | $lang['moreopenxchange'] = 'Xchange信息(继续)\'d'; 84 | $lang['instantmessenger'] = '即时信息'; 85 | $lang['birthday'] = '生日'; 86 | $lang['domain'] = '邮件域名'; 87 | $lang['country'] = '国家'; 88 | $lang['certificate'] = 'x.509认证'; 89 | $lang['timezone'] = '时区'; 90 | $lang['position'] = '地点'; 91 | $lang['department'] = '公寓房间号'; 92 | $lang['ipphone'] = 'IP电话'; 93 | $lang['spouse'] = '配偶'; 94 | -------------------------------------------------------------------------------- /templates/toolbar.tpl: -------------------------------------------------------------------------------- 1 |
    2 | {if $user or !$conf.userlogreq} 3 | 4 | 5 |
  • 6 | {$lang.orgs} 7 |
  • 8 | 9 |
  •  
  • 10 | 11 | {if $user} 12 |
  • 13 | {$lang.new} 14 |
  • 15 | {/if} 16 | 17 |
  •  
  • 18 | 19 | {if $dn} 20 | 21 | {if $user} 22 | 23 | 24 | {if $smarty.request.mode == 'edit'} 25 |
  • 26 | {$lang.show} 27 |
  • 28 | {elseif $smarty.request.mode != 'copy'} 29 |
  • 30 | {$lang.edit} 31 |
  • 32 |
  • 33 | {$lang.copy} 34 |
  • 35 |
  • 36 | {$lang.delete} 38 |
  • 39 | {/if} 40 | 41 | {/if} 42 | 43 | 44 |
  • 45 | {$lang.vcfexport} 46 |
  • 47 | 48 | 49 |
  • 50 | {$lang.qrcode} 51 |
  • 52 | 53 | 54 | {if $smarty.request.mode == 'map' && $conf.gmapkey} 55 |
  • 56 | {$lang.show} 57 |
  • 58 | {elseif $conf.gmapkey} 59 |
  • 60 | {$lang.map} 61 |
  • 62 | {/if} 63 | 64 |
  •  
  • 65 | {/if} 66 | 67 | 68 | {if $list} 69 | {if $smarty.request.export != 'map' && $conf.gmapkey} 70 |
  • 71 | {$lang.map} 72 |
  • 73 | {/if} 74 |
  • 75 | {$lang.csvexport} 77 |
  • 78 | {/if} 79 | 80 | {if $user} 81 |
  • 82 | {$lang.vcfimport} 83 |
  • 84 | {/if} 85 | 86 | {/if} 87 | 88 | 89 |
  • 90 | {$lang.help} 91 |
  • 92 | 93 | 94 | 95 |
96 | -------------------------------------------------------------------------------- /inc/smarty/plugins/block.textformat.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: textformat
13 | * Purpose: format text a certain way with preset styles 14 | * or custom wrap/indent settings
15 | * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} 16 | * (Smarty online manual) 17 | * @param array 18 | *
 19 |  * Params:   style: string (email)
 20 |  *           indent: integer (0)
 21 |  *           wrap: integer (80)
 22 |  *           wrap_char string ("\n")
 23 |  *           indent_char: string (" ")
 24 |  *           wrap_boundary: boolean (true)
 25 |  * 
26 | * @author Monte Ohrt 27 | * @param string contents of the block 28 | * @param Smarty clever simulation of a method 29 | * @return string string $content re-formatted 30 | */ 31 | function smarty_block_textformat($params, $content, &$smarty) 32 | { 33 | if (is_null($content)) { 34 | return; 35 | } 36 | 37 | $style = null; 38 | $indent = 0; 39 | $indent_first = 0; 40 | $indent_char = ' '; 41 | $wrap = 80; 42 | $wrap_char = "\n"; 43 | $wrap_cut = false; 44 | $assign = null; 45 | 46 | foreach ($params as $_key => $_val) { 47 | switch ($_key) { 48 | case 'style': 49 | case 'indent_char': 50 | case 'wrap_char': 51 | case 'assign': 52 | $$_key = (string)$_val; 53 | break; 54 | 55 | case 'indent': 56 | case 'indent_first': 57 | case 'wrap': 58 | $$_key = (int)$_val; 59 | break; 60 | 61 | case 'wrap_cut': 62 | $$_key = (bool)$_val; 63 | break; 64 | 65 | default: 66 | $smarty->trigger_error("textformat: unknown attribute '$_key'"); 67 | } 68 | } 69 | 70 | if ($style == 'email') { 71 | $wrap = 72; 72 | } 73 | 74 | // split into paragraphs 75 | $_paragraphs = preg_split('![\r\n][\r\n]!',$content); 76 | $_output = ''; 77 | 78 | for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { 79 | if ($_paragraphs[$_x] == '') { 80 | continue; 81 | } 82 | // convert mult. spaces & special chars to single space 83 | $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); 84 | // indent first line 85 | if($indent_first > 0) { 86 | $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; 87 | } 88 | // wordwrap sentences 89 | $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); 90 | // indent lines 91 | if($indent > 0) { 92 | $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); 93 | } 94 | } 95 | $_output = implode($wrap_char . $wrap_char, $_paragraphs); 96 | 97 | return $assign ? $smarty->assign($assign, $_output) : $_output; 98 | 99 | } 100 | 101 | /* vim: set expandtab: */ 102 | 103 | ?> 104 | -------------------------------------------------------------------------------- /inc/fields.php: -------------------------------------------------------------------------------- 1 | 'dn', // don't touch! 25 | 'name' => 'sn', 26 | 'displayname' => 'cn', 27 | 'givenname' => 'givenName', 28 | 'title' => 'title', 29 | 'organization' => 'o', // aka. company 30 | 'office' => 'physicalDeliveryOfficeName', 31 | 'street' => 'postalAddress', 32 | 'zip' => 'postalCode', 33 | 'location' => 'l', // aka. city 34 | 'phone' => 'telephoneNumber', 35 | 'fax' => 'facsimileTelephoneNumber', 36 | 'mobile' => 'mobile', // aka. cell phone 37 | 'pager' => 'pager', 38 | 'homephone' => 'homePhone', 39 | 'homestreet' => 'homePostalAddress', 40 | 'photo' => 'jpegPhoto', 41 | '_url' => 'labeledURI', 42 | 'note' => 'description', 43 | 'manager' => 'manager', // aka. key account 44 | '_mail' => 'mail', 45 | ); 46 | 47 | /** 48 | * If the provided "extended" schema is used the following fields 49 | * and object classes are added 50 | */ 51 | if (array_search('contactPerson', $conf['oclasses']) !== false) { 52 | $FIELDS['anniversary'] = 'anniversary'; 53 | $FIELDS['_marker'] = 'marker'; // aka. tags 54 | $FIELDS['country'] = 'c'; 55 | } 56 | 57 | /** 58 | * If the open exchange schema is used the following fields 59 | * and object classes are added 60 | */ 61 | if (array_search('OXUserObject', $conf['oclasses']) !== false) { 62 | $FIELDS['country'] = 'userCountry'; 63 | $FIELDS['birthday'] = 'birthDay'; 64 | $FIELDS['ipphone'] = 'IPPhone'; 65 | $FIELDS['_marker'] = 'OXUserCategories'; 66 | $FIELDS['instantmessenger'] = 'OXUserInstantMessenger'; 67 | $FIELDS['timezone'] = 'OXTimeZone'; 68 | $FIELDS['position'] = 'OXUserPosition'; 69 | $FIELDS['certificate'] = 'relClientCert'; 70 | $FIELDS['domain'] = 'domain'; 71 | } 72 | 73 | /** 74 | * If the Evolution schema is used the following fields 75 | * and object classes are added 76 | */ 77 | if (array_search('evolutionPerson', $conf['oclasses']) !== false) { 78 | $FIELDS['anniversary'] = 'anniversary'; 79 | $FIELDS['department'] = 'ou'; 80 | $FIELDS['state'] = 'st'; 81 | $FIELDS['phone'] = 'primaryPhone'; 82 | $FIELDS['switchboard'] = 'companyPhone'; 83 | $FIELDS['note'] = 'note'; 84 | $FIELDS['manager'] = 'seeAlso'; 85 | $FIELDS['birthday'] = 'birthDate'; 86 | $FIELDS['spouse'] = 'spouseName'; 87 | $FIELDS['_marker'] = 'categories'; // aka. tags 88 | } 89 | 90 | // add custom fields from config 91 | $FIELDS = array_merge($FIELDS, $conf['customFields']); 92 | 93 | /** 94 | * Flip the array 95 | */ 96 | $RFIELDS = array_flip($FIELDS); 97 | 98 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.write_compiled_include.php: -------------------------------------------------------------------------------- 1 | caching && \!\$this->_cache_including\)\: echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; endif;'; 19 | $_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{/nocache\:(\\2)#(\\3)\}\'; endif;'; 20 | 21 | preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', 22 | $params['compiled_content'], $_match_source, PREG_SET_ORDER); 23 | 24 | // no nocache-parts found: done 25 | if (count($_match_source)==0) return; 26 | 27 | // convert the matched php-code to functions 28 | $_include_compiled = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; 29 | $_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n"; 30 | 31 | $_compile_path = $params['include_file_path']; 32 | 33 | $smarty->_cache_serials[$_compile_path] = $params['cache_serial']; 34 | $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; 35 | 36 | $_include_compiled .= $params['plugins_code']; 37 | $_include_compiled .= "= 5.0) ? '_smarty' : 'this'; 40 | for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { 41 | $_match =& $_match_source[$_i]; 42 | $source = $_match[4]; 43 | if ($this_varname == '_smarty') { 44 | /* rename $this to $_smarty in the sourcecode */ 45 | $tokens = token_get_all('\n"; 81 | 82 | $_params = array('filename' => $_compile_path, 83 | 'contents' => $_include_compiled, 'create_dirs' => true); 84 | 85 | require_once(SMARTY_CORE_DIR . 'core.write_file.php'); 86 | smarty_core_write_file($_params, $smarty); 87 | return true; 88 | } 89 | 90 | 91 | ?> 92 | -------------------------------------------------------------------------------- /inc/lang/fr.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'Le carnet d\'adresse LDAP'; 9 | 10 | $lang['name'] = 'Nom de famille'; 11 | $lang['givenname'] = 'Prénom'; 12 | $lang['title'] = 'Titre'; 13 | $lang['organization'] = 'Compagnie'; 14 | $lang['office'] = 'Bureau'; 15 | $lang['street'] = 'N° de rue'; 16 | $lang['zip'] = 'Code Postal'; 17 | $lang['location'] = 'Ville'; 18 | $lang['phone'] = 'Téléphone'; 19 | $lang['fax'] = 'FAX'; 20 | $lang['mobile'] = 'Portable'; 21 | $lang['pager'] = 'Pager'; 22 | $lang['homephone'] = 'Téléphone (priv.)'; 23 | $lang['homestreet'] = 'Adresse (priv.)'; 24 | $lang['photo'] = 'Photo'; 25 | $lang['url'] = 'Site web'; 26 | $lang['note'] = 'Notes'; 27 | $lang['mail'] = 'E-Mail'; 28 | $lang['manager'] = 'Key Account'; 29 | 30 | $lang['anniversary'] = 'Anniversaire'; 31 | $lang['marker'] = 'Tags'; 32 | $lang['tagcloud'] = 'Tous les marqueurs par ordre alphabétique. Les marqueurs fréquent sont montré plus grand.'; 33 | 34 | $lang['business'] = 'Business'; 35 | $lang['private'] = 'Privé'; 36 | $lang['extended'] = 'Information Additionelle'; 37 | 38 | $lang['delphoto'] = 'Effacer la photo existante'; 39 | 40 | $lang['notloggedin'] = 'Non connecté'; 41 | $lang['loggedinas'] = 'Connecté en tant que'; 42 | $lang['login'] = 'Se connecter'; 43 | $lang['logout'] = 'Se déconnecter'; 44 | $lang['edit'] = 'Editer'; 45 | $lang['show'] = 'Montrer'; 46 | $lang['new'] = 'Nouveau'; 47 | $lang['delete'] = 'Effacer'; 48 | $lang['copy'] = 'Copier'; 49 | $lang['csvexport'] = 'CSV'; 50 | $lang['vcfexport'] = 'VCard'; 51 | $lang['vcfimport'] = 'Import'; 52 | $lang['search'] = 'Rechercher'; 53 | $lang['submit'] = 'Envoyer'; 54 | $lang['help'] = 'Aide'; 55 | $lang['select'] = 'Sélectionner'; 56 | $lang['orgs'] = 'Organisation'; 57 | $lang['upload'] = 'Upload'; 58 | 59 | $lang['publicbook'] = 'Carnet d\'adresse public'; 60 | $lang['privatebook'] = 'Carnet d\'adresse privé'; 61 | 62 | $lang['username'] = 'Utilisateur'; 63 | $lang['password'] = 'Mot de passe'; 64 | $lang['remember'] = 'Rester connecté sur cet ordinateur'; 65 | 66 | $lang['msg_login'] = 'Veuillez vous connecter !'; 67 | $lang['msg_loginfail'] = 'Echec de la connexion !'; 68 | $lang['msg_reallydel'] = 'Voulez-vous vraiment effacer cette entrée ?'; 69 | $lang['msg_addto'] = 'Séléectionnez le carnet d\'adresse ou ajouter une entrée:'; 70 | $lang['msg_jpegonly'] = 'seulement JPEG'; 71 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 72 | $lang['msg_uploadvcf'] = 'Envoyer un fichier VCard'; 73 | $lang['msg_tagsep'] = 'Séparé par des virgules'; 74 | 75 | $lang['err_noentries'] = 'Pas d\'entrée'; 76 | $lang['err_ldap'] = 'Le serveur LDAP à retourné les erreurs suivantes'; 77 | 78 | $lang['openxchange'] = 'Xchange Information'; 79 | $lang['moreopenxchange'] = 'Xchange Information Cont\'d'; 80 | $lang['instantmessenger'] = 'Inst Msg'; 81 | $lang['categories'] = 'Catégories'; 82 | $lang['birthday'] = 'Anniversaire'; 83 | $lang['domain'] = 'Mail Domain'; 84 | $lang['country'] = 'Pays'; 85 | $lang['certificate'] = 'x.509 Cert'; 86 | $lang['timezone'] = 'Fuseau horaire'; 87 | $lang['position'] = 'Position'; 88 | $lang['ipphone'] = 'Téléphone IP'; 89 | 90 | -------------------------------------------------------------------------------- /inc/lang/ko.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'LDAP 주소록'; 9 | 10 | $lang['name'] = '성'; 11 | $lang['givenname'] = '이름'; 12 | $lang['title'] = '제목'; 13 | $lang['organization'] = '회사'; 14 | $lang['office'] = '사무실'; 15 | $lang['street'] = '거리 번호'; 16 | $lang['zip'] = '우편 번호'; 17 | $lang['location'] = '시'; 18 | $lang['state'] = '주'; 19 | $lang['phone'] = '전화'; 20 | $lang['switchboard'] = '배전반'; 21 | $lang['fax'] = '팩스'; 22 | $lang['mobile'] = '휴대 전화'; 23 | $lang['pager'] = '호출기'; 24 | $lang['homephone'] = '전화 (비공개)'; 25 | $lang['homestreet'] = '주소 (비공개)'; 26 | $lang['photo'] = '사진'; 27 | $lang['url'] = '웹사이트'; 28 | $lang['note'] = '참고'; 29 | $lang['mail'] = '이메일'; 30 | $lang['manager'] = '키 계정'; 31 | 32 | $lang['anniversary'] = '기념일'; 33 | $lang['marker'] = '태그'; 34 | $lang['tagcloud'] = '모든 사용된 태그는, 알파벳순으로 정렬됩니다. 자주 사용된 태그는 크게 보여집니다.'; 35 | 36 | $lang['business'] = '업무'; 37 | $lang['private'] = '비공개'; 38 | $lang['extended'] = '추가적인 정보'; 39 | $lang['communication'] = '의사 소통'; 40 | 41 | $lang['delphoto'] = '기존 사진 삭제'; 42 | 43 | $lang['notloggedin'] = '로그인하지 않음'; 44 | $lang['loggedinas'] = '로그인한 사용자'; 45 | $lang['login'] = '로그인'; 46 | $lang['logout'] = '로그아웃'; 47 | $lang['edit'] = '편집'; 48 | $lang['show'] = '보기'; 49 | $lang['new'] = '새로'; 50 | $lang['delete'] = '삭제'; 51 | $lang['copy'] = '복사'; 52 | $lang['map'] = '지도'; 53 | $lang['csvexport'] = 'CSV'; 54 | $lang['vcfexport'] = 'VCard'; 55 | $lang['vcfimport'] = '가져오기'; 56 | $lang['search'] = '검색'; 57 | $lang['submit'] = '저장'; 58 | $lang['help'] = '도움말'; 59 | $lang['select'] = '선택'; 60 | $lang['orgs'] = '회사'; 61 | $lang['upload'] = '올리기'; 62 | $lang['qrcode'] = 'QR 코드'; 63 | 64 | $lang['publicbook'] = '공개 주소록'; 65 | $lang['privatebook'] = '비공개 주소록'; 66 | 67 | $lang['username'] = '사용자 이름'; 68 | $lang['password'] = '비밀번호'; 69 | $lang['remember'] = '이 컴퓨터에서 로그인 유지'; 70 | 71 | $lang['msg_login'] = '로그인하세요!'; 72 | $lang['msg_loginfail'] = '로그인에 실패했습니다!'; 73 | $lang['msg_reallydel'] = '항목을 삭제하겠습니까?'; 74 | $lang['msg_addto'] = '항목을 추가해야할 주소록을 선택하세요:'; 75 | $lang['msg_jpegonly'] = 'JPEG만'; 76 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 77 | $lang['msg_uploadvcf'] = 'VCard 파일 올리기'; 78 | $lang['msg_tagsep'] = '쉼표로 구분'; 79 | 80 | $lang['err_noentries'] = '항목 없음'; 81 | $lang['err_ldap'] = 'LDAP 서버가 다음 오류를 반환했습니다'; 82 | $lang['err_wrongFileType'] = '파일은 그림이 아닙니다.'; 83 | $lang['err_fileNotUploaded'] = '파일을 올릴 수 없습니다, 막대했을 수도 있습니다?'; 84 | 85 | $lang['openxchange'] = 'Xchange 정보'; 86 | $lang['moreopenxchange'] = 'Xchange 정보 계속\'d'; 87 | $lang['instantmessenger'] = '인스턴트 메신저'; 88 | $lang['birthday'] = '생일'; 89 | $lang['domain'] = '메일 도메인'; 90 | $lang['country'] = '국가'; 91 | $lang['certificate'] = 'x.509 인증서'; 92 | $lang['timezone'] = '시간대'; 93 | $lang['position'] = '위치'; 94 | $lang['department'] = '부분'; 95 | $lang['ipphone'] = 'IP 전화'; 96 | $lang['spouse'] = '배우자'; 97 | 98 | $lang['lettertabs'] = 'ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'; 99 | -------------------------------------------------------------------------------- /inc/lang/it.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'The LDAP address book'; 9 | 10 | $lang['name'] = 'Cognome'; 11 | $lang['givenname'] = 'Nome'; 12 | $lang['title'] = 'Titolo'; 13 | $lang['organization'] = 'Azienda'; 14 | $lang['office'] = 'Ufficio'; 15 | $lang['street'] = 'Via'; 16 | $lang['zip'] = 'Codice Postale'; 17 | $lang['location'] = 'Citt'; 18 | $lang['phone'] = 'Telefono'; 19 | $lang['fax'] = 'FAX'; 20 | $lang['mobile'] = 'Cellulare'; 21 | $lang['pager'] = 'Pager'; 22 | $lang['homephone'] = 'Telefono (priv.)'; 23 | $lang['homestreet'] = 'Indirizzo (priv.)'; 24 | $lang['photo'] = 'Foto'; 25 | $lang['url'] = 'Sito Web'; 26 | $lang['note'] = 'Note'; 27 | $lang['mail'] = 'E-Mail'; 28 | $lang['manager'] = 'Key Account'; 29 | 30 | $lang['anniversary'] = 'Compleanno'; 31 | $lang['marker'] = 'Etichetta'; 32 | $lang['tagcloud'] = 'Tutte le etichette in ordine alfaberico. Le piu usate sono piu grandi.'; 33 | 34 | $lang['business'] = 'Affari'; 35 | $lang['private'] = 'Privato'; 36 | $lang['extended'] = 'Informazione addizionale'; 37 | 38 | $lang['delphoto'] = 'Cancella foto esistente'; 39 | 40 | $lang['notloggedin'] = 'Non connesso'; 41 | $lang['loggedinas'] = 'Connesso come'; 42 | $lang['login'] = 'Connetti'; 43 | $lang['logout'] = 'Disconnetti'; 44 | $lang['edit'] = 'Modifica'; 45 | $lang['show'] = 'Mostra'; 46 | $lang['new'] = 'Nuovo'; 47 | $lang['delete'] = 'Cancella'; 48 | $lang['copy'] = 'Copia'; 49 | $lang['csvexport'] = 'CSV'; 50 | $lang['vcfexport'] = 'VCard'; 51 | $lang['vcfimport'] = 'Importa'; 52 | $lang['search'] = 'Cerca'; 53 | $lang['submit'] = 'Invia'; 54 | $lang['help'] = 'Aiuto'; 55 | $lang['select'] = 'Seleziona'; 56 | $lang['orgs'] = 'Aziende'; 57 | $lang['upload'] = 'Carica'; 58 | 59 | $lang['publicbook'] = 'Indirizzario pubblico'; 60 | $lang['privatebook'] = 'Indirizzario privato'; 61 | 62 | $lang['username'] = 'Username'; 63 | $lang['password'] = 'Password'; 64 | $lang['remember'] = 'Rimani connesso su questo computer'; 65 | 66 | $lang['msg_login'] = 'Collegarsi, prego!'; 67 | $lang['msg_loginfail'] = 'Accessi fallito!'; 68 | $lang['msg_reallydel'] = 'Cancella veramente?'; 69 | $lang['msg_addto'] = 'Scegli l\'indirizzario a cui aggiungere la voce:'; 70 | $lang['msg_jpegonly'] = 'Solo JPEG'; 71 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 72 | $lang['msg_uploadvcf'] = 'Upload VCard File'; 73 | $lang['msg_tagsep'] = 'Separato da virgole'; 74 | 75 | $lang['err_noentries'] = 'Nessuna voce'; 76 | $lang['err_ldap'] = 'Il server LDAP ha restituito i seguenti errori'; 77 | 78 | $lang['openxchange'] = 'Xchange Information'; 79 | $lang['moreopenxchange'] = 'Xchange Information Cont\'d'; 80 | $lang['instantmessenger'] = 'Inst Msg'; 81 | $lang['categories'] = 'Categorie'; 82 | $lang['birthday'] = 'Compleanno'; 83 | $lang['domain'] = 'Dominio e-mail'; 84 | $lang['country'] = 'Paese'; 85 | $lang['certificate'] = 'Certificato x.509'; 86 | $lang['timezone'] = 'Fuso orario'; 87 | $lang['position'] = 'Posizione'; 88 | $lang['ipphone'] = 'Telefono IP'; 89 | 90 | -------------------------------------------------------------------------------- /inc/lang/nl.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'Het LDAP adresboek'; 9 | 10 | $lang['name'] = 'Achternaam'; 11 | $lang['givenname'] = 'Voornaam'; 12 | $lang['title'] = 'Titel'; 13 | $lang['organization'] = 'Bedrijf'; 14 | $lang['office'] = 'Kantoor'; 15 | $lang['street'] = 'Straat'; 16 | $lang['zip'] = 'Postcode'; 17 | $lang['location'] = 'Stad'; 18 | $lang['phone'] = 'Telefoon'; 19 | $lang['fax'] = 'FAX'; 20 | $lang['mobile'] = 'Mobiel'; 21 | $lang['pager'] = 'Pager'; 22 | $lang['homephone'] = 'Telefoon (priv.)'; 23 | $lang['homestreet'] = 'Adres (priv.)'; 24 | $lang['photo'] = 'Afbeelding'; 25 | $lang['url'] = 'Website'; 26 | $lang['note'] = 'Aantekeningen'; 27 | $lang['mail'] = 'E-Mail'; 28 | $lang['manager'] = 'Key Account'; 29 | 30 | $lang['anniversary'] = 'Verjaardag'; 31 | $lang['marker'] = 'Categorieen'; 32 | $lang['tagcloud'] = 'Alle gebruikte categorieen, op alfabet gesorteerd. Veelgebruikte categorieen worden groter afgebeeld'; 33 | 34 | $lang['business'] = 'Bedrijf'; 35 | $lang['private'] = 'Prive'; 36 | $lang['extended'] = 'Overige informatie'; 37 | 38 | $lang['delphoto'] = 'Verwijder bestaande afbeelding'; 39 | 40 | $lang['notloggedin'] = 'Niet ingelogd'; 41 | $lang['loggedinas'] = 'Ingelogd als'; 42 | $lang['login'] = 'Log in'; 43 | $lang['logout'] = 'Log uit'; 44 | $lang['edit'] = 'Wijzig'; 45 | $lang['show'] = 'Toon'; 46 | $lang['new'] = 'Nieuw'; 47 | $lang['delete'] = 'Verwijder'; 48 | $lang['copy'] = 'Dupliceer'; 49 | $lang['csvexport'] = 'CSV'; 50 | $lang['vcfexport'] = 'VCard'; 51 | $lang['vcfimport'] = 'Importeer'; 52 | $lang['search'] = 'Zoek'; 53 | $lang['submit'] = 'Verstuur'; 54 | $lang['help'] = 'Help'; 55 | $lang['select'] = 'Selecteer'; 56 | $lang['orgs'] = 'Bedrijven'; 57 | $lang['upload'] = 'Upload'; 58 | 59 | $lang['publicbook'] = 'Publiek Adresboek'; 60 | $lang['privatebook'] = 'Persoonlijk Adresboek'; 61 | 62 | $lang['username'] = 'Gebruikersnaam'; 63 | $lang['password'] = 'Wachtwoord'; 64 | $lang['remember'] = 'Blijf ingelogd op deze computer'; 65 | 66 | $lang['msg_login'] = 'Log eerst in SVP!'; 67 | $lang['msg_loginfail'] = 'Inloggen mislukt!'; 68 | $lang['msg_reallydel'] = 'Deze definitief verwijderen?'; 69 | $lang['msg_addto'] = 'Kies adresboek om op te slaan:'; 70 | $lang['msg_jpegonly'] = 'Alleen JPEG afbeeldingen'; 71 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 72 | $lang['msg_uploadvcf'] = 'Upload VCard bestand'; 73 | $lang['msg_tagsep'] = 'Komma gescheiden (CSV)'; 74 | 75 | $lang['err_noentries'] = 'Geen gegevens'; 76 | $lang['err_ldap'] = 'De LDAP server meldt de volgende fouten:'; 77 | 78 | $lang['openxchange'] = 'Xchange Informatie'; 79 | $lang['moreopenxchange'] = 'Xchange Informatie (meer..)'; 80 | $lang['instantmessenger'] = 'Intstant messenger'; 81 | $lang['categories'] = 'Categorieen'; 82 | $lang['birthday'] = 'Verjaardag'; 83 | $lang['domain'] = 'Email domein'; 84 | $lang['country'] = 'Land'; 85 | $lang['certificate'] = 'x.509 Certificaat'; 86 | $lang['timezone'] = 'Tijdzone'; 87 | $lang['position'] = 'Positie'; 88 | $lang['ipphone'] = 'VOIP Telefoon'; 89 | 90 | 91 | -------------------------------------------------------------------------------- /doc/slapd.example: -------------------------------------------------------------------------------- 1 | # This is the main ldapd configuration file. See slapd.conf(5) for more 2 | # info on the configuration options. 3 | 4 | # Schema and objectClass definitions 5 | include /etc/ldap/schema/core.schema 6 | include /etc/ldap/schema/cosine.schema 7 | include /etc/ldap/schema/nis.schema 8 | include /etc/ldap/schema/inetorgperson.schema 9 | include /etc/ldap/schema/ldapab.schema 10 | 11 | 12 | # Schema check allows for forcing entries to 13 | # match schemas for their objectClasses's 14 | schemacheck on 15 | 16 | # Where the pid file is put. The init.d script 17 | # will not stop the server if you change this. 18 | pidfile /var/run/slapd.pid 19 | 20 | # List of arguments that were passed to the server 21 | argsfile /var/run/slapd.args 22 | 23 | # Where to store the replica logs 24 | replogfile /var/lib/ldap/replog 25 | 26 | # Read slapd.conf(5) for possible values 27 | #loglevel 256 28 | loglevel 0 29 | 30 | # Don't set a limit n returned result sets 31 | sizelimit -1 32 | 33 | ####################################################################### 34 | # ldbm database definitions 35 | ####################################################################### 36 | 37 | # The backend type, ldbm, is the default standard 38 | database ldbm 39 | 40 | # The base of your directory 41 | suffix "o=cosmocode,c=de" 42 | 43 | # Where the database file are physically stored 44 | directory "/var/lib/ldap" 45 | 46 | # Indexing options 47 | index objectClass eq 48 | 49 | ## support pbb_getsampwnam() 50 | index uid pres,eq 51 | ## support pdb_getsampwrid() 52 | index rid eq 53 | 54 | ## uncomment these if you are storing posixAccount and 55 | ## posixGroup entries in the directory as well 56 | index uidNumber eq 57 | index gidNumber eq 58 | index cn eq 59 | index memberUid eq 60 | 61 | # Save the time that the entry gets modified 62 | lastmod on 63 | 64 | # The userPassword by default can be changed 65 | # by the entry owning it if they are authenticated. 66 | # Others should not be able to see it, except the 67 | # admin entry below 68 | access to attrs=userPassword 69 | by dn="cn=admin,o=cosmocode,c=de" write 70 | by anonymous auth 71 | by self write 72 | by * none 73 | 74 | access to attrs=lmPassword 75 | by dn="cn=admin,o=cosmocode,c=de" write 76 | by anonymous auth 77 | by self write 78 | by * none 79 | 80 | access to attrs=ntPassword 81 | by dn="cn=admin,o=cosmocode,c=de" write 82 | by anonymous auth 83 | by self write 84 | by * none 85 | 86 | # private LDAP Addressbook is readable and writable for the owner only 87 | access to dn.regex="(.*,)?ou=contacts,cn=([^,]+),ou=people,(.*)$" 88 | by dn.regex="cn=$2,ou=people,$3" write 89 | by * none 90 | 91 | # user entry is writable for the owner only, but readable for all 92 | access to dn.regex="(.*,)?cn=([^,]+),ou=people,(.*)$" 93 | by dn.regex="cn=ldapadmin,o=cosmocode,c=de" write 94 | by dn.regex="cn=$2,ou=people,$3" write 95 | by * read 96 | 97 | # global LDAP Addressbook is writable for all authenticated users 98 | # This entry has to be _before_ any other entry that matches the contact 99 | # tree eg. the * entry 100 | access to dn.subtree="ou=contacts,o=cosmocode,c=de" 101 | by users write 102 | by * read 103 | 104 | # The admin dn has full write access 105 | access to * 106 | by dn="cn=admin,o=cosmocode,c=de" write 107 | by * read 108 | 109 | 110 | -------------------------------------------------------------------------------- /inc/lang/tr.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'LDAP Adres Defteri'; 9 | 10 | $lang['name'] = 'Soyad'; 11 | $lang['givenname'] = 'Ad'; 12 | $lang['title'] = 'Ünvan'; 13 | $lang['organization'] = 'Şirket'; 14 | $lang['office'] = 'Ofis'; 15 | $lang['street'] = 'Adres'; 16 | $lang['zip'] = 'Posta Kodu'; 17 | $lang['location'] = 'Şehir'; 18 | $lang['state'] = 'Eyalet'; 19 | $lang['phone'] = 'Telefon'; 20 | $lang['switchboard'] = 'Santral'; 21 | $lang['fax'] = 'Fax'; 22 | $lang['mobile'] = 'Cep'; 23 | $lang['pager'] = 'Çağrı'; 24 | $lang['homephone'] = 'Telefon (özel)'; 25 | $lang['homestreet'] = 'Adres (özel)'; 26 | $lang['photo'] = 'Resim'; 27 | $lang['url'] = 'Web Sitesi'; 28 | $lang['note'] = 'Notlar'; 29 | $lang['mail'] = 'E-Mail'; 30 | $lang['manager'] = 'Anahtar Hesap'; 31 | 32 | $lang['anniversary'] = 'Yıldönümü'; 33 | $lang['marker'] = 'Tagler'; 34 | $lang['tagcloud'] = 'Kullanılan bütün tagler alfabetik olarak sıralanmıştır. Sıkça kullanılan tagler daha büyük gösterilmiştir.'; 35 | 36 | $lang['business'] = 'İş'; 37 | $lang['private'] = 'Özel'; 38 | $lang['extended'] = 'İlave Bilgiler'; 39 | $lang['communication'] = 'Haberleşme'; 40 | 41 | $lang['delphoto'] = 'Var olan resmi sil'; 42 | 43 | $lang['notloggedin'] = 'Giriş yapılmamış'; 44 | $lang['loggedinas'] = 'Giriş yapmiş kullanıcı'; 45 | $lang['login'] = 'Giriş Yap'; 46 | $lang['logout'] = 'Sistemten Çık'; 47 | $lang['edit'] = 'Düzenle'; 48 | $lang['show'] = 'Göster'; 49 | $lang['new'] = 'Yeni'; 50 | $lang['delete'] = 'Sil'; 51 | $lang['copy'] = 'Kopyala'; 52 | $lang['map'] = 'Harita'; 53 | $lang['csvexport'] = 'CSV'; 54 | $lang['vcfexport'] = 'VCard'; 55 | $lang['vcfimport'] = 'İçe getir'; 56 | $lang['search'] = 'Ara'; 57 | $lang['submit'] = 'Kaydet'; 58 | $lang['help'] = 'Yardım'; 59 | $lang['select'] = 'Seç'; 60 | $lang['orgs'] = 'Şirketler'; 61 | $lang['upload'] = 'Yükle'; 62 | 63 | $lang['publicbook'] = 'Açık Adres Defteri'; 64 | $lang['privatebook'] = 'Özel Adres Defteri'; 65 | 66 | $lang['username'] = 'Kullanıcı Adı'; 67 | $lang['password'] = 'Parola'; 68 | $lang['remember'] = 'Bu bilgisayarda bağlı kal'; 69 | 70 | $lang['msg_login'] = 'Lütfen giriş yapınız!'; 71 | $lang['msg_loginfail'] = 'Giriş başarısız!'; 72 | $lang['msg_reallydel'] = 'Gerçekten silinsin mi?'; 73 | $lang['msg_addto'] = 'Ekleme yapmak istediğiniz adres defterini seçiniz:'; 74 | $lang['msg_jpegonly'] = 'Sadece JPEG'; 75 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 76 | $lang['msg_uploadvcf'] = 'VCard dosyası yükle'; 77 | $lang['msg_tagsep'] = 'Virgülle ayrılmış'; 78 | 79 | $lang['err_noentries'] = 'Sonuç yok'; 80 | $lang['err_ldap'] = 'LDAP sunucusundan aşağıdaki hata gönderildi.'; 81 | 82 | $lang['openxchange'] = 'Xchange bilgisi'; 83 | $lang['moreopenxchange'] = 'Xchange bilgisi (devam)'; 84 | $lang['instantmessenger'] = 'Anında İletişim'; 85 | $lang['birthday'] = 'Doğum günü'; 86 | $lang['domain'] = 'E-Posta Domain'; 87 | $lang['country'] = 'Ülke'; 88 | $lang['certificate'] = 'x.509 Cert'; 89 | $lang['timezone'] = 'Zaman Dilimi'; 90 | $lang['position'] = 'Pozisyon'; 91 | $lang['department'] = 'Bölüm'; 92 | $lang['ipphone'] = 'IP Telefon'; 93 | $lang['spouse'] = 'Eşi'; 94 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.cycle.php: -------------------------------------------------------------------------------- 1 | 12 | * Name: cycle
13 | * Date: May 3, 2002
14 | * Purpose: cycle through given values
15 | * Input: 16 | * - name = name of cycle (optional) 17 | * - values = comma separated list of values to cycle, 18 | * or an array of values to cycle 19 | * (this can be left out for subsequent calls) 20 | * - reset = boolean - resets given var to true 21 | * - print = boolean - print var or not. default is true 22 | * - advance = boolean - whether or not to advance the cycle 23 | * - delimiter = the value delimiter, default is "," 24 | * - assign = boolean, assigns to template var instead of 25 | * printed. 26 | * 27 | * Examples:
28 | *
 29 |  * {cycle values="#eeeeee,#d0d0d0d"}
 30 |  * {cycle name=row values="one,two,three" reset=true}
 31 |  * {cycle name=row}
 32 |  * 
33 | * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} 34 | * (Smarty online manual) 35 | * @author Monte Ohrt 36 | * @author credit to Mark Priatel 37 | * @author credit to Gerard 38 | * @author credit to Jason Sweat 39 | * @version 1.3 40 | * @param array 41 | * @param Smarty 42 | * @return string|null 43 | */ 44 | function smarty_function_cycle($params, &$smarty) 45 | { 46 | static $cycle_vars; 47 | 48 | $name = (empty($params['name'])) ? 'default' : $params['name']; 49 | $print = (isset($params['print'])) ? (bool)$params['print'] : true; 50 | $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; 51 | $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; 52 | 53 | if (!in_array('values', array_keys($params))) { 54 | if(!isset($cycle_vars[$name]['values'])) { 55 | $smarty->trigger_error("cycle: missing 'values' parameter"); 56 | return; 57 | } 58 | } else { 59 | if(isset($cycle_vars[$name]['values']) 60 | && $cycle_vars[$name]['values'] != $params['values'] ) { 61 | $cycle_vars[$name]['index'] = 0; 62 | } 63 | $cycle_vars[$name]['values'] = $params['values']; 64 | } 65 | 66 | if (isset($params['delimiter'])) { 67 | $cycle_vars[$name]['delimiter'] = $params['delimiter']; 68 | } elseif (!isset($cycle_vars[$name]['delimiter'])) { 69 | $cycle_vars[$name]['delimiter'] = ','; 70 | } 71 | 72 | if(is_array($cycle_vars[$name]['values'])) { 73 | $cycle_array = $cycle_vars[$name]['values']; 74 | } else { 75 | $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); 76 | } 77 | 78 | if(!isset($cycle_vars[$name]['index']) || $reset ) { 79 | $cycle_vars[$name]['index'] = 0; 80 | } 81 | 82 | if (isset($params['assign'])) { 83 | $print = false; 84 | $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); 85 | } 86 | 87 | if($print) { 88 | $retval = $cycle_array[$cycle_vars[$name]['index']]; 89 | } else { 90 | $retval = null; 91 | } 92 | 93 | if($advance) { 94 | if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { 95 | $cycle_vars[$name]['index'] = 0; 96 | } else { 97 | $cycle_vars[$name]['index']++; 98 | } 99 | } 100 | 101 | return $retval; 102 | } 103 | 104 | /* vim: set expandtab: */ 105 | 106 | ?> 107 | -------------------------------------------------------------------------------- /scripts/interface/iexpander.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * Expander 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | /** 15 | * Expands text and textarea elements while new characters are typed to the a miximum width 16 | * 17 | * @name Expander 18 | * @description Expands text and textarea elements while new characters are typed to the a miximum width 19 | * @param Mixed limit integer if only expands in width, array if expands in width and height 20 | * @type jQuery 21 | * @cat Plugins/Interface 22 | * @author Stefan Petre 23 | */ 24 | 25 | jQuery.iExpander = 26 | { 27 | helper : null, 28 | expand : function() 29 | { 30 | 31 | text = this.value; 32 | if (!text) 33 | return; 34 | style = { 35 | fontFamily: jQuery(this).css('fontFamily')||'', 36 | fontSize: jQuery(this).css('fontSize')||'', 37 | fontWeight: jQuery(this).css('fontWeight')||'', 38 | fontStyle: jQuery(this).css('fontStyle')||'', 39 | fontStretch: jQuery(this).css('fontStretch')||'', 40 | fontVariant: jQuery(this).css('fontVariant')||'', 41 | letterSpacing: jQuery(this).css('letterSpacing')||'', 42 | wordSpacing: jQuery(this).css('wordSpacing')||'' 43 | }; 44 | jQuery.iExpander.helper.css(style); 45 | html = jQuery.iExpander.htmlEntities(text); 46 | html = html.replace(new RegExp( "\\n", "g" ), "
"); 47 | jQuery.iExpander.helper.html('pW'); 48 | spacer = jQuery.iExpander.helper.get(0).offsetWidth; 49 | jQuery.iExpander.helper.html(html); 50 | width = jQuery.iExpander.helper.get(0).offsetWidth + spacer; 51 | if (this.Expander.limit && width > this.Expander.limit[0]) { 52 | width = this.Expander.limit[0]; 53 | } 54 | this.style.width = width + 'px'; 55 | if (this.tagName == 'TEXTAREA') { 56 | height = jQuery.iExpander.helper.get(0).offsetHeight + spacer; 57 | if (this.Expander.limit && height > this.Expander.limit[1]) { 58 | height = this.Expander.limit[1]; 59 | } 60 | this.style.height = height + 'px'; 61 | } 62 | }, 63 | htmlEntities : function(text) 64 | { 65 | entities = { 66 | '&':'&', 67 | '<':'<', 68 | '>':'>', 69 | '"':'"' 70 | }; 71 | for(i in entities) { 72 | text = text.replace(new RegExp(i,'g'),entities[i]); 73 | } 74 | return text; 75 | }, 76 | build : function(limit) 77 | { 78 | if (jQuery.iExpander.helper == null) { 79 | jQuery('body', document).append(''); 80 | jQuery.iExpander.helper = jQuery('#expanderHelper'); 81 | } 82 | return this.each( 83 | function() 84 | { 85 | if (/TEXTAREA|INPUT/.test(this.tagName)) { 86 | if (this.tagName == 'INPUT') { 87 | elType = this.getAttribute('type'); 88 | if (!/text|password/.test(elType)) { 89 | return; 90 | } 91 | } 92 | if (limit && (limit.constructor == Number || (limit.constructor == Array && limit.length == 2))) { 93 | if (limit.constructor == Number) 94 | limit = [limit, limit]; 95 | else { 96 | limit[0] = parseInt(limit[0])||400; 97 | limit[1] = parseInt(limit[1])||400; 98 | } 99 | this.Expander = { 100 | limit : limit 101 | }; 102 | } 103 | jQuery(this) 104 | .blur(jQuery.iExpander.expand) 105 | .keyup(jQuery.iExpander.expand) 106 | .keypress(jQuery.iExpander.expand); 107 | jQuery.iExpander.expand.apply(this); 108 | } 109 | } 110 | ); 111 | } 112 | }; 113 | 114 | jQuery.fn.Autoexpand = jQuery.iExpander.build; -------------------------------------------------------------------------------- /inc/smarty/plugins/function.math.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: math
14 | * Purpose: handle math computations in template 15 | * 16 | * @link http://www.smarty.net/manual/en/language.function.math.php {math} 17 | * (Smarty online manual) 18 | * @author Monte Ohrt 19 | * 20 | * @param array $params parameters 21 | * @param Smarty_Internal_Template $template template object 22 | * 23 | * @return string|null 24 | */ 25 | function smarty_function_math($params, $template) 26 | { 27 | static $_allowed_funcs = 28 | array('int' => true, 'abs' => true, 'ceil' => true, 'cos' => true, 'exp' => true, 'floor' => true, 29 | 'log' => true, 'log10' => true, 'max' => true, 'min' => true, 'pi' => true, 'pow' => true, 'rand' => true, 30 | 'round' => true, 'sin' => true, 'sqrt' => true, 'srand' => true, 'tan' => true); 31 | // be sure equation parameter is present 32 | if (empty($params[ 'equation' ])) { 33 | trigger_error("math: missing equation parameter", E_USER_WARNING); 34 | 35 | return; 36 | } 37 | 38 | $equation = $params[ 'equation' ]; 39 | 40 | // make sure parenthesis are balanced 41 | if (substr_count($equation, "(") != substr_count($equation, ")")) { 42 | trigger_error("math: unbalanced parenthesis", E_USER_WARNING); 43 | 44 | return; 45 | } 46 | 47 | // disallow backticks 48 | if (strpos($equation, '`') !== false) { 49 | trigger_error("math: backtick character not allowed in equation", E_USER_WARNING); 50 | 51 | return; 52 | } 53 | 54 | // also disallow dollar signs 55 | if (strpos($equation, '$') !== false) { 56 | trigger_error("math: dollar signs not allowed in equation", E_USER_WARNING); 57 | 58 | return; 59 | } 60 | 61 | // match all vars in equation, make sure all are passed 62 | preg_match_all('!(?:0x[a-fA-F0-9]+)|([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)!', $equation, $match); 63 | 64 | foreach ($match[ 1 ] as $curr_var) { 65 | if ($curr_var && !isset($params[ $curr_var ]) && !isset($_allowed_funcs[ $curr_var ])) { 66 | trigger_error("math: function call $curr_var not allowed", E_USER_WARNING); 67 | 68 | return; 69 | } 70 | } 71 | 72 | foreach ($params as $key => $val) { 73 | if ($key != "equation" && $key != "format" && $key != "assign") { 74 | // make sure value is not empty 75 | if (strlen($val) == 0) { 76 | trigger_error("math: parameter $key is empty", E_USER_WARNING); 77 | 78 | return; 79 | } 80 | if (!is_numeric($val)) { 81 | trigger_error("math: parameter $key: is not numeric", E_USER_WARNING); 82 | 83 | return; 84 | } 85 | $equation = preg_replace("/\b$key\b/", " \$params['$key'] ", $equation); 86 | } 87 | } 88 | $smarty_math_result = null; 89 | eval("\$smarty_math_result = " . $equation . ";"); 90 | 91 | if (empty($params[ 'format' ])) { 92 | if (empty($params[ 'assign' ])) { 93 | return $smarty_math_result; 94 | } else { 95 | $template->assign($params[ 'assign' ], $smarty_math_result); 96 | } 97 | } else { 98 | if (empty($params[ 'assign' ])) { 99 | printf($params[ 'format' ], $smarty_math_result); 100 | } else { 101 | $template->assign($params[ 'assign' ], sprintf($params[ 'format' ], $smarty_math_result)); 102 | } 103 | } 104 | } 105 | -------------------------------------------------------------------------------- /inc/smarty/plugins/function.popup.php: -------------------------------------------------------------------------------- 1 | 13 | * Name: popup
14 | * Purpose: make text pop up in windows via overlib 15 | * @link http://smarty.php.net/manual/en/language.function.popup.php {popup} 16 | * (Smarty online manual) 17 | * @author Monte Ohrt 18 | * @param array 19 | * @param Smarty 20 | * @return string 21 | */ 22 | function smarty_function_popup($params, &$smarty) 23 | { 24 | $append = ''; 25 | foreach ($params as $_key=>$_value) { 26 | switch ($_key) { 27 | case 'text': 28 | case 'trigger': 29 | case 'function': 30 | case 'inarray': 31 | $$_key = (string)$_value; 32 | if ($_key == 'function' || $_key == 'inarray') 33 | $append .= ',' . strtoupper($_key) . ",'$_value'"; 34 | break; 35 | 36 | case 'caption': 37 | case 'closetext': 38 | case 'status': 39 | $append .= ',' . strtoupper($_key) . ",'" . str_replace("'","\'",$_value) . "'"; 40 | break; 41 | 42 | case 'fgcolor': 43 | case 'bgcolor': 44 | case 'textcolor': 45 | case 'capcolor': 46 | case 'closecolor': 47 | case 'textfont': 48 | case 'captionfont': 49 | case 'closefont': 50 | case 'fgbackground': 51 | case 'bgbackground': 52 | case 'caparray': 53 | case 'capicon': 54 | case 'background': 55 | case 'frame': 56 | $append .= ',' . strtoupper($_key) . ",'$_value'"; 57 | break; 58 | 59 | case 'textsize': 60 | case 'captionsize': 61 | case 'closesize': 62 | case 'width': 63 | case 'height': 64 | case 'border': 65 | case 'offsetx': 66 | case 'offsety': 67 | case 'snapx': 68 | case 'snapy': 69 | case 'fixx': 70 | case 'fixy': 71 | case 'padx': 72 | case 'pady': 73 | case 'timeout': 74 | case 'delay': 75 | $append .= ',' . strtoupper($_key) . ",$_value"; 76 | break; 77 | 78 | case 'sticky': 79 | case 'left': 80 | case 'right': 81 | case 'center': 82 | case 'above': 83 | case 'below': 84 | case 'noclose': 85 | case 'autostatus': 86 | case 'autostatuscap': 87 | case 'fullhtml': 88 | case 'hauto': 89 | case 'vauto': 90 | case 'mouseoff': 91 | case 'followmouse': 92 | case 'closeclick': 93 | if ($_value) $append .= ',' . strtoupper($_key); 94 | break; 95 | 96 | default: 97 | $smarty->trigger_error("[popup] unknown parameter $_key", E_USER_WARNING); 98 | } 99 | } 100 | 101 | if (empty($text) && !isset($inarray) && empty($function)) { 102 | $smarty->trigger_error("overlib: attribute 'text' or 'inarray' or 'function' required"); 103 | return false; 104 | } 105 | 106 | if (empty($trigger)) { $trigger = "onmouseover"; } 107 | 108 | $retval = $trigger . '="return overlib(\''.preg_replace(array("!'!","![\r\n]!"),array("\'",'\r'),$text).'\''; 109 | $retval .= $append . ');"'; 110 | if ($trigger == 'onmouseover') 111 | $retval .= ' onmouseout="nd();"'; 112 | 113 | 114 | return $retval; 115 | } 116 | 117 | /* vim: set expandtab: */ 118 | 119 | ?> 120 | -------------------------------------------------------------------------------- /doc/ldapab.schema: -------------------------------------------------------------------------------- 1 | # LDAP 2 Schema 2 | # 3 | # This is a schema extension for the LDAPab Addressbook by 4 | # CosmoCode GmbH www.cosmocode.de 5 | # 6 | # CosmoCode owns the following MIB Block: 7 | # iso.org.dod.internet.private.enterprise.16331.* 8 | # 9 | # CosmoCode currently uses the following OID hierachy to organize the IDs: 10 | # 11 | # defined in cosmo4ML.schema 12 | # 1.3.6.1.4.1.16331.1 formel CMS (cosmo4ML prefix) 13 | # 1.3.6.1.4.1.16331.1.1 SNMP (not used) 14 | # 1.3.6.1.4.1.16331.1.2 LDAP 15 | # 1.3.6.1.4.1.16331.1.2.1 AttributeTypes 16 | # 1.3.6.1.4.1.16331.1.2.2 ObjectClasses 17 | # 18 | # defined in ldapab.schema: 19 | # 1.3.6.1.4.1.16331.2 LDAPab 20 | # 1.3.6.1.4.1.16331.2.1 SNMP (not used) 21 | # 1.3.6.1.4.1.16331.2.2 LDAP 22 | # 1.3.6.1.4.1.16331.2.2.1 AttributeTypes 23 | # 1.3.6.1.4.1.16331.2.2.2 ObjectClasses 24 | 25 | 26 | # OID macros for ease of use: 27 | objectIdentifier cosmocodeOID 1.3.6.1.4.1.16331 28 | objectIdentifier LDAPab cosmocodeOID:2.2 29 | 30 | 31 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.1 NAME 'anniversary' 32 | DESC 'Holds Marriage dates etc.' 33 | EQUALITY caseIgnoreMatch 34 | ORDERING caseIgnoreOrderingMatch 35 | SUBSTR caseIgnoreSubstringsMatch 36 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 37 | SINGLE-VALUE ) 38 | 39 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.2 NAME 'marker' 40 | DESC 'For tagging support' 41 | EQUALITY caseIgnoreMatch 42 | ORDERING caseIgnoreOrderingMatch 43 | SUBSTR caseIgnoreSubstringsMatch 44 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 45 | ) 46 | 47 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.3 NAME 'birthday' 48 | DESC 'Date of birth' 49 | EQUALITY caseIgnoreMatch 50 | ORDERING caseIgnoreOrderingMatch 51 | SUBSTR caseIgnoreSubstringsMatch 52 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 53 | SINGLE-VALUE ) 54 | 55 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.51 NAME 'custom1' 56 | DESC 'Thunderbird compatible custom field 1' 57 | EQUALITY caseIgnoreMatch 58 | ORDERING caseIgnoreOrderingMatch 59 | SUBSTR caseIgnoreSubstringsMatch 60 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 61 | ) 62 | 63 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.52 NAME 'custom2' 64 | DESC 'Thunderbird compatible custom field 2' 65 | EQUALITY caseIgnoreMatch 66 | ORDERING caseIgnoreOrderingMatch 67 | SUBSTR caseIgnoreSubstringsMatch 68 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 69 | ) 70 | 71 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.53 NAME 'custom3' 72 | DESC 'Thunderbird compatible custom field 3' 73 | EQUALITY caseIgnoreMatch 74 | ORDERING caseIgnoreOrderingMatch 75 | SUBSTR caseIgnoreSubstringsMatch 76 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 77 | ) 78 | 79 | attributetype ( 1.3.6.1.4.1.16331.2.2.1.54 NAME 'custom4' 80 | DESC 'Thunderbird compatible custom field 4' 81 | EQUALITY caseIgnoreMatch 82 | ORDERING caseIgnoreOrderingMatch 83 | SUBSTR caseIgnoreSubstringsMatch 84 | SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} 85 | ) 86 | 87 | 88 | # The c attribute is defined in core.schema! 89 | objectclass ( 1.3.6.1.4.1.16331.2.2.2.1 NAME 'contactPerson' 90 | DESC 'Contact - Addressbook entry' 91 | AUXILIARY 92 | MAY ( anniversary $ marker $ birthday $ custom1 $ 93 | custom2 $ custom3 $ custom4 $ c) 94 | ) 95 | 96 | 97 | -------------------------------------------------------------------------------- /scripts/interface/ifxscrollto.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - scroll to 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | /** 14 | * Applies a scrolling effect to document until the element gets into viewport 15 | */ 16 | jQuery.fn.extend ( 17 | { 18 | /** 19 | * @name ScrollTo 20 | * @description scrolls the document until the lement gets into viewport 21 | * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast'] 22 | * @param String axis (optional) whatever to scroll on vertical, horizontal or both axis ['vertical'|'horizontal'|null] 23 | * @param String easing (optional) The name of the easing effect that you want to use. 24 | * @type jQuery 25 | * @cat Plugins/Interface 26 | * @author Stefan Petre 27 | */ 28 | ScrollTo : function(speed, axis, easing) { 29 | o = jQuery.speed(speed); 30 | return this.queue('interfaceFX',function(){ 31 | new jQuery.fx.ScrollTo(this, o, axis, easing); 32 | }); 33 | }, 34 | /** 35 | * @name ScrollToAnchors 36 | * @description all links to '#elementId' will animate scroll 37 | * @param Mixed speed animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast'] 38 | * @param String axis (optional) whatever to scroll on vertical, horizontal or both axis ['vertical'|'horizontal'|null] 39 | * @param String easing (optional) The name of the easing effect that you want to use. 40 | * @type jQuery 41 | * @cat Plugins/Interface 42 | * @author Stefan Petre 43 | */ 44 | /*inspired by David Maciejewski www.macx.de*/ 45 | ScrollToAnchors : function(speed, axis, easing) { 46 | return this.each( 47 | function() 48 | { 49 | jQuery('a[@href*="#"]', this).click( 50 | function(e) 51 | { 52 | parts = this.href.split('#'); 53 | jQuery('#' + parts[1]).ScrollTo(speed, axis, easing); 54 | return false; 55 | } 56 | ); 57 | } 58 | ) 59 | } 60 | } 61 | ); 62 | 63 | jQuery.fx.ScrollTo = function (e, o, axis, easing) 64 | { 65 | var z = this; 66 | z.o = o; 67 | z.e = e; 68 | z.axis = /vertical|horizontal/.test(axis) ? axis : false; 69 | z.easing = easing; 70 | p = jQuery.iUtil.getPosition(e); 71 | s = jQuery.iUtil.getScroll(); 72 | z.clear = function(){clearInterval(z.timer);z.timer=null;jQuery.dequeue(z.e, 'interfaceFX');}; 73 | z.t=(new Date).getTime(); 74 | s.h = s.h > s.ih ? (s.h - s.ih) : s.h; 75 | s.w = s.w > s.iw ? (s.w - s.iw) : s.w; 76 | z.endTop = p.y > s.h ? s.h : p.y; 77 | z.endLeft = p.x > s.w ? s.w : p.x; 78 | z.startTop = s.t; 79 | z.startLeft = s.l; 80 | z.step = function(){ 81 | var t = (new Date).getTime(); 82 | var n = t - z.t; 83 | var p = n / z.o.duration; 84 | if (t >= z.o.duration+z.t) { 85 | z.clear(); 86 | setTimeout(function(){z.scroll(z.endTop, z.endLeft)},13); 87 | } else { 88 | if (!z.axis || z.axis == 'vertical') { 89 | if (!jQuery.easing || !jQuery.easing[z.easing]) { 90 | st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.endTop-z.startTop) + z.startTop; 91 | } else { 92 | st = jQuery.easing[z.easing](p, n, z.startTop, (z.endTop - z.startTop), z.o.duration); 93 | } 94 | } else { 95 | st = z.startTop; 96 | } 97 | if (!z.axis || z.axis == 'horizontal') { 98 | if (!jQuery.easing || !jQuery.easing[z.easing]) { 99 | sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.endLeft-z.startLeft) + z.startLeft; 100 | } else { 101 | sl = jQuery.easing[z.easing](p, n, z.startLeft, (z.endLeft - z.startLeft), z.o.duration); 102 | } 103 | } else { 104 | sl = z.startLeft; 105 | } 106 | z.scroll(st, sl); 107 | } 108 | }; 109 | z.scroll = function (t, l){window.scrollTo(l, t);}; 110 | z.timer=setInterval(function(){z.step();},13); 111 | }; -------------------------------------------------------------------------------- /inc/lang/ca.php: -------------------------------------------------------------------------------- 1 | 6 | * @author Xavi Pastó 7 | */ 8 | 9 | $lang['ldapab'] = 'La llibreta d\'adreces LDAP'; 10 | 11 | $lang['name'] = 'Cognoms'; 12 | $lang['givenname'] = 'Nom'; 13 | $lang['title'] = 'Títol'; 14 | $lang['organization'] = 'Companyia'; 15 | $lang['office'] = 'Oficina'; 16 | $lang['street'] = 'Adreça'; 17 | $lang['zip'] = 'Codi postal'; 18 | $lang['location'] = 'Ciutat'; 19 | $lang['state'] = 'Provincia'; 20 | $lang['phone'] = 'Telèfon'; 21 | $lang['switchboard'] = 'Switchboard'; 22 | $lang['fax'] = 'Fax'; 23 | $lang['mobile'] = 'Telefon Mòbil'; 24 | $lang['pager'] = 'Buscapersones'; 25 | $lang['homephone'] = 'Telèfon particular'; 26 | $lang['homestreet'] = 'Adreça particular'; 27 | $lang['photo'] = 'Fotografia'; 28 | $lang['url'] = 'Pàgina web'; 29 | $lang['note'] = 'Notes'; 30 | $lang['mail'] = 'Correu electrònic'; 31 | $lang['manager'] = 'Key Account'; 32 | 33 | $lang['anniversary'] = 'Aniversari'; 34 | $lang['marker'] = 'Tags'; 35 | $lang['tagcloud'] = 'Tots els tags usats, ordenats alfabeticament. Els tags més freqüents es mostren més grans.'; 36 | 37 | $lang['business'] = 'Feina'; 38 | $lang['private'] = 'Particular'; 39 | $lang['extended'] = 'Informació addicional'; 40 | $lang['communication'] = 'Comunicació'; 41 | 42 | $lang['delphoto'] = 'Esborrar la foto actual'; 43 | 44 | $lang['notloggedin'] = 'No esteu validats'; 45 | $lang['loggedinas'] = 'L\'usuari validat és'; 46 | $lang['login'] = 'Valideu-vos'; 47 | $lang['logout'] = 'Sortir'; 48 | $lang['edit'] = 'Editar'; 49 | $lang['show'] = 'Veure'; 50 | $lang['new'] = 'Nou'; 51 | $lang['delete'] = 'Esborrar'; 52 | $lang['copy'] = 'Copiar'; 53 | $lang['map'] = 'Mapa'; 54 | $lang['csvexport'] = 'CSV'; 55 | $lang['vcfexport'] = 'VCard'; 56 | $lang['vcfimport'] = 'Importar'; 57 | $lang['search'] = 'Buscar'; 58 | $lang['submit'] = 'Enviar'; 59 | $lang['help'] = 'Ajuda'; 60 | $lang['select'] = 'Seleccionar'; 61 | $lang['orgs'] = 'Empreses'; 62 | $lang['upload'] = 'Pujar'; 63 | 64 | $lang['publicbook'] = 'Llibreta d\'adreçes publica'; 65 | $lang['privatebook'] = 'Llibreta d\'adreçes privada'; 66 | 67 | $lang['username'] = 'Usuari'; 68 | $lang['password'] = 'Clau'; 69 | $lang['remember'] = 'Recorda\'m en aquest ordinador'; 70 | 71 | $lang['msg_login'] = 'Valideu-vos, si us plau!'; 72 | $lang['msg_loginfail'] = 'La validació ha fallat'; 73 | $lang['msg_reallydel'] = 'Realment voleu esborrar aquesta l\'entrada?'; 74 | $lang['msg_addto'] = 'Seleccioneu la llibreta d\'addreçes on afegir l\'entrada:'; 75 | $lang['msg_jpegonly'] = 'El sistema només accepta imatges JPEG'; 76 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 77 | $lang['msg_uploadvcf'] = 'Pugeu un fitxer VCard'; 78 | $lang['msg_tagsep'] = 'Separat per comes'; 79 | 80 | $lang['err_noentries'] = 'No hi ha entrades'; 81 | $lang['err_ldap'] = 'El servidor LDAP ha tornat els següents errors:'; 82 | 83 | $lang['openxchange'] = 'Xchange Information'; 84 | $lang['moreopenxchange'] = 'Xchange Information Cont\'d'; 85 | $lang['instantmessenger'] = 'Inst Msg'; 86 | $lang['birthday'] = 'Aniversari'; 87 | $lang['domain'] = 'Domini de correu'; 88 | $lang['country'] = 'País'; 89 | $lang['certificate'] = 'x.509 Cert'; 90 | $lang['timezone'] = 'Zona horària'; 91 | $lang['position'] = 'Posició'; 92 | $lang['department'] = 'Departament'; 93 | $lang['ipphone'] = 'Telèfon IP'; 94 | $lang['spouse'] = 'Spouse'; 95 | -------------------------------------------------------------------------------- /inc/lang/en.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'The LDAP address book'; 9 | 10 | $lang['name'] = 'Last Name'; 11 | $lang['givenname'] = 'First Name'; 12 | $lang['title'] = 'Title'; 13 | $lang['organization'] = 'Company'; 14 | $lang['office'] = 'Office'; 15 | $lang['street'] = 'Street No.'; 16 | $lang['zip'] = 'Postal Code'; 17 | $lang['location'] = 'City'; 18 | $lang['state'] = 'State'; 19 | $lang['phone'] = 'Phone'; 20 | $lang['switchboard'] = 'Switchboard'; 21 | $lang['fax'] = 'FAX'; 22 | $lang['mobile'] = 'Mobile'; 23 | $lang['pager'] = 'Pager'; 24 | $lang['homephone'] = 'Phone (priv.)'; 25 | $lang['homestreet'] = 'Address (priv.)'; 26 | $lang['photo'] = 'Picture'; 27 | $lang['url'] = 'Website'; 28 | $lang['note'] = 'Notes'; 29 | $lang['mail'] = 'E-Mail'; 30 | $lang['manager'] = 'Key Account'; 31 | 32 | $lang['anniversary'] = 'Anniversary'; 33 | $lang['marker'] = 'Tags'; 34 | $lang['tagcloud'] = 'All used tags, sorted alphabetically. Frequently used tags are shown bigger.'; 35 | 36 | $lang['business'] = 'Business'; 37 | $lang['private'] = 'Private'; 38 | $lang['extended'] = 'Additional Information'; 39 | $lang['communication'] = 'Communication'; 40 | 41 | $lang['delphoto'] = 'Delete existing photo'; 42 | 43 | $lang['notloggedin'] = 'Not logged in'; 44 | $lang['loggedinas'] = 'Logged in as'; 45 | $lang['login'] = 'Log in'; 46 | $lang['logout'] = 'Log out'; 47 | $lang['edit'] = 'Edit'; 48 | $lang['show'] = 'Show'; 49 | $lang['new'] = 'New'; 50 | $lang['delete'] = 'Delete'; 51 | $lang['copy'] = 'Copy'; 52 | $lang['map'] = 'Map'; 53 | $lang['csvexport'] = 'CSV'; 54 | $lang['vcfexport'] = 'VCard'; 55 | $lang['vcfimport'] = 'Import'; 56 | $lang['search'] = 'Search'; 57 | $lang['submit'] = 'Save'; 58 | $lang['help'] = 'Help'; 59 | $lang['select'] = 'Select'; 60 | $lang['orgs'] = 'Companies'; 61 | $lang['upload'] = 'Upload'; 62 | $lang['qrcode'] = 'QR Code'; 63 | 64 | $lang['publicbook'] = 'Public Addressbook'; 65 | $lang['privatebook'] = 'Private Addressbook'; 66 | 67 | $lang['username'] = 'Username'; 68 | $lang['password'] = 'Password'; 69 | $lang['remember'] = 'Stay logged in on this computer'; 70 | 71 | $lang['msg_login'] = 'Please log in!'; 72 | $lang['msg_loginfail'] = 'Log in failed!'; 73 | $lang['msg_reallydel'] = 'Really delete entry?'; 74 | $lang['msg_addto'] = 'Select address book to which the entry should be added:'; 75 | $lang['msg_jpegonly'] = 'JPEG only'; 76 | $lang['msg_dateformat'] = 'YYYY-MM-DD'; 77 | $lang['msg_uploadvcf'] = 'Upload VCard File'; 78 | $lang['msg_tagsep'] = 'Comma separated'; 79 | 80 | $lang['err_noentries'] = 'No entries'; 81 | $lang['err_ldap'] = 'The LDAP server returned the following errors'; 82 | $lang['err_wrongFileType'] = 'The file is no image.'; 83 | $lang['err_fileNotUploaded'] = 'The file cannot be uploaded, may its to huge?'; 84 | 85 | $lang['openxchange'] = 'Xchange Information'; 86 | $lang['moreopenxchange'] = 'Xchange Information Cont\'d'; 87 | $lang['instantmessenger'] = 'Inst Msg'; 88 | $lang['birthday'] = 'Birthday'; 89 | $lang['domain'] = 'Mail Domain'; 90 | $lang['country'] = 'Country'; 91 | $lang['certificate'] = 'x.509 Cert'; 92 | $lang['timezone'] = 'Time Zone'; 93 | $lang['position'] = 'Position'; 94 | $lang['department'] = 'Department'; 95 | $lang['ipphone'] = 'IP Phone'; 96 | $lang['spouse'] = 'Spouse'; 97 | 98 | $lang['lettertabs'] = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z'; 99 | -------------------------------------------------------------------------------- /inc/lang/de.php: -------------------------------------------------------------------------------- 1 | 6 | */ 7 | 8 | $lang['ldapab'] = 'Das LDAP Adressbuch'; 9 | 10 | $lang['name'] = 'Name'; 11 | $lang['givenname'] = 'Vorname'; 12 | $lang['title'] = 'Titel'; 13 | $lang['organization'] = 'Firma'; 14 | $lang['office'] = 'Abteilung'; 15 | $lang['street'] = 'Straße, Nr.'; 16 | $lang['zip'] = 'Postleitzahl'; 17 | $lang['location'] = 'Ort'; 18 | $lang['state'] = 'Bundesland'; 19 | $lang['phone'] = 'Telefon'; 20 | $lang['switchboard'] = 'Zentrale'; 21 | $lang['fax'] = 'FAX'; 22 | $lang['mobile'] = 'Handy'; 23 | $lang['pager'] = 'Pieper'; 24 | $lang['homephone'] = 'Telefon (priv.)'; 25 | $lang['homestreet'] = 'Adresse (priv.)'; 26 | $lang['photo'] = 'Foto'; 27 | $lang['url'] = 'Webseite'; 28 | $lang['note'] = 'Notizen'; 29 | $lang['mail'] = 'E-Mail'; 30 | $lang['manager'] = 'Key Account'; 31 | 32 | $lang['anniversary'] = 'Jubiläum'; 33 | $lang['marker'] = 'Tags'; 34 | $lang['tagcloud'] = 'Alle verwendeten Tags, alphabetisch sortiert. Häufig verwendete Tags werden größer dargestellt.'; 35 | 36 | $lang['business'] = 'Geschäftlich'; 37 | $lang['private'] = 'Privat'; 38 | $lang['extended'] = 'Zusätzliche Infos'; 39 | $lang['communication'] = 'Kommunikation'; 40 | 41 | $lang['delphoto'] = 'Vorhandenes Foto löschen'; 42 | 43 | $lang['notloggedin'] = 'Nicht angemeldet'; 44 | $lang['loggedinas'] = 'Angemeldet als'; 45 | $lang['login'] = 'Anmelden'; 46 | $lang['logout'] = 'Abmelden'; 47 | $lang['edit'] = 'Bearbeiten'; 48 | $lang['show'] = 'Anzeigen'; 49 | $lang['new'] = 'Neu'; 50 | $lang['delete'] = 'Löschen'; 51 | $lang['copy'] = 'Kopieren'; 52 | $lang['map'] = 'Karte'; 53 | $lang['csvexport'] = 'CSV'; 54 | $lang['vcfexport'] = 'VCard'; 55 | $lang['vcfimport'] = 'Import'; 56 | $lang['search'] = 'Suchen'; 57 | $lang['submit'] = 'Absenden'; 58 | $lang['help'] = 'Hilfe'; 59 | $lang['select'] = 'Auswählen'; 60 | $lang['orgs'] = 'Firmen'; 61 | $lang['upload'] = 'Hochladen'; 62 | 63 | $lang['publicbook'] = 'Öffentliches Adressbuch'; 64 | $lang['privatebook'] = 'Privates Adressbuch'; 65 | 66 | $lang['username'] = 'Benutzername'; 67 | $lang['password'] = 'Passwort'; 68 | $lang['remember'] = 'Auf diesem Computer angemeldet bleiben'; 69 | 70 | $lang['msg_login'] = 'Bitte melden sie sich an!'; 71 | $lang['msg_loginfail'] = 'Anmeldung fehlgeschlagen!'; 72 | $lang['msg_reallydel'] = 'Eintrag wirklich löschen?'; 73 | $lang['msg_addto'] = 'Zu welchem Adressbuch soll der Eintrag hinzugefügt werden?'; 74 | $lang['msg_jpegonly'] = 'Nur JPEG'; 75 | $lang['msg_dateformat'] = 'JJJJ-MM-TT'; 76 | $lang['msg_uploadvcf'] = 'Upload VCard File'; 77 | $lang['msg_tagsep'] = 'Durch Komma getrennt'; 78 | $lang['err_noentries'] = 'Keine Einträge'; 79 | $lang['err_ldap'] = 'Der LDAP Server lieferte folgende Fehlermeldungen'; 80 | $lang['err_wrongFileType'] = 'Die Datei ist kein bild.'; 81 | $lang['err_fileNotUploaded'] = 'Die Datei konnte nicht hochgeladen werden, ist sie vielleicht zu groß?'; 82 | 83 | $lang['openxchange'] = 'Xchange Information'; 84 | $lang['moreopenxchange'] = 'Xchange Information (Fort.)'; 85 | $lang['instantmessenger'] = 'IM'; 86 | $lang['birthday'] = 'Birthday'; 87 | $lang['domain'] = 'Mail Domain'; 88 | $lang['country'] = 'Land'; 89 | $lang['certificate'] = 'x.509 Cert'; 90 | $lang['timezone'] = 'Zeitzone'; 91 | $lang['position'] = 'Position'; 92 | $lang['department'] = 'Abteilung'; 93 | $lang['ipphone'] = 'IP Tel.'; 94 | $lang['spouse'] = 'Ehepartner'; 95 | 96 | $lang['lettertabs'] = 'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Ä Ö Ü'; 97 | 98 | -------------------------------------------------------------------------------- /inc/smarty/internals/core.write_cache_file.php: -------------------------------------------------------------------------------- 1 | _cache_info['timestamp'] = time(); 26 | if ($smarty->cache_lifetime > -1){ 27 | // expiration set 28 | $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; 29 | } else { 30 | // cache will never expire 31 | $smarty->_cache_info['expires'] = -1; 32 | } 33 | 34 | // collapse nocache.../nocache-tags 35 | if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) { 36 | // remove everything between every pair of outermost noache.../nocache-tags 37 | // and replace it by a single nocache-tag 38 | // this new nocache-tag will be replaced by dynamic contents in 39 | // smarty_core_process_compiled_includes() on a cache-read 40 | 41 | $match_count = count($match[0]); 42 | $results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE); 43 | 44 | $level = 0; 45 | $j = 0; 46 | for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) { 47 | if ($results[$i] == $match[0][$j]) { 48 | // nocache tag 49 | if ($match[1][$j]) { // closing tag 50 | $level--; 51 | unset($results[$i]); 52 | } else { // opening tag 53 | if ($level++ > 0) unset($results[$i]); 54 | } 55 | $j++; 56 | } elseif ($level > 0) { 57 | unset($results[$i]); 58 | } 59 | } 60 | $params['results'] = implode('', $results); 61 | } 62 | $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; 63 | 64 | // prepend the cache header info into cache file 65 | $_cache_info = serialize($smarty->_cache_info); 66 | $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results']; 67 | 68 | if (!empty($smarty->cache_handler_func)) { 69 | // use cache_handler function 70 | call_user_func_array($smarty->cache_handler_func, 71 | array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], $smarty->_cache_info['expires'])); 72 | } else { 73 | // use local cache file 74 | 75 | if(!@is_writable($smarty->cache_dir)) { 76 | // cache_dir not writable, see if it exists 77 | if(!@is_dir($smarty->cache_dir)) { 78 | $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); 79 | return false; 80 | } 81 | $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); 82 | return false; 83 | } 84 | 85 | $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); 86 | $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); 87 | $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); 88 | require_once(SMARTY_CORE_DIR . 'core.write_file.php'); 89 | smarty_core_write_file($_params, $smarty); 90 | return true; 91 | } 92 | } 93 | 94 | /* vim: set expandtab: */ 95 | 96 | ?> 97 | -------------------------------------------------------------------------------- /scripts/interface/ifxtransfer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Interface Elements for jQuery 3 | * FX - transfer 4 | * 5 | * http://interface.eyecon.ro 6 | * 7 | * Copyright (c) 2006 Stefan Petre 8 | * Dual licensed under the MIT (MIT-LICENSE.txt) 9 | * and GPL (GPL-LICENSE.txt) licenses. 10 | * 11 | * 12 | */ 13 | 14 | jQuery.transferHelper = null; 15 | /** 16 | * 17 | * @name TransferTo 18 | * @description Animates an new build element to simulate a transfer action from one element to other 19 | * @param Hash hash A hash of parameters 20 | * @option Mixed to DOMElement or element ID to transfer to 21 | * @option String className CSS class to apply to transfer element 22 | * @option String duration animation speed, integer for miliseconds, string ['slow' | 'normal' | 'fast'] 23 | * @option Function callback (optional) A function to be executed whenever the animation completes. 24 | * 25 | * @type jQuery 26 | * @cat Plugins/Interface 27 | * @author Stefan Petre 28 | */ 29 | jQuery.fn.TransferTo = function(o) 30 | { 31 | return this.queue('interfaceFX', function(){ 32 | new jQuery.fx.itransferTo(this, o); 33 | }); 34 | }; 35 | jQuery.fx.itransferTo = function(e, o) 36 | { 37 | 38 | if(jQuery.transferHelper == null) 39 | { 40 | jQuery('body', document).append('
'); 41 | jQuery.transferHelper = jQuery('#transferHelper'); 42 | } 43 | jQuery.transferHelper.css('display', 'block').css('position', 'absolute'); 44 | 45 | var z = this; 46 | z.el = jQuery(e); 47 | if(!o || !o.to) { 48 | return; 49 | } 50 | 51 | if (o.to.constructor == String && document.getElementById(o.to)) { 52 | o.to = document.getElementById(o.to); 53 | } else if ( !o.to.childNodes ) { 54 | return; 55 | } 56 | 57 | if (!o.duration) { 58 | o.duration = 500; 59 | } 60 | z.duration = o.duration; 61 | z.to = o.to; 62 | z.classname = o.className; 63 | z.complete = o.complete; 64 | if (z.classname) { 65 | jQuery.transferHelper.addClass(z.classname); 66 | } 67 | z.diffWidth = 0; 68 | z.diffHeight = 0; 69 | 70 | if(jQuery.boxModel) { 71 | z.diffWidth = (parseInt(jQuery.transferHelper.css('borderLeftWidth')) || 0 ) 72 | + (parseInt(jQuery.transferHelper.css('borderRightWidth')) || 0) 73 | + (parseInt(jQuery.transferHelper.css('paddingLeft')) || 0) 74 | + (parseInt(jQuery.transferHelper.css('paddingRight')) || 0); 75 | z.diffHeight = (parseInt(jQuery.transferHelper.css('borderTopWidth')) || 0 ) 76 | + (parseInt(jQuery.transferHelper.css('borderBottomWidth')) || 0) 77 | + (parseInt(jQuery.transferHelper.css('paddingTop')) || 0) 78 | + (parseInt(jQuery.transferHelper.css('paddingBottom')) || 0); 79 | } 80 | z.start = jQuery.extend( 81 | jQuery.iUtil.getPosition(z.el.get(0)), 82 | jQuery.iUtil.getSize(z.el.get(0)) 83 | ); 84 | z.end = jQuery.extend( 85 | jQuery.iUtil.getPosition(z.to), 86 | jQuery.iUtil.getSize(z.to) 87 | ); 88 | z.start.wb -= z.diffWidth; 89 | z.start.hb -= z.diffHeight; 90 | z.end.wb -= z.diffWidth; 91 | z.end.hb -= z.diffHeight; 92 | z.callback = o.complete; 93 | 94 | // Execute the transfer 95 | jQuery.transferHelper 96 | .css('width', z.start.wb + 'px') 97 | .css('height', z.start.hb + 'px') 98 | .css('top', z.start.y + 'px') 99 | .css('left', z.start.x + 'px') 100 | .animate( 101 | { 102 | top: z.end.y, 103 | left: z.end.x, 104 | width: z.end.wb, 105 | height: z.end.hb 106 | }, 107 | z.duration, 108 | function() 109 | { 110 | // Set correct classname 111 | if(z.classname) 112 | jQuery.transferHelper.removeClass(z.classname); 113 | jQuery.transferHelper.css('display', 'none'); 114 | 115 | // Callback 116 | if (z.complete && z.complete.constructor == Function) { 117 | z.complete.apply(z.el.get(0), [z.to]); 118 | } 119 | // Done 120 | jQuery.dequeue(z.el.get(0), 'interfaceFX'); 121 | } 122 | ); 123 | }; -------------------------------------------------------------------------------- /inc/smarty/internals/core.read_cache_file.php: -------------------------------------------------------------------------------- 1 | force_compile) { 26 | // force compile enabled, always regenerate 27 | return false; 28 | } 29 | 30 | if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { 31 | list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; 32 | return true; 33 | } 34 | 35 | if (!empty($smarty->cache_handler_func)) { 36 | // use cache_handler function 37 | call_user_func_array($smarty->cache_handler_func, 38 | array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); 39 | } else { 40 | // use local cache file 41 | $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); 42 | $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); 43 | $params['results'] = $smarty->_read_file($_cache_file); 44 | } 45 | 46 | if (empty($params['results'])) { 47 | // nothing to parse (error?), regenerate cache 48 | return false; 49 | } 50 | 51 | $_contents = $params['results']; 52 | $_info_start = strpos($_contents, "\n") + 1; 53 | $_info_len = (int)substr($_contents, 0, $_info_start - 1); 54 | $_cache_info = unserialize(substr($_contents, $_info_start, $_info_len)); 55 | $params['results'] = substr($_contents, $_info_start + $_info_len); 56 | 57 | if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ 58 | // caching by expiration time 59 | if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { 60 | // cache expired, regenerate 61 | return false; 62 | } 63 | } else { 64 | // caching by lifetime 65 | if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { 66 | // cache expired, regenerate 67 | return false; 68 | } 69 | } 70 | 71 | if ($smarty->compile_check) { 72 | $_params = array('get_source' => false, 'quiet'=>true); 73 | foreach (array_keys($_cache_info['template']) as $_template_dep) { 74 | $_params['resource_name'] = $_template_dep; 75 | if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { 76 | // template file has changed, regenerate cache 77 | return false; 78 | } 79 | } 80 | 81 | if (isset($_cache_info['config'])) { 82 | $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); 83 | foreach (array_keys($_cache_info['config']) as $_config_dep) { 84 | $_params['resource_name'] = $_config_dep; 85 | if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { 86 | // config file has changed, regenerate cache 87 | return false; 88 | } 89 | } 90 | } 91 | } 92 | 93 | $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); 94 | 95 | $smarty->_cache_info = $_cache_info; 96 | return true; 97 | } 98 | 99 | /* vim: set expandtab: */ 100 | 101 | ?> 102 | --------------------------------------------------------------------------------